Merge pull request #518 from EmosewaMC/popup-fix

Pop up now appears for life containers
This commit is contained in:
David Markowitz 2022-04-24 18:39:35 -07:00 committed by GitHub
commit 7b32d2f609
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 15 deletions

View File

@ -215,6 +215,8 @@ void DestroyableComponent::SetHealth(int32_t value) {
void DestroyableComponent::SetMaxHealth(float value, bool playAnim) { void DestroyableComponent::SetMaxHealth(float value, bool playAnim) {
m_DirtyHealth = true; m_DirtyHealth = true;
// Used for playAnim if opted in for.
int32_t difference = static_cast<int32_t>(std::abs(m_fMaxHealth - value));
m_fMaxHealth = value; m_fMaxHealth = value;
if (m_iHealth > m_fMaxHealth) { if (m_iHealth > m_fMaxHealth) {
@ -225,22 +227,20 @@ void DestroyableComponent::SetMaxHealth(float value, bool playAnim) {
// Now update the player bar // Now update the player bar
if (!m_Parent->GetParentUser()) return; if (!m_Parent->GetParentUser()) return;
AMFStringValue* amount = new AMFStringValue(); AMFStringValue* amount = new AMFStringValue();
amount->SetStringValue(std::to_string(value)); amount->SetStringValue(std::to_string(difference));
AMFStringValue* type = new AMFStringValue(); AMFStringValue* type = new AMFStringValue();
type->SetStringValue("health"); type->SetStringValue("health");
AMFArrayValue args; AMFArrayValue args;
args.InsertValue("amount", amount); args.InsertValue("amount", amount);
args.InsertValue("type", type); args.InsertValue("type", type);
GameMessages::SendUIMessageServerToSingleClient(m_Parent, m_Parent->GetParentUser()->GetSystemAddress(), "MaxPlayerBarUpdate", &args); GameMessages::SendUIMessageServerToSingleClient(m_Parent, m_Parent->GetParentUser()->GetSystemAddress(), "MaxPlayerBarUpdate", &args);
delete amount; delete amount;
delete type; delete type;
} }
else {
EntityManager::Instance()->SerializeEntity(m_Parent); EntityManager::Instance()->SerializeEntity(m_Parent);
}
} }
void DestroyableComponent::SetArmor(int32_t value) { void DestroyableComponent::SetArmor(int32_t value) {
@ -287,9 +287,8 @@ void DestroyableComponent::SetMaxArmor(float value, bool playAnim) {
delete amount; delete amount;
delete type; delete type;
} }
else {
EntityManager::Instance()->SerializeEntity(m_Parent); EntityManager::Instance()->SerializeEntity(m_Parent);
}
} }
void DestroyableComponent::SetImagination(int32_t value) { void DestroyableComponent::SetImagination(int32_t value) {
@ -310,6 +309,8 @@ void DestroyableComponent::SetImagination(int32_t value) {
void DestroyableComponent::SetMaxImagination(float value, bool playAnim) { void DestroyableComponent::SetMaxImagination(float value, bool playAnim) {
m_DirtyHealth = true; m_DirtyHealth = true;
// Used for playAnim if opted in for.
int32_t difference = static_cast<int32_t>(std::abs(m_fMaxImagination - value));
m_fMaxImagination = value; m_fMaxImagination = value;
if (m_iImagination > m_fMaxImagination) { if (m_iImagination > m_fMaxImagination) {
@ -320,22 +321,19 @@ void DestroyableComponent::SetMaxImagination(float value, bool playAnim) {
// Now update the player bar // Now update the player bar
if (!m_Parent->GetParentUser()) return; if (!m_Parent->GetParentUser()) return;
AMFStringValue* amount = new AMFStringValue(); AMFStringValue* amount = new AMFStringValue();
amount->SetStringValue(std::to_string(value)); amount->SetStringValue(std::to_string(difference));
AMFStringValue* type = new AMFStringValue(); AMFStringValue* type = new AMFStringValue();
type->SetStringValue("imagination"); type->SetStringValue("imagination");
AMFArrayValue args; AMFArrayValue args;
args.InsertValue("amount", amount); args.InsertValue("amount", amount);
args.InsertValue("type", type); args.InsertValue("type", type);
GameMessages::SendUIMessageServerToSingleClient(m_Parent, m_Parent->GetParentUser()->GetSystemAddress(), "MaxPlayerBarUpdate", &args); GameMessages::SendUIMessageServerToSingleClient(m_Parent, m_Parent->GetParentUser()->GetSystemAddress(), "MaxPlayerBarUpdate", &args);
delete amount; delete amount;
delete type; delete type;
} }
else { EntityManager::Instance()->SerializeEntity(m_Parent);
EntityManager::Instance()->SerializeEntity(m_Parent);
}
} }
void DestroyableComponent::SetDamageToAbsorb(int32_t value) void DestroyableComponent::SetDamageToAbsorb(int32_t value)

View File

@ -528,11 +528,11 @@ void Mission::YieldRewards() {
} }
if (info->reward_maxhealth > 0) { if (info->reward_maxhealth > 0) {
destroyableComponent->SetMaxHealth(destroyableComponent->GetMaxHealth() + static_cast<float>(info->reward_maxhealth)); destroyableComponent->SetMaxHealth(destroyableComponent->GetMaxHealth() + static_cast<float>(info->reward_maxhealth), true);
} }
if (info->reward_maximagination > 0) { if (info->reward_maximagination > 0) {
destroyableComponent->SetMaxImagination(destroyableComponent->GetMaxImagination() + static_cast<float>(info->reward_maximagination)); destroyableComponent->SetMaxImagination(destroyableComponent->GetMaxImagination() + static_cast<float>(info->reward_maximagination), true);
} }
EntityManager::Instance()->SerializeEntity(entity); EntityManager::Instance()->SerializeEntity(entity);