mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-31 12:41:55 +00:00 
			
		
		
		
	LevelProgressionComponent cleanup
This commit is contained in:
		| @@ -43,47 +43,48 @@ void LevelProgressionComponent::LoadFromXml(tinyxml2::XMLDocument* doc) { | ||||
|  | ||||
| void LevelProgressionComponent::Serialize(RakNet::BitStream* outBitStream, bool bIsInitialUpdate, unsigned int& flags) { | ||||
| 	outBitStream->Write(bIsInitialUpdate || m_DirtyLevelInfo); | ||||
| 	if (bIsInitialUpdate || m_DirtyLevelInfo) outBitStream->Write(m_Level); | ||||
| 	m_DirtyLevelInfo = false; | ||||
| 	if (bIsInitialUpdate || m_DirtyLevelInfo) { | ||||
| 		outBitStream->Write(m_Level); | ||||
| 		if (!bIsInitialUpdate) m_DirtyLevelInfo = false; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void LevelProgressionComponent::HandleLevelUp() { | ||||
| 	auto* rewardsTable = CDClientManager::Instance().GetTable<CDRewardsTable>(); | ||||
|  | ||||
| 	const auto& rewards = rewardsTable->GetByLevelID(m_Level); | ||||
| 	bool rewardingItem = rewards.size() > 0; | ||||
| 	if (rewards.empty()) return; | ||||
|  | ||||
| 	auto* inventoryComponent = m_ParentEntity->GetComponent<InventoryComponent>(); | ||||
| 	auto* controllablePhysicsComponent = m_ParentEntity->GetComponent<ControllablePhysicsComponent>(); | ||||
|  | ||||
| 	if (!inventoryComponent || !controllablePhysicsComponent) return; | ||||
| 	// Tell the client we beginning to send level rewards. | ||||
| 	if (rewardingItem) GameMessages::NotifyLevelRewards(m_ParentEntity->GetObjectID(), m_ParentEntity->GetSystemAddress(), m_Level, rewardingItem); | ||||
| 	GameMessages::NotifyLevelRewards(m_ParentEntity->GetObjectID(), m_ParentEntity->GetSystemAddress(), m_Level, true); | ||||
|  | ||||
| 	for (auto* reward : rewards) { | ||||
| 		switch (reward->rewardType) { | ||||
| 		case 0: | ||||
| 			inventoryComponent->AddItem(reward->value, reward->count, eLootSourceType::LEVEL_REWARD); | ||||
| 			break; | ||||
| 		case 4: | ||||
| 		{ | ||||
| 		case 4: { | ||||
| 			auto* items = inventoryComponent->GetInventory(eInventoryType::ITEMS); | ||||
| 			if (!items) continue; | ||||
| 			items->SetSize(items->GetSize() + reward->value); | ||||
| 			break; | ||||
| 		} | ||||
| 		break; | ||||
| 		case 9: | ||||
| 			SetSpeedBase(static_cast<float>(reward->value)); | ||||
| 			controllablePhysicsComponent->SetSpeedMultiplier(GetSpeedBase() / 500.0f); | ||||
| 			break; | ||||
| 		case 11: | ||||
| 		case 12: | ||||
| 			break; | ||||
| 		default: | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	// Tell the client we have finished sending level rewards. | ||||
| 	if (rewardingItem) GameMessages::NotifyLevelRewards(m_ParentEntity->GetObjectID(), m_ParentEntity->GetSystemAddress(), m_Level, !rewardingItem); | ||||
| 	GameMessages::NotifyLevelRewards(m_ParentEntity->GetObjectID(), m_ParentEntity->GetSystemAddress(), m_Level, false); | ||||
| } | ||||
|  | ||||
| void LevelProgressionComponent::SetRetroactiveBaseSpeed() { | ||||
|   | ||||
| @@ -11,7 +11,7 @@ | ||||
|   * | ||||
|  */ | ||||
|  | ||||
| class LevelProgressionComponent : public Component { | ||||
| class LevelProgressionComponent final : public Component { | ||||
| public: | ||||
| 	inline static const eReplicaComponentType ComponentType = eReplicaComponentType::LEVEL_PROGRESSION; | ||||
|  | ||||
| @@ -45,7 +45,11 @@ public: | ||||
| 	 * Sets the level of the entity | ||||
| 	 * @param level the level to set | ||||
| 	 */ | ||||
| 	void SetLevel(uint32_t level) { m_Level = level; m_DirtyLevelInfo = true; } | ||||
| 	void SetLevel(uint32_t level) { | ||||
| 		if (m_Level == level) return; | ||||
| 		m_Level = level; | ||||
| 		m_DirtyLevelInfo = true; | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Gets the current Speed Base of the entity | ||||
| @@ -98,7 +102,7 @@ private: | ||||
| 	float m_SpeedBase; | ||||
|  | ||||
| 	/** | ||||
| 	 * The Character format version | ||||
| 	 * The Character format version.  Certain bug fixes increment this version number. | ||||
| 	 */ | ||||
| 	eCharacterVersion m_CharacterVersion; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 EmosewaMC
					EmosewaMC