haxis/Source/UnrealProject/GameState/DefaultPlayerState.h

69 lines
2.2 KiB
C++

// Project Lab - NHTV Igad
#pragma once
#include "PlayerStateBase.h"
#include "DefaultPlayerState.generated.h"
/*
In-game state of a player.
*/
UCLASS()
class UNREALPROJECT_API ADefaultPlayerState : public APlayerStateBase
{
GENERATED_BODY()
public:
ADefaultPlayerState();
virtual void BeginPlay() override;
// Get Functions
// Integer level value from 1-max
UFUNCTION(BlueprintCallable, Category = "Level Functions")
int32 GetLevel() const;
UFUNCTION(BlueprintCallable, Category = "Level Functions")
int32 GetMaxLevel() const;
// Current experience in-level
UFUNCTION(BlueprintCallable, Category = "Level Functions")
int32 GetExperience() const;
// Totale experience needed for the next level
UFUNCTION(BlueprintCallable, Category = "Level Functions")
int32 GetExperienceToLevel() const;
// DEBUG functionality for setting a player level
void SetLevel(int32 level);
// Call the function to grant a player with experience, this function will also handle leveling up.
UFUNCTION(BlueprintCallable, Category = "Level Functions")
void GainExperience(int32 gainedExperience);
// The character the player currently controls, or null when dead
UPROPERTY(BlueprintReadOnly, Replicated, Category = "Character")
class ANetworkPlayer* character;
// The person that is in the same team as this player, or null when dead or there is none
UPROPERTY(BlueprintReadOnly, Replicated, Category = "Character")
class ADefaultPlayerState* teamMate;
UPROPERTY(BlueprintReadonly, Replicated, Category = "Score")
int32 kills;
UPROPERTY(BlueprintReadonly, Replicated, Category = "Score")
int32 deaths;
private:
// Calculates the experience needed to level up to a given level
int32 m_CalculateExperienceToLevel(int32 level);
// Variables to keep track of what level/experience the player has.
UPROPERTY(Replicated)
int8 m_level;
UPROPERTY(Replicated)
int32 m_experience;
// Variable to check if a player has leveled up.
UPROPERTY(Replicated)
int32 m_experienceToLevel;
// Variables for calculating the experience to level up.
int32 m_baseExperience;
int32 m_variableExperience;
float m_exponentExperience;
};