minigames hints & cheat menu
This commit is contained in:
parent
3523c179f0
commit
aa6dad4e05
BIN
Audio/Sounds/Signal_C.mp3
Normal file
BIN
Audio/Sounds/Signal_C.mp3
Normal file
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Characters/BP_Player.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Characters/BP_Player.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/AgeOfWar/BP_Minigame_AgeOfWar.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/AgeOfWar/BP_Minigame_AgeOfWar.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/AgeOfWar/UI_Minigame_AgeOfWar.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/AgeOfWar/UI_Minigame_AgeOfWar.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/CrossyRoad/BP_Minigame_CrossyRoadManager.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/CrossyRoad/BP_Minigame_CrossyRoadManager.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/RythmClick/BP_Minigame_RythmClickManager.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/RythmClick/BP_Minigame_RythmClickManager.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/RythmClick/UI_Minigame_RythmClickCanvas.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/RythmClick/UI_Minigame_RythmClickCanvas.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/SubwaySurf/BP_Minigame_SubwaySurfManager.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Blueprints/Minigames/SubwaySurf/BP_Minigame_SubwaySurfManager.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_AgeOfWar.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_AgeOfWar.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_CrossyRoad.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_CrossyRoad.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_Fishing.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_Fishing.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_Rythm.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_Rythm.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_SubwaySurf.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/Actors/Minigame/BP_Test_SubwaySurf.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/L_Test.umap
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/Levels/Test/L_Test.umap
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/UI/BP_MainWidgetManager.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/UI/BP_MainWidgetManager.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/Interactables/UI_InteractableHint.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/Interactables/UI_InteractableHint.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/Overlays/UI_ControlsHint.uasset
(Stored with Git LFS)
Normal file
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/Overlays/UI_ControlsHint.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/Overlays/UI_DevelopBuildWarning.uasset
(Stored with Git LFS)
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/Overlays/UI_DevelopBuildWarning.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CheatMenu.uasset
(Stored with Git LFS)
Normal file
BIN
UnrealProject/Lost_Edge/Content/UI/Blueprints/UI_CheatMenu.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -13,12 +13,12 @@ TMap<UClass*, FAgeOfWarUnitStats> AAgeOfWarManager::unitStats = {};
|
|||||||
|
|
||||||
const FAgeOfWarUnitStats& AAgeOfWarManager::UnitGetStats(TSubclassOf<AAgeOfWarUnit> unitClass)
|
const FAgeOfWarUnitStats& AAgeOfWarManager::UnitGetStats(TSubclassOf<AAgeOfWarUnit> unitClass)
|
||||||
{
|
{
|
||||||
check(unitStats.Contains(*unitClass));
|
//check(unitStats.Contains(*unitClass));
|
||||||
//if(!unitStats.Contains(*unitClass))
|
if(!unitStats.Contains(*unitClass))
|
||||||
//{
|
{
|
||||||
// static FAgeOfWarUnitStats empty;
|
static FAgeOfWarUnitStats empty;
|
||||||
// return empty;
|
return empty;
|
||||||
//}
|
}
|
||||||
|
|
||||||
return unitStats[unitClass];
|
return unitStats[unitClass];
|
||||||
}
|
}
|
||||||
@ -31,16 +31,12 @@ AAgeOfWarManager::AAgeOfWarManager()
|
|||||||
camera->SetupAttachment(root);
|
camera->SetupAttachment(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AAgeOfWarManager::Start(APlayerBase* playerPawn, FMinigameEndCallback delegate)
|
void AAgeOfWarManager::OnStart_Internal()
|
||||||
{
|
{
|
||||||
if(!playerPawn)
|
|
||||||
return;
|
|
||||||
|
|
||||||
AMinigame::Start(playerPawn, delegate);
|
|
||||||
|
|
||||||
player->LockPlayer(FPlayerLock::All());
|
player->LockPlayer(FPlayerLock::All());
|
||||||
player->SwitchToView(this);
|
player->SwitchToView(this);
|
||||||
|
|
||||||
|
InitUI();
|
||||||
FillUnitStats();
|
FillUnitStats();
|
||||||
TArray<UChildActorComponent*> units;
|
TArray<UChildActorComponent*> units;
|
||||||
GetComponents<UChildActorComponent>(units);
|
GetComponents<UChildActorComponent>(units);
|
||||||
@ -54,7 +50,7 @@ void AAgeOfWarManager::Start(APlayerBase* playerPawn, FMinigameEndCallback deleg
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AAgeOfWarManager::End()
|
void AAgeOfWarManager::OnEnd_Internal()
|
||||||
{
|
{
|
||||||
for(auto& unit : spawnedUnits)
|
for(auto& unit : spawnedUnits)
|
||||||
unit->Destroy();
|
unit->Destroy();
|
||||||
@ -64,8 +60,6 @@ void AAgeOfWarManager::End()
|
|||||||
|
|
||||||
player->ReturnPlayerView();
|
player->ReturnPlayerView();
|
||||||
player->UnlockPlayer(FPlayerLock::All());
|
player->UnlockPlayer(FPlayerLock::All());
|
||||||
|
|
||||||
AMinigame::End();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AAgeOfWarManager::UnitKill(AAgeOfWarUnit* unit)
|
void AAgeOfWarManager::UnitKill(AAgeOfWarUnit* unit)
|
||||||
|
@ -16,14 +16,16 @@ public:
|
|||||||
|
|
||||||
AAgeOfWarManager();
|
AAgeOfWarManager();
|
||||||
|
|
||||||
virtual void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate) override;
|
|
||||||
virtual void End() override;
|
|
||||||
|
|
||||||
void UnitKill(class AAgeOfWarUnit* unit);
|
void UnitKill(class AAgeOfWarUnit* unit);
|
||||||
UFUNCTION(BlueprintImplementableEvent)
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
void OnUnitKill(class AAgeOfWarUnit* unit);
|
void OnUnitKill(class AAgeOfWarUnit* unit);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void OnStart_Internal() override;
|
||||||
|
virtual void OnEnd_Internal() override;
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
|
void InitUI();
|
||||||
UFUNCTION(BlueprintImplementableEvent)
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
void FillUnitStats();
|
void FillUnitStats();
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
|
@ -32,13 +32,8 @@ ACrossyRoadManager::ACrossyRoadManager()
|
|||||||
mannequin->SetupAttachment(root);
|
mannequin->SetupAttachment(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ACrossyRoadManager::Start(APlayerBase* playerPawn, FMinigameEndCallback delegate)
|
void ACrossyRoadManager::OnStart_Internal()
|
||||||
{
|
{
|
||||||
if(!playerPawn)
|
|
||||||
return;
|
|
||||||
|
|
||||||
AMinigame::Start(playerPawn, delegate);
|
|
||||||
|
|
||||||
player->LockPlayer(FPlayerLock::All());
|
player->LockPlayer(FPlayerLock::All());
|
||||||
player->SwitchToView(this);
|
player->SwitchToView(this);
|
||||||
|
|
||||||
@ -65,7 +60,7 @@ void ACrossyRoadManager::Start(APlayerBase* playerPawn, FMinigameEndCallback del
|
|||||||
PrimaryActorTick.SetTickFunctionEnable(true);
|
PrimaryActorTick.SetTickFunctionEnable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ACrossyRoadManager::End()
|
void ACrossyRoadManager::OnEnd_Internal()
|
||||||
{
|
{
|
||||||
PrimaryActorTick.SetTickFunctionEnable(false);
|
PrimaryActorTick.SetTickFunctionEnable(false);
|
||||||
|
|
||||||
@ -74,8 +69,6 @@ void ACrossyRoadManager::End()
|
|||||||
|
|
||||||
player->UnlockPlayer(FPlayerLock::All());
|
player->UnlockPlayer(FPlayerLock::All());
|
||||||
player->ReturnPlayerView();
|
player->ReturnPlayerView();
|
||||||
|
|
||||||
AMinigame::End();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ACrossyRoadManager::Hit()
|
void ACrossyRoadManager::Hit()
|
||||||
|
@ -14,9 +14,6 @@ class ACrossyRoadManager : public AMinigame
|
|||||||
public:
|
public:
|
||||||
ACrossyRoadManager();
|
ACrossyRoadManager();
|
||||||
|
|
||||||
virtual void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate) override;
|
|
||||||
virtual void End() override;
|
|
||||||
|
|
||||||
void Hit();
|
void Hit();
|
||||||
void Finish();
|
void Finish();
|
||||||
|
|
||||||
@ -29,6 +26,9 @@ protected:
|
|||||||
float speed;
|
float speed;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
virtual void OnStart_Internal() override;
|
||||||
|
virtual void OnEnd_Internal() override;
|
||||||
|
|
||||||
virtual void PostInitializeComponents() override;
|
virtual void PostInitializeComponents() override;
|
||||||
virtual void Tick(float deltaTime) override;
|
virtual void Tick(float deltaTime) override;
|
||||||
|
|
||||||
|
@ -15,13 +15,8 @@ AFishingManager::AFishingManager()
|
|||||||
context = asset.Object;
|
context = asset.Object;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AFishingManager::Start(APlayerBase* playerPawn, FMinigameEndCallback delegate)
|
void AFishingManager::OnStart_Internal()
|
||||||
{
|
{
|
||||||
if(!playerPawn)
|
|
||||||
return;
|
|
||||||
|
|
||||||
AMinigame::Start(playerPawn, delegate);
|
|
||||||
|
|
||||||
player->LockPlayer(FPlayerLock::All());
|
player->LockPlayer(FPlayerLock::All());
|
||||||
|
|
||||||
auto input = ACustomPlayerController::GetInput();
|
auto input = ACustomPlayerController::GetInput();
|
||||||
@ -30,13 +25,11 @@ void AFishingManager::Start(APlayerBase* playerPawn, FMinigameEndCallback delega
|
|||||||
handler2 = input->BindAction(mapping.Action, ETriggerEvent::Completed, this, &AFishingManager::OnInputUnhold).GetHandle();
|
handler2 = input->BindAction(mapping.Action, ETriggerEvent::Completed, this, &AFishingManager::OnInputUnhold).GetHandle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AFishingManager::End()
|
void AFishingManager::OnEnd_Internal()
|
||||||
{
|
{
|
||||||
auto input = ACustomPlayerController::GetInput();
|
auto input = ACustomPlayerController::GetInput();
|
||||||
input->RemoveBindingByHandle(handler1);
|
input->RemoveBindingByHandle(handler1);
|
||||||
input->RemoveBindingByHandle(handler2);
|
input->RemoveBindingByHandle(handler2);
|
||||||
|
|
||||||
player->UnlockPlayer(FPlayerLock::All());
|
player->UnlockPlayer(FPlayerLock::All());
|
||||||
|
|
||||||
AMinigame::End();
|
|
||||||
}
|
}
|
||||||
|
@ -35,9 +35,6 @@ class AFishingManager : public AMinigame
|
|||||||
public:
|
public:
|
||||||
AFishingManager();
|
AFishingManager();
|
||||||
|
|
||||||
virtual void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate) override;
|
|
||||||
virtual void End() override;
|
|
||||||
|
|
||||||
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
|
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
|
||||||
void CatchSucceed(int32 price);
|
void CatchSucceed(int32 price);
|
||||||
|
|
||||||
@ -45,6 +42,9 @@ public:
|
|||||||
void CatchFailed();
|
void CatchFailed();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void OnStart_Internal() override;
|
||||||
|
virtual void OnEnd_Internal() override;
|
||||||
|
|
||||||
UFUNCTION(BlueprintImplementableEvent)
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
void OnInputHold();
|
void OnInputHold();
|
||||||
UFUNCTION(BlueprintImplementableEvent)
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
|
@ -7,27 +7,52 @@
|
|||||||
#include "CustomPlayerController.h"
|
#include "CustomPlayerController.h"
|
||||||
#include "PlayerBase.h"
|
#include "PlayerBase.h"
|
||||||
|
|
||||||
|
AMinigame* AMinigame::instance = nullptr;
|
||||||
|
|
||||||
|
AMinigame* AMinigame::GetActiveInstance()
|
||||||
|
{
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
AMinigame::AMinigame()
|
AMinigame::AMinigame()
|
||||||
{
|
{
|
||||||
PrimaryActorTick.bStartWithTickEnabled = false;
|
PrimaryActorTick.bStartWithTickEnabled = false;
|
||||||
PrimaryActorTick.bCanEverTick = true;
|
PrimaryActorTick.bCanEverTick = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AMinigame::End()
|
|
||||||
{
|
|
||||||
if(callback.IsBound())
|
|
||||||
callback.Execute(result, score);
|
|
||||||
|
|
||||||
OnEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
void AMinigame::Start(APlayerBase* playerPawn, FMinigameEndCallback delegate)
|
void AMinigame::Start(APlayerBase* playerPawn, FMinigameEndCallback delegate)
|
||||||
{
|
{
|
||||||
|
if(instance)
|
||||||
|
return;
|
||||||
|
instance = this;
|
||||||
|
|
||||||
player = playerPawn;
|
player = playerPawn;
|
||||||
callback = delegate;
|
callback = delegate;
|
||||||
|
|
||||||
if(context.IsValid())
|
if(context.IsValid())
|
||||||
ACustomPlayerController::AppendInputContext(context);
|
ACustomPlayerController::AppendInputContext(context);
|
||||||
|
|
||||||
|
OnStart_Internal();
|
||||||
OnStart();
|
OnStart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AMinigame::End()
|
||||||
|
{
|
||||||
|
if(instance != this)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ended = true;
|
||||||
|
if(callback.IsBound())
|
||||||
|
callback.Execute(result, score);
|
||||||
|
|
||||||
|
OnEnd_Internal();
|
||||||
|
OnEnd();
|
||||||
|
|
||||||
|
instance = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AMinigame::Restart()
|
||||||
|
{
|
||||||
|
OnRestart_Internal();
|
||||||
|
OnRestart();
|
||||||
|
}
|
||||||
|
@ -18,9 +18,10 @@ DECLARE_DYNAMIC_DELEGATE_TwoParams(FMinigameEndCallback, EMinigameResult, result
|
|||||||
/**
|
/**
|
||||||
* Interface for all minigame classes.
|
* Interface for all minigame classes.
|
||||||
* Any minigame is started/ended/restarted by executing Start()/End()/Restart() on specific instance.
|
* Any minigame is started/ended/restarted by executing Start()/End()/Restart() on specific instance.
|
||||||
|
* Only one minigame can be active in the same time to avoid control collisions.
|
||||||
* Each call is after broadcasted into a blueprint event also.
|
* Each call is after broadcasted into a blueprint event also.
|
||||||
* On start the caller can pass a OnEndCallback delegate to receive result and score on a minigame end.
|
* On start the caller can pass a OnEndCallback delegate to receive result and score on a minigame end.
|
||||||
* Each minigame can have its own contextInput
|
* Each minigame can have its own contextInput.
|
||||||
*/
|
*/
|
||||||
UCLASS(Abstract, Blueprintable, BlueprintType, MinimalAPI)
|
UCLASS(Abstract, Blueprintable, BlueprintType, MinimalAPI)
|
||||||
class AMinigame : public AActor
|
class AMinigame : public AActor
|
||||||
@ -28,27 +29,36 @@ class AMinigame : public AActor
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
UFUNCTION(BlueprintPure, meta = (DisplayName = "GetActiveMinigame"), Category = "Minigame")
|
||||||
|
static AMinigame* GetActiveInstance();
|
||||||
|
|
||||||
AMinigame();
|
AMinigame();
|
||||||
|
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
virtual void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate);
|
void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate);
|
||||||
UFUNCTION(BlueprintImplementableEvent)
|
|
||||||
void OnStart();
|
|
||||||
|
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
virtual void End();
|
void End();
|
||||||
UFUNCTION(BlueprintImplementableEvent)
|
|
||||||
void OnEnd();
|
|
||||||
|
|
||||||
UFUNCTION(BlueprintCallable)
|
UFUNCTION(BlueprintCallable)
|
||||||
virtual void Restart() {}
|
void Restart();
|
||||||
UFUNCTION(BlueprintImplementableEvent)
|
|
||||||
void OnRestart();
|
|
||||||
|
|
||||||
UFUNCTION(BlueprintPure)
|
UFUNCTION(BlueprintPure)
|
||||||
TSoftObjectPtr<class UInputMappingContext> GetInputMappings() { return context; }
|
TSoftObjectPtr<class UInputMappingContext> GetInputMappings() { return context; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void OnStart_Internal() {}
|
||||||
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
|
void OnStart();
|
||||||
|
|
||||||
|
virtual void OnEnd_Internal() {}
|
||||||
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
|
void OnEnd();
|
||||||
|
|
||||||
|
virtual void OnRestart_Internal() {}
|
||||||
|
UFUNCTION(BlueprintImplementableEvent)
|
||||||
|
void OnRestart();
|
||||||
|
|
||||||
FMinigameEndCallback callback;
|
FMinigameEndCallback callback;
|
||||||
class APlayerBase* player;
|
class APlayerBase* player;
|
||||||
|
|
||||||
@ -63,5 +73,9 @@ protected:
|
|||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
||||||
TSoftObjectPtr<class UInputMappingContext> context = nullptr;
|
TSoftObjectPtr<class UInputMappingContext> context = nullptr;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static AMinigame* instance; // active minigame
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -8,19 +8,12 @@
|
|||||||
ARythmClickManager::ARythmClickManager()
|
ARythmClickManager::ARythmClickManager()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void ARythmClickManager::Start(APlayerBase* playerPawn, FMinigameEndCallback delegate)
|
void ARythmClickManager::OnStart_Internal()
|
||||||
{
|
{
|
||||||
if(!playerPawn)
|
|
||||||
return;
|
|
||||||
|
|
||||||
AMinigame::Start(playerPawn, delegate);
|
|
||||||
|
|
||||||
player->LockPlayer(FPlayerLock::All());
|
player->LockPlayer(FPlayerLock::All());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ARythmClickManager::End()
|
void ARythmClickManager::OnEnd_Internal()
|
||||||
{
|
{
|
||||||
player->UnlockPlayer(FPlayerLock::All());
|
player->UnlockPlayer(FPlayerLock::All());
|
||||||
|
|
||||||
AMinigame::End();
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ class ARythmClickManager : public AMinigame
|
|||||||
public:
|
public:
|
||||||
ARythmClickManager();
|
ARythmClickManager();
|
||||||
|
|
||||||
virtual void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate) override;
|
protected:
|
||||||
virtual void End() override;
|
virtual void OnStart_Internal() override;
|
||||||
|
virtual void OnEnd_Internal() override;
|
||||||
};
|
};
|
||||||
|
@ -32,13 +32,8 @@ ASubwaySurfManager::ASubwaySurfManager()
|
|||||||
mannequin->SetupAttachment(root);
|
mannequin->SetupAttachment(root);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ASubwaySurfManager::Start(APlayerBase* playerPawn, FMinigameEndCallback delegate)
|
void ASubwaySurfManager::OnStart_Internal()
|
||||||
{
|
{
|
||||||
if(!playerPawn)
|
|
||||||
return;
|
|
||||||
|
|
||||||
AMinigame::Start(playerPawn, delegate);
|
|
||||||
|
|
||||||
player->LockPlayer(FPlayerLock::All());
|
player->LockPlayer(FPlayerLock::All());
|
||||||
player->SwitchToView(this);
|
player->SwitchToView(this);
|
||||||
|
|
||||||
@ -61,7 +56,7 @@ void ASubwaySurfManager::Start(APlayerBase* playerPawn, FMinigameEndCallback del
|
|||||||
PrimaryActorTick.SetTickFunctionEnable(true);
|
PrimaryActorTick.SetTickFunctionEnable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ASubwaySurfManager::End()
|
void ASubwaySurfManager::OnEnd_Internal()
|
||||||
{
|
{
|
||||||
PrimaryActorTick.SetTickFunctionEnable(false);
|
PrimaryActorTick.SetTickFunctionEnable(false);
|
||||||
|
|
||||||
@ -70,8 +65,6 @@ void ASubwaySurfManager::End()
|
|||||||
|
|
||||||
player->UnlockPlayer(FPlayerLock::All());
|
player->UnlockPlayer(FPlayerLock::All());
|
||||||
player->ReturnPlayerView();
|
player->ReturnPlayerView();
|
||||||
|
|
||||||
AMinigame::End();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ASubwaySurfManager::Hit()
|
void ASubwaySurfManager::Hit()
|
||||||
|
@ -21,13 +21,13 @@ class ASubwaySurfManager : public AMinigame
|
|||||||
public:
|
public:
|
||||||
ASubwaySurfManager();
|
ASubwaySurfManager();
|
||||||
|
|
||||||
virtual void Start(class APlayerBase* playerPawn, FMinigameEndCallback delegate) override;
|
|
||||||
virtual void End() override;
|
|
||||||
|
|
||||||
void Hit();
|
void Hit();
|
||||||
void Finish();
|
void Finish();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void OnStart_Internal() override;
|
||||||
|
virtual void OnEnd_Internal() override;
|
||||||
|
|
||||||
virtual void PostInitializeComponents() override;
|
virtual void PostInitializeComponents() override;
|
||||||
virtual void Tick(float deltaTime) override;
|
virtual void Tick(float deltaTime) override;
|
||||||
|
|
||||||
|
@ -151,10 +151,25 @@ void UWidgetsManager::UpdateWidgetsOwner()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void UWidgetsManager::AddOverlayWidget(UUserWidget* widget)
|
||||||
|
{
|
||||||
|
overlayWidgetsInstances.Add(widget);
|
||||||
|
widget->AddToViewport();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UWidgetsManager::RemoveOverlayWidget(UUserWidget* widget)
|
||||||
|
{
|
||||||
|
overlayWidgetsInstances.Remove(widget);
|
||||||
|
widget->RemoveFromViewport();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void UWidgetsManager::ShowMainMenu(bool pause)
|
void UWidgetsManager::ShowMainMenu(bool pause)
|
||||||
{
|
{
|
||||||
mainMenuWidget->Show(pause);
|
mainMenuWidget->Show(pause);
|
||||||
journalWidget->Hide();
|
HideJournal();
|
||||||
|
HideCheatMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UWidgetsManager::HideMainMenu()
|
void UWidgetsManager::HideMainMenu()
|
||||||
@ -164,6 +179,35 @@ void UWidgetsManager::HideMainMenu()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void UWidgetsManager::SwitchCheatMenu()
|
||||||
|
{
|
||||||
|
if(cheatMenuWidget)
|
||||||
|
HideCheatMenu();
|
||||||
|
else
|
||||||
|
ShowCheatMenu();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UWidgetsManager::ShowCheatMenu()
|
||||||
|
{
|
||||||
|
if(cheatMenuWidget || mainMenuWidget->Visibility == ESlateVisibility::Visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(auto PC = UGameplayStatics::GetPlayerController(GetWorld(), 0))
|
||||||
|
cheatMenuWidget = CreateWidget<UUserWidget>(PC, cheatMenuWidgetClass);
|
||||||
|
cheatMenuWidget->AddToViewport(100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UWidgetsManager::HideCheatMenu()
|
||||||
|
{
|
||||||
|
if(!cheatMenuWidget)
|
||||||
|
return;
|
||||||
|
|
||||||
|
cheatMenuWidget->RemoveFromParent();
|
||||||
|
cheatMenuWidget = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void UWidgetsManager::ShowFpsCount()
|
void UWidgetsManager::ShowFpsCount()
|
||||||
{
|
{
|
||||||
if(fpsCountWidget)
|
if(fpsCountWidget)
|
||||||
|
@ -27,9 +27,21 @@ public:
|
|||||||
void HideWidgets();
|
void HideWidgets();
|
||||||
void UpdateWidgetsOwner();
|
void UpdateWidgetsOwner();
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category = WidgetsManager)
|
||||||
|
void AddOverlayWidget(class UUserWidget* widget);
|
||||||
|
UFUNCTION(BlueprintCallable, Category = WidgetsManager)
|
||||||
|
void RemoveOverlayWidget(class UUserWidget* widget);
|
||||||
|
|
||||||
void ShowMainMenu(bool pause = true);
|
void ShowMainMenu(bool pause = true);
|
||||||
void HideMainMenu();
|
void HideMainMenu();
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable, Category = WidgetsManager)
|
||||||
|
void SwitchCheatMenu();
|
||||||
|
UFUNCTION(BlueprintCallable, Category = WidgetsManager)
|
||||||
|
void ShowCheatMenu();
|
||||||
|
UFUNCTION(BlueprintCallable, Category = WidgetsManager)
|
||||||
|
void HideCheatMenu();
|
||||||
|
|
||||||
void ShowFpsCount();
|
void ShowFpsCount();
|
||||||
void HideFpsCount();
|
void HideFpsCount();
|
||||||
|
|
||||||
@ -69,12 +81,16 @@ protected:
|
|||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
TSet<TSubclassOf<class UUserWidget>> overlayWidgets; // hidden in pause, cutscene
|
TSet<TSubclassOf<class UUserWidget>> overlayWidgets; // hidden in pause, cutscene
|
||||||
TArray<class UUserWidget*> overlayWidgetsInstances;
|
TSet<class UUserWidget*> overlayWidgetsInstances;
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
TSubclassOf<class UMainMenuWidget> mainMenuWidgetClass;
|
TSubclassOf<class UMainMenuWidget> mainMenuWidgetClass;
|
||||||
class UMainMenuWidget* mainMenuWidget = nullptr;
|
class UMainMenuWidget* mainMenuWidget = nullptr;
|
||||||
|
|
||||||
|
UPROPERTY(EditDefaultsOnly)
|
||||||
|
TSubclassOf<class UUserWidget> cheatMenuWidgetClass;
|
||||||
|
class UUserWidget* cheatMenuWidget = nullptr;
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
TSubclassOf<class UUserWidget> fpsCountWidgetClass;
|
TSubclassOf<class UUserWidget> fpsCountWidgetClass;
|
||||||
class UUserWidget* fpsCountWidget = nullptr;
|
class UUserWidget* fpsCountWidget = nullptr;
|
||||||
|
Loading…
Reference in New Issue
Block a user