69 lines
2.2 KiB
C++
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;
|
|
};
|