Files
.github
dAuthServer
dChatFilter
dChatServer
dCommon
dDatabase
dGame
dBehaviors
dComponents
BaseCombatAIComponent.cpp
BaseCombatAIComponent.h
BouncerComponent.cpp
BouncerComponent.h
BuffComponent.cpp
BuffComponent.h
BuildBorderComponent.cpp
BuildBorderComponent.h
CMakeLists.txt
CharacterComponent.cpp
CharacterComponent.h
Component.cpp
Component.h
ControllablePhysicsComponent.cpp
ControllablePhysicsComponent.h
DestroyableComponent.cpp
DestroyableComponent.h
InventoryComponent.cpp
InventoryComponent.h
LUPExhibitComponent.cpp
LUPExhibitComponent.h
LevelProgressionComponent.cpp
LevelProgressionComponent.h
MissionComponent.cpp
MissionComponent.h
MissionOfferComponent.cpp
MissionOfferComponent.h
ModelComponent.cpp
ModelComponent.h
ModuleAssemblyComponent.cpp
ModuleAssemblyComponent.h
MovementAIComponent.cpp
MovementAIComponent.h
MovingPlatformComponent.cpp
MovingPlatformComponent.h
PetComponent.cpp
PetComponent.h
PhantomPhysicsComponent.cpp
PhantomPhysicsComponent.h
PlayerForcedMovementComponent.cpp
PlayerForcedMovementComponent.h
PossessableComponent.cpp
PossessableComponent.h
PossessorComponent.cpp
PossessorComponent.h
PropertyComponent.cpp
PropertyComponent.h
PropertyEntranceComponent.cpp
PropertyEntranceComponent.h
PropertyManagementComponent.cpp
PropertyManagementComponent.h
PropertyVendorComponent.cpp
PropertyVendorComponent.h
ProximityMonitorComponent.cpp
ProximityMonitorComponent.h
RacingControlComponent.cpp
RacingControlComponent.h
RailActivatorComponent.cpp
RailActivatorComponent.h
RebuildComponent.cpp
RebuildComponent.h
RenderComponent.cpp
RenderComponent.h
RigidbodyPhantomPhysicsComponent.cpp
RigidbodyPhantomPhysicsComponent.h
RocketLaunchLupComponent.cpp
RocketLaunchLupComponent.h
RocketLaunchpadControlComponent.cpp
RocketLaunchpadControlComponent.h
ScriptedActivityComponent.cpp
ScriptedActivityComponent.h
ShootingGalleryComponent.cpp
ShootingGalleryComponent.h
SimplePhysicsComponent.cpp
SimplePhysicsComponent.h
SkillComponent.cpp
SkillComponent.h
SoundTriggerComponent.cpp
SoundTriggerComponent.h
SwitchComponent.cpp
SwitchComponent.h
VehiclePhysicsComponent.cpp
VehiclePhysicsComponent.h
VendorComponent.cpp
VendorComponent.h
dEntity
dGameMessages
dInventory
dMission
dPropertyBehaviors
dUtilities
CMakeLists.txt
Character.cpp
Character.h
Entity.cpp
Entity.h
EntityManager.cpp
EntityManager.h
LeaderboardManager.cpp
LeaderboardManager.h
Player.cpp
Player.h
TeamManager.cpp
TeamManager.h
TradingManager.cpp
TradingManager.h
User.cpp
User.h
UserManager.cpp
UserManager.h
dMasterServer
dNavigation
dNet
dPhysics
dScripts
dWorldServer
dZoneManager
docker
docs
migrations
resources
tests
thirdparty
vanity
.clang-format
.clang-tidy
.dockerignore
.editorconfig
.env.example
.git-blame-ignore-revs
.gitattributes
.gitignore
.gitmodules
CMakeLists.txt
CMakePresets.json
CMakeVariables.txt
CONTRIBUTING.md
Docker.md
Docker_Windows.md
LICENSE
README.md
SECURITY.md
build.sh
docker-compose.yml
logo.png
versions.txt
DarkflameServer/dGame/dComponents/LevelProgressionComponent.h
2022-07-24 21:03:22 -05:00

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;
};