mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-12-23 14:03:34 +00:00
63 lines
1.4 KiB
C
63 lines
1.4 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "Entity.h"
|
||
|
#include "GameMessages.h"
|
||
|
#include "Component.h"
|
||
|
|
||
|
/**
|
||
|
* Component that handles level progression and serilization.
|
||
|
*
|
||
|
*/
|
||
|
class LevelProgressionComponent : public Component {
|
||
|
public:
|
||
|
static const uint32_t ComponentType = eReplicaComponentType::COMPONENT_TYPE_LEVEL_PROGRESSION;
|
||
|
|
||
|
/**
|
||
|
* Constructor for this component
|
||
|
* @param parent parent that contains this component
|
||
|
*/
|
||
|
LevelProgressionComponent(Entity* parent);
|
||
|
|
||
|
void Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags);
|
||
|
|
||
|
/**
|
||
|
* Save data from this componennt to character XML
|
||
|
* @param doc the document to write data to
|
||
|
*/
|
||
|
void UpdateXml(tinyxml2::XMLDocument* doc) override;
|
||
|
|
||
|
/**
|
||
|
* Load base data for this component from character XML
|
||
|
* @param doc the document to read data from
|
||
|
*/
|
||
|
void LoadFromXml(tinyxml2::XMLDocument* doc) override;
|
||
|
|
||
|
/**
|
||
|
* Gets the current level of the entity
|
||
|
* @return the current level of the entity
|
||
|
*/
|
||
|
const uint32_t GetLevel() const { return m_Level; }
|
||
|
|
||
|
/**
|
||
|
* Sets the level of the entity
|
||
|
* @param level the level to set
|
||
|
*/
|
||
|
void SetLevel(uint32_t level) { m_Level = level; m_DirtyLevelInfo = true; }
|
||
|
|
||
|
/**
|
||
|
* Gives the player rewards for the last level that they leveled up from
|
||
|
*/
|
||
|
void HandleLevelUp();
|
||
|
|
||
|
private:
|
||
|
/**
|
||
|
* whether the level is dirty
|
||
|
*/
|
||
|
bool m_DirtyLevelInfo = false;
|
||
|
|
||
|
/**
|
||
|
* Level of the entity
|
||
|
*/
|
||
|
uint32_t m_Level;
|
||
|
};
|