Fix local player joining system
This commit is contained in:
parent
707804bf54
commit
bde7b3bfd7
@ -7,3 +7,5 @@ bReplaceBlueprintWithClass= true
|
|||||||
bDontLoadBlueprintOutsideEditor= true
|
bDontLoadBlueprintOutsideEditor= true
|
||||||
bBlueprintIsNotBlueprintType= true
|
bBlueprintIsNotBlueprintType= true
|
||||||
|
|
||||||
|
[/Script/AdvancedPreviewScene.SharedProfiles]
|
||||||
|
|
||||||
|
BIN
GravityStomp/Content/Characters/BP_GSCharacter.uasset
(Stored with Git LFS)
BIN
GravityStomp/Content/Characters/BP_GSCharacter.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Blue_HeadLegs.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Blue_HeadLegs.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Blue_Torso.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Blue_Torso.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Green_HeadLegs.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Green_HeadLegs.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Green_Torso.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Green_Torso.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Red_HeadLegs.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Red_HeadLegs.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Red_Torso.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Red_Torso.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Yellow_HeadLegs.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Yellow_HeadLegs.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Yellow_Torso.uasset
(Stored with Git LFS)
Normal file
BIN
GravityStomp/Content/Characters/Mannequins/Materials/Instances/Manny/MI_Manny_Yellow_Torso.uasset
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
GravityStomp/Content/Core/BP_GSDefaultGameMode.uasset
(Stored with Git LFS)
BIN
GravityStomp/Content/Core/BP_GSDefaultGameMode.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
GravityStomp/Content/Input/IMC_Default.uasset
(Stored with Git LFS)
BIN
GravityStomp/Content/Input/IMC_Default.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
GravityStomp/Content/Maps/Debug/Test.umap
(Stored with Git LFS)
BIN
GravityStomp/Content/Maps/Debug/Test.umap
(Stored with Git LFS)
Binary file not shown.
BIN
GravityStomp/Content/UI/MainMenu/Blueprints/BP_MainMenuGameMode.uasset
(Stored with Git LFS)
BIN
GravityStomp/Content/UI/MainMenu/Blueprints/BP_MainMenuGameMode.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
GravityStomp/Content/UI/MainMenu/Widgets/WBP_MainMenu.uasset
(Stored with Git LFS)
BIN
GravityStomp/Content/UI/MainMenu/Widgets/WBP_MainMenu.uasset
(Stored with Git LFS)
Binary file not shown.
BIN
GravityStomp/Content/UI/MainMenu/Widgets/WBP_PlayerLobby.uasset
(Stored with Git LFS)
BIN
GravityStomp/Content/UI/MainMenu/Widgets/WBP_PlayerLobby.uasset
(Stored with Git LFS)
Binary file not shown.
@ -10,12 +10,16 @@
|
|||||||
#include "EnhancedInputComponent.h"
|
#include "EnhancedInputComponent.h"
|
||||||
#include "EnhancedInputSubsystems.h"
|
#include "EnhancedInputSubsystems.h"
|
||||||
#include "GSCharacterMovementComponent.h"
|
#include "GSCharacterMovementComponent.h"
|
||||||
|
#include "GameFramework/PlayerState.h"
|
||||||
#include "Kismet/KismetMathLibrary.h"
|
#include "Kismet/KismetMathLibrary.h"
|
||||||
|
#include "Player/GSPlayerState.h"
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// AGravityStompCharacter
|
// AGravityStompCharacter
|
||||||
|
|
||||||
|
class AGSPlayerState;
|
||||||
|
|
||||||
AGSCharacter::AGSCharacter(const FObjectInitializer& ObjectInitializer)
|
AGSCharacter::AGSCharacter(const FObjectInitializer& ObjectInitializer)
|
||||||
: Super(ObjectInitializer.SetDefaultSubobjectClass<UGSCharacterMovementComponent>(ACharacter::CharacterMovementComponentName))
|
: Super(ObjectInitializer.SetDefaultSubobjectClass<UGSCharacterMovementComponent>(ACharacter::CharacterMovementComponentName))
|
||||||
{
|
{
|
||||||
@ -46,6 +50,16 @@ AGSCharacter::AGSCharacter(const FObjectInitializer& ObjectInitializer)
|
|||||||
|
|
||||||
void AGSCharacter::ChangeTeamColor(bool bIsPlayerFriendly)
|
void AGSCharacter::ChangeTeamColor(bool bIsPlayerFriendly)
|
||||||
{
|
{
|
||||||
|
int32 TeamNum = GetPlayerState<AGSPlayerState>()->GetTeamNum();
|
||||||
|
|
||||||
|
// invalid team num
|
||||||
|
if(TeamNum < 0 || TeamNum >= PlayerMaterials.Num())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetMesh()->SetMaterial(0, PlayerMaterials[TeamNum].TorsoMaterial);
|
||||||
|
GetMesh()->SetMaterial(1, PlayerMaterials[TeamNum].HeadLegsMaterial);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -132,3 +146,8 @@ void AGSCharacter::PawnClientRestart()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AGSCharacter::PossessedBy(AController* NewController)
|
||||||
|
{
|
||||||
|
Super::PossessedBy(NewController);
|
||||||
|
}
|
||||||
|
@ -7,6 +7,17 @@
|
|||||||
#include "InputActionValue.h"
|
#include "InputActionValue.h"
|
||||||
#include "GSCharacter.generated.h"
|
#include "GSCharacter.generated.h"
|
||||||
|
|
||||||
|
USTRUCT(BlueprintType)
|
||||||
|
struct FPlayerMaterial
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
||||||
|
UMaterialInstance* TorsoMaterial;
|
||||||
|
|
||||||
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly)
|
||||||
|
UMaterialInstance* HeadLegsMaterial;
|
||||||
|
};
|
||||||
|
|
||||||
UCLASS(config=Game)
|
UCLASS(config=Game)
|
||||||
class AGSCharacter : public ACharacter
|
class AGSCharacter : public ACharacter
|
||||||
@ -24,6 +35,9 @@ class AGSCharacter : public ACharacter
|
|||||||
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
|
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true"))
|
||||||
class UInputAction* ChangeGravityAction;
|
class UInputAction* ChangeGravityAction;
|
||||||
|
|
||||||
|
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Player Materials", meta = (AllowPrivateAccess = "true"))
|
||||||
|
TArray<FPlayerMaterial> PlayerMaterials;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AGSCharacter(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
AGSCharacter(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
|
||||||
|
|
||||||
@ -40,6 +54,8 @@ protected:
|
|||||||
public:
|
public:
|
||||||
virtual void PawnClientRestart() override;
|
virtual void PawnClientRestart() override;
|
||||||
|
|
||||||
|
virtual void PossessedBy(AController* NewController) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// APawn interface
|
// APawn interface
|
||||||
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
|
virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;
|
||||||
|
@ -113,6 +113,7 @@ bool AGSGameModeBase::CanDamagePlayer(AGSPlayerController* Damager, AGSPlayerCon
|
|||||||
|
|
||||||
void AGSGameModeBase::PickTeam(AGSPlayerState* PlayerState)
|
void AGSGameModeBase::PickTeam(AGSPlayerState* PlayerState)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
// place player on the team with the fewest players, or on the first team if all teams have the same number of players
|
// place player on the team with the fewest players, or on the first team if all teams have the same number of players
|
||||||
TArray<int32> NumTeamPlayers;
|
TArray<int32> NumTeamPlayers;
|
||||||
AGSGameState* GS = GetGameState<AGSGameState>();
|
AGSGameState* GS = GetGameState<AGSGameState>();
|
||||||
@ -141,8 +142,9 @@ void AGSGameModeBase::PickTeam(AGSPlayerState* PlayerState)
|
|||||||
LowestTeamIdx = TeamIdx;
|
LowestTeamIdx = TeamIdx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
PlayerState->SetTeamNum(LowestTeamIdx);
|
PlayerState->SetTeamNum(PlayerState->GetPlayerController()->GetLocalPlayer()->GetControllerId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,10 +2,11 @@
|
|||||||
|
|
||||||
#include "Player/GSPlayerController.h"
|
#include "Player/GSPlayerController.h"
|
||||||
|
|
||||||
|
// GS includes
|
||||||
|
#include "GSPlayerState.h"
|
||||||
|
|
||||||
void AGSPlayerController::Client_GameStarted_Implementation()
|
void AGSPlayerController::Client_GameStarted_Implementation()
|
||||||
{
|
{
|
||||||
FInputModeGameOnly GameOnly;
|
|
||||||
SetInputMode(GameOnly);
|
|
||||||
SetIgnoreMoveInput(false);
|
SetIgnoreMoveInput(false);
|
||||||
|
|
||||||
// enable all actions on pawn
|
// enable all actions on pawn
|
||||||
@ -64,6 +65,8 @@ void AGSPlayerController::UnFreeze()
|
|||||||
|
|
||||||
void AGSPlayerController::AcknowledgePossession(APawn* P)
|
void AGSPlayerController::AcknowledgePossession(APawn* P)
|
||||||
{
|
{
|
||||||
|
GetPlayerState<AGSPlayerState>()->UpdateTeamColor();
|
||||||
|
|
||||||
OnAcknowledgePossession();
|
OnAcknowledgePossession();
|
||||||
|
|
||||||
Super::AcknowledgePossession(P);
|
Super::AcknowledgePossession(P);
|
||||||
|
@ -26,6 +26,13 @@ void AGSPlayerState::SetTeamNum(int32 InTeamNum)
|
|||||||
|
|
||||||
void AGSPlayerState::UpdateTeamColor()
|
void AGSPlayerState::UpdateTeamColor()
|
||||||
{
|
{
|
||||||
|
AGSCharacter* Char = GetPawn<AGSCharacter>();
|
||||||
|
if(Char)
|
||||||
|
{
|
||||||
|
Char->ChangeTeamColor(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
AGSPlayerState* LocalPS = GetWorld()->GetFirstPlayerController()->GetPlayerState<AGSPlayerState>();
|
AGSPlayerState* LocalPS = GetWorld()->GetFirstPlayerController()->GetPlayerState<AGSPlayerState>();
|
||||||
// if this player state belongs to us then we need to update all other characters
|
// if this player state belongs to us then we need to update all other characters
|
||||||
// rendering of team will essentially flip (all enemies are now rendered as friendly and vice versa)
|
// rendering of team will essentially flip (all enemies are now rendered as friendly and vice versa)
|
||||||
@ -49,9 +56,10 @@ void AGSPlayerState::UpdateTeamColor()
|
|||||||
AGSCharacter* Char = GetPawn<AGSCharacter>();
|
AGSCharacter* Char = GetPawn<AGSCharacter>();
|
||||||
if(Char && LocalPS)
|
if(Char && LocalPS)
|
||||||
{
|
{
|
||||||
Char->ChangeTeamColor(IsPlayerFriendly(LocalPS));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,6 +24,11 @@ public:
|
|||||||
|
|
||||||
void SetTeamNum(int32 InTeamNum);
|
void SetTeamNum(int32 InTeamNum);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes how this player is rendered depending on their team number
|
||||||
|
*/
|
||||||
|
void UpdateTeamColor();
|
||||||
|
|
||||||
UFUNCTION(BlueprintPure)
|
UFUNCTION(BlueprintPure)
|
||||||
FORCEINLINE int32 GetNumKills() const { return NumKills; }
|
FORCEINLINE int32 GetNumKills() const { return NumKills; }
|
||||||
|
|
||||||
@ -65,9 +70,4 @@ protected:
|
|||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void OnRep_TeamNum();
|
void OnRep_TeamNum();
|
||||||
|
|
||||||
/**
|
|
||||||
* Changes how this player is rendered to a client
|
|
||||||
*/
|
|
||||||
void UpdateTeamColor();
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user