Merge pull request #460 from EmosewaMC/HandleLEvelUpFix

Added UI pop up for level rewards
This commit is contained in:
Jett 2022-02-21 03:50:31 +00:00 committed by GitHub
commit 87d3ac15bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 8 deletions

View File

@ -12,6 +12,7 @@
#include "EntityManager.h"
#include "PossessorComponent.h"
#include "VehiclePhysicsComponent.h"
#include "GameMessages.h"
CharacterComponent::CharacterComponent(Entity* parent, Character* character) : Component(parent) {
m_Character = character;
@ -191,6 +192,7 @@ void CharacterComponent::HandleLevelUp()
auto* rewardsTable = CDClientManager::Instance()->GetTable<CDRewardsTable>("Rewards");
const auto& rewards = rewardsTable->GetByLevelID(m_Level);
bool rewardingItem = rewards.size() > 0;
auto* parent = m_Character->GetEntity();
@ -206,6 +208,8 @@ void CharacterComponent::HandleLevelUp()
{
return;
}
// Tell the client we beginning to send level rewards.
if(rewardingItem) GameMessages::NotifyLevelRewards(parent->GetObjectID(), parent->GetSystemAddress(), m_Level, rewardingItem);
for (auto* reward : rewards)
{
@ -214,29 +218,24 @@ void CharacterComponent::HandleLevelUp()
case 0:
inventoryComponent->AddItem(reward->value, reward->count);
break;
case 4:
{
auto* items = inventoryComponent->GetInventory(ITEMS);
items->SetSize(items->GetSize() + reward->value);
}
break;
case 9:
controllablePhysicsComponent->SetSpeedMultiplier(static_cast<float>(reward->value) / 500.0f);
break;
case 11:
break;
case 12:
break;
default:
break;
}
}
// Tell the client we have finished sending level rewards.
if(rewardingItem) GameMessages::NotifyLevelRewards(parent->GetObjectID(), parent->GetSystemAddress(), m_Level, !rewardingItem);
}
void CharacterComponent::SetGMLevel(int gmlevel) {

View File

@ -1516,6 +1516,18 @@ void GameMessages::SendRequestActivityEnter(LWOOBJID objectId, const SystemAddre
SEND_PACKET
}
void GameMessages::NotifyLevelRewards(LWOOBJID objectID, const SystemAddress& sysAddr, int level, bool sending_rewards) {
CBITSTREAM
CMSGHEADER
bitStream.Write(objectID);
bitStream.Write((uint16_t)GAME_MSG::GAME_MSG_NOTIFY_LEVEL_REWARDS);
bitStream.Write(level);
bitStream.Write(sending_rewards);
SEND_PACKET
}
void GameMessages::SendSetShootingGalleryParams(LWOOBJID objectId, const SystemAddress& sysAddr,
float cameraFOV,

View File

@ -68,6 +68,7 @@ namespace GameMessages {
void SendOfferMission(const LWOOBJID& entity, const SystemAddress& sysAddr, int32_t missionID, const LWOOBJID& offererID);
void SendNotifyMission(Entity * entity, const SystemAddress& sysAddr, int missionID, int missionState, bool sendingRewards);
void SendNotifyMissionTask(Entity * entity, const SystemAddress& sysAddr, int missionID, int taskMask, std::vector<float> updates);
void NotifyLevelRewards(LWOOBJID objectID, const SystemAddress& sysAddr, int level, bool sending_rewards);
void SendModifyLEGOScore(Entity* entity, const SystemAddress& sysAddr, int64_t score, eLootSourceType sourceType);
void SendUIMessageServerToSingleClient(Entity* entity, const SystemAddress& sysAddr, const std::string& message, NDGFxValue args);

View File

@ -532,6 +532,7 @@ enum GAME_MSG : unsigned short {
GAME_MSG_RESPONSE_MOVE_ITEM_BETWEEN_INVENTORY_TYPES = 1667,
GAME_MSG_PLAYER_SET_CAMERA_CYCLING_MODE = 1676,
GAME_MSG_NOTIFY_SERVER_LEVEL_PROCESSING_COMPLETE = 1734,
GAME_MSG_NOTIFY_LEVEL_REWARDS = 1735,
GAME_MSG_MARK_INVENTORY_ITEM_AS_ACTIVE = 1767,
END
};