mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-09 20:24:16 +00:00
Split out Level progression component (#671)
* Split out Level progression component from Character Component This is to get to the Player forced movement Comp in a sane way * move XML to component insted of abusing charComp * use overrides should probably make everything that calls that call it correctly * fix linking issue
This commit is contained in:
63
dGame/dComponents/LevelProgressionComponent.h
Normal file
63
dGame/dComponents/LevelProgressionComponent.h
Normal file
@@ -0,0 +1,63 @@
|
||||
#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);
|
||||
~LevelProgressionComponent() override {};
|
||||
|
||||
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;
|
||||
};
|
Reference in New Issue
Block a user