Skip to content

Commit

Permalink
리팩토링 조금 더 함
Browse files Browse the repository at this point in the history
Vault 관련
  • Loading branch information
DY committed Dec 22, 2023
1 parent 5771134 commit 6989d29
Show file tree
Hide file tree
Showing 14 changed files with 129 additions and 105 deletions.
Binary file modified Content/Blueprints/Controller/BP_TownPlayerController.uasset
Binary file not shown.
Binary file modified Content/Blueprints/Etc/BP_Exit.uasset
Binary file not shown.
Binary file modified Content/Blueprints/GameModes/BP_TownGameMode.uasset
Binary file not shown.
Binary file modified Content/Blueprints/Props/BP_Vault.uasset
Binary file not shown.
Binary file modified Content/Maps/Town.umap
Binary file not shown.
4 changes: 2 additions & 2 deletions Source/WildWest/Character/Gunman.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ void AGunman::OpenVault()

if (HasAuthority())
{
TargetVault->OpenDoorDelegate.Broadcast();
TargetVault->OpenDoor();
WildWestGameInstance->AddVaultOpened(1);
WildWestGameInstance->ReplaceVaultList(TargetVault->GetActorLocation(), true);
}
Expand Down Expand Up @@ -285,7 +285,7 @@ void AGunman::ServerOpenVault_Implementation()
{
if (TargetVault)
{
TargetVault->OpenDoorDelegate.Broadcast();
TargetVault->OpenDoor();
UWildWestGameInstance* WildWestGameInstance = GetGameInstance<UWildWestGameInstance>();
if (WildWestGameInstance)
{
Expand Down
49 changes: 38 additions & 11 deletions Source/WildWest/Controller/TownPlayerController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

#include "TownPlayerController.h"
#include "WildWest/HUD/ReturnToMainMenu.h"
#include "Kismet/GameplayStatics.h"
#include "WildWest/GameInstance/WildWestGameInstance.h"
#include "WildWest/GameState/TownGameState.h"
#include "WildWest/Character/Gunman.h"
Expand All @@ -18,20 +17,48 @@
#include "WildWest/Input/InputConfigData.h"
#include "WildWest/WildWestTypes/ScreenIndex.h"

void ATownPlayerController::ClientRemovePlayer_Implementation()
void ATownPlayerController::ServerNotifyDisconnected_Implementation()
{
UGameplayStatics::RemovePlayer(this, true);
if (NotifyClass)
{
UUserWidget* Notify = CreateWidget(this, NotifyClass);
if (Notify)
{
Notify->AddToViewport();
}
}
if (ReturnToMainMenuClass)
{
if (ReturnToMainMenu == nullptr)
{
ReturnToMainMenu = CreateWidget<UReturnToMainMenu>(this, ReturnToMainMenuClass);
}
if (ReturnToMainMenu)
{
ReturnToMainMenu->MenuSetup();
}
}
}

void ATownPlayerController::ServerNotifyDisconnected_Implementation()
void ATownPlayerController::ClientCreateGunmanVictory_Implementation()
{
UWorld* World = GetWorld();
if (World)
if (GunmanVictoryClass)
{
ATownPlayerController* TownPlayerController = Cast<ATownPlayerController>(World->GetFirstPlayerController());
if (TownPlayerController)
UUserWidget* GunmanVictory = CreateWidget(this, GunmanVictoryClass);
if (GunmanVictory)
{
TownPlayerController->NotifyDelegate.Broadcast();
GunmanVictory->AddToViewport();
}
}
if (ReturnToMainMenuClass)
{
if (ReturnToMainMenu == nullptr)
{
ReturnToMainMenu = CreateWidget<UReturnToMainMenu>(this, ReturnToMainMenuClass);
}
if (ReturnToMainMenu)
{
ReturnToMainMenu->MenuSetup();
}
}
}
Expand Down Expand Up @@ -389,10 +416,10 @@ void ATownPlayerController::SetupInputComponent()

void ATownPlayerController::ShowReturnToMainMenu()
{
if (ReturnToMainMenuWidget == nullptr) return;
if (ReturnToMainMenuClass == nullptr) return;
if (ReturnToMainMenu == nullptr)
{
ReturnToMainMenu = CreateWidget<UReturnToMainMenu>(this, ReturnToMainMenuWidget);
ReturnToMainMenu = CreateWidget<UReturnToMainMenu>(this, ReturnToMainMenuClass);
}
if (ReturnToMainMenu)
{
Expand Down
37 changes: 20 additions & 17 deletions Source/WildWest/Controller/TownPlayerController.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,11 @@
#include "TownPlayerController.generated.h"

enum class EScreenIndex : uint8;

DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnNotifyDelegate);
class UInputMappingContext;
class UInputConfigData;
class ASheriffHUD;
class UReturnToMainMenu;
class ATownGameState;

/**
*
Expand All @@ -19,18 +22,12 @@ class WILDWEST_API ATownPlayerController : public APlayerController
GENERATED_BODY()

public:
UFUNCTION(Client, Reliable)
void ClientRemovePlayer();

UFUNCTION(Server, Reliable)
void ServerNotifyDisconnected();

/*UFUNCTION(Client, Reliable)
void ClientDestroySession();*/

UPROPERTY(BlueprintAssignable)
FOnNotifyDelegate NotifyDelegate;

UFUNCTION(Client, Reliable, BlueprintCallable)
void ClientCreateGunmanVictory();

void InitialPossess();

void SheriffHUDSetup(APawn* InPawn);
Expand All @@ -48,28 +45,34 @@ class WILDWEST_API ATownPlayerController : public APlayerController
void ShowReturnToMainMenu();

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Enhanced Input")
class UInputMappingContext* InputMapping;
TObjectPtr<UInputMappingContext> InputMapping;

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Enhanced Input")
class UInputConfigData* InputActions;
TObjectPtr<UInputConfigData> InputActions;

private:
UPROPERTY()
class ATownGameState* TownGameState;
TObjectPtr<ATownGameState> TownGameState;

EScreenIndex CurrentScreenIndex;

UPROPERTY(EditAnywhere, Category = HUD)
TSubclassOf<AHUD> SheriffHUDClass;

UPROPERTY()
class ASheriffHUD* SheriffHUD;
ASheriffHUD* SheriffHUD;

UPROPERTY(EditAnywhere, Category = HUD)
TSubclassOf<UUserWidget> ReturnToMainMenuWidget;
TSubclassOf<UUserWidget> ReturnToMainMenuClass;

UPROPERTY()
class UReturnToMainMenu* ReturnToMainMenu;
UReturnToMainMenu* ReturnToMainMenu;

UPROPERTY(EditAnywhere, Category = HUD)
TSubclassOf<UUserWidget> NotifyClass;

UPROPERTY(EditAnywhere, Category = HUD)
TSubclassOf<UUserWidget> GunmanVictoryClass;

bool bReturnToMainMenuOpen = false;

Expand Down
5 changes: 2 additions & 3 deletions Source/WildWest/GameInstance/WildWestGameInstance.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,8 @@ class WILDWEST_API UWildWestGameInstance : public UGameInstance

UPROPERTY(BlueprintReadOnly, Category = Character, meta = (AllowPrivateAccess = "true"))
ECharacterState ClientCharacterState;

UPROPERTY(BlueprintReadWrite, Category = "Flag", meta = (AllowPrivateAccess = "true"))

bool bIsGameStarted;

bool bLastChase;

UPROPERTY(BlueprintReadOnly, Category = "Transform", meta = (AllowPrivateAccess = "true"))
Expand All @@ -57,6 +55,7 @@ class WILDWEST_API UWildWestGameInstance : public UGameInstance
FORCEINLINE ECharacterState GetClientCharacterState() const { return ClientCharacterState; }
FORCEINLINE void SetServerCharacterState(ECharacterState NewState) { ServerCharacterState = NewState; }
FORCEINLINE void SetClientCharacterState(ECharacterState NewState) { ClientCharacterState = NewState; }
FORCEINLINE bool IsGameStarted() const { return bIsGameStarted; }
FORCEINLINE void StartGame(bool bIsStarted) { bIsGameStarted = bIsStarted; }
FORCEINLINE bool IsLastChase() const { return bLastChase; }
FORCEINLINE void ChaseLastly(bool bLast) { bLastChase = bLast; }
Expand Down
44 changes: 44 additions & 0 deletions Source/WildWest/GameMode/TownGameMode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "WildWest/Character/Gunman.h"
#include "WildWest/Character/Sheriff.h"
#include "WildWest/GameInstance/WildWestGameInstance.h"
#include "WildWest/Props/Vault.h"

void ATownGameMode::TravelToDuel()
{
Expand Down Expand Up @@ -91,3 +92,46 @@ void ATownGameMode::HandleStartingNewPlayer_Implementation(APlayerController* Ne
TownPlayerController->InitialPossess();
}
}

void ATownGameMode::BeginPlay()
{
Super::BeginPlay();

UWildWestGameInstance* WildWestGameInstance = GetGameInstance<UWildWestGameInstance>();
if (WildWestGameInstance == nullptr) return;

if (WildWestGameInstance->IsGameStarted())
{
for (auto VaultTransform : WildWestGameInstance->GetVaultTransformList())
{
AVault* Vault = GetWorld()->SpawnActor<AVault>(VaultClass, VaultTransform);
if (Vault)
{
TMap<FVector, bool> VaultList = WildWestGameInstance->GetVaultList();
Vault->SetbIsOpened(VaultList[VaultTransform.GetLocation()]);
if (VaultList[VaultTransform.GetLocation()])
{
Vault->OpenDoor();
}
}
}
}
else
{
TArray<AActor*> VaultCaseList;
UGameplayStatics::GetAllActorsOfClass(this, VaultCaseClass, VaultCaseList);
for (int32 Index = 0; Index < NumberOfVault; ++Index)
{
AActor* VaultCase = VaultCaseList[FMath::RandRange(0, VaultCaseList.Num())];
if (VaultCase)
{
FTransform VaultTransform = VaultCase->GetTransform();
GetWorld()->SpawnActor<AActor>(VaultClass, VaultTransform);
VaultCaseList.Remove(VaultCase);
WildWestGameInstance->GetVaultTransformList().Add(VaultTransform);
WildWestGameInstance->GetVaultList().Add(VaultTransform.GetLocation(), false);
WildWestGameInstance->StartGame(true);
}
}
}
}
20 changes: 18 additions & 2 deletions Source/WildWest/GameMode/TownGameMode.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
#include "GameFramework/GameMode.h"
#include "TownGameMode.generated.h"

class AGunman;
class ASheriff;
class AVault;

/**
*
*/
Expand All @@ -19,6 +23,9 @@ class WILDWEST_API ATownGameMode : public AGameMode
virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
virtual void HandleStartingNewPlayer_Implementation(APlayerController* NewPlayer) override;

protected:
virtual void BeginPlay() override;

private:
UPROPERTY(EditAnywhere)
TSubclassOf<AActor> GunmanStartClass;
Expand All @@ -27,12 +34,21 @@ class WILDWEST_API ATownGameMode : public AGameMode
TSubclassOf<AActor> GunmanClass;

UPROPERTY()
class AGunman* Gunman;
AGunman* Gunman;

UPROPERTY(EditAnywhere)
TSubclassOf<AActor> SheriffClass;

UPROPERTY()
TArray<class ASheriff*> SheriffList;
TArray<ASheriff*> SheriffList;

UPROPERTY(EditAnywhere)
TSubclassOf<AActor> VaultClass;

UPROPERTY(EditAnywhere)
TSubclassOf<AActor> VaultCaseClass;

UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Settings", meta = (AllowPrivateAccess = "true"))
int32 NumberOfVault;

};
47 changes: 1 addition & 46 deletions Source/WildWest/HUD/ReturnToMainMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,61 +111,16 @@ void UReturnToMainMenu::OnDestroySession(bool bWasSuccessful)
AGameModeBase* GameMode = World->GetAuthGameMode<AGameModeBase>();
if (GameMode)
{
/*PlayerController = PlayerController == nullptr ? World->GetFirstPlayerController() : PlayerController;
for (ATownPlayerController* TownPC : TActorRange<ATownPlayerController>(World))
{
if (TownPC && !TownPC->IsPrimaryPlayer())
{
if (TownPC->IsLocalPlayerController())
{
UGameplayStatics::RemovePlayer(TownPC, true);
}
else
{
TownPC->ClientRemovePlayer();
}
}
}
for (ADuelPlayerController* DuelPC : TActorRange<ADuelPlayerController>(World))
{
if (DuelPC && !DuelPC->IsPrimaryPlayer())
{
if (DuelPC->IsLocalPlayerController())
{
UGameplayStatics::RemovePlayer(DuelPC, true);
}
else
{
DuelPC->ClientRemovePlayer();
}
}
}*/

GameMode->ReturnToMainMenuHost();
}
else
{
PlayerController = PlayerController == nullptr ? World->GetFirstPlayerController() : PlayerController;
/*
for (APlayerController* PC : TActorRange<APlayerController>(World))
{
if (PC && !PC->IsPrimaryPlayer())
{
UGameplayStatics::RemovePlayer(PC, true);
}
}
ATownPlayerController* TownPlayerController = Cast<ATownPlayerController>(PlayerController);
if (TownPlayerController)
{
TownPlayerController->ServerNotifyDisconnected();
}*/

if (PlayerController)
{
PlayerController->ClientReturnToMainMenuWithTextReason(FText());
TownPlayerController->ClientReturnToMainMenuWithTextReason(FText());
}
}
}
Expand Down
14 changes: 0 additions & 14 deletions Source/WildWest/Props/Vault.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@


#include "Vault.h"
#include "WildWest/Character/Gunman.h"
#include "WildWest/GameInstance/WildWestGameInstance.h"

AVault::AVault()
{
Expand All @@ -17,15 +15,3 @@ AVault::AVault()
VaultDoorMesh->SetupAttachment(RootComponent);
VaultDoorMesh->SetIsReplicated(true);
}

void AVault::BeginPlay()
{
Super::BeginPlay();

}

void AVault::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);

}
Loading

0 comments on commit 6989d29

Please sign in to comment.