diff options
author | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-02-22 01:09:07 +0100 |
---|---|---|
committer | Thorbjørn Lindeijer <bjorn@lindeijer.nl> | 2025-02-25 18:28:11 +0100 |
commit | 63e2712b2ad2c398160d399bdd9e454417c2654b (patch) | |
tree | 8190b702ee57e33051646b71431301e9be79d1fb /src/gui | |
parent | cca8b9c59a83d865ed1c64cef4f5c098f0c78bf9 (diff) | |
download | mana-63e2712b2ad2c398160d399bdd9e454417c2654b.tar.gz mana-63e2712b2ad2c398160d399bdd9e454417c2654b.tar.bz2 mana-63e2712b2ad2c398160d399bdd9e454417c2654b.tar.xz mana-63e2712b2ad2c398160d399bdd9e454417c2654b.zip |
Added support for option, opt1, opt2, opt3 status effect fields
Supporting these fields is necessary to correctly identify status
effects sent by tmwAthena.
This is a manual port of ac4e40a1408ad4d6fbcfce9d2bc6a0bc187ea5a4,
542d2ba78d84e0fa051e0620ccab5fb3a0c711e3 and
8800940bb4b94f6dab7dcf80bf0abc3e3b09e35f from M+.
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/ministatuswindow.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/gui/ministatuswindow.cpp b/src/gui/ministatuswindow.cpp index 08656f78..1218fbf3 100644 --- a/src/gui/ministatuswindow.cpp +++ b/src/gui/ministatuswindow.cpp @@ -39,6 +39,7 @@ #include "net/tmwa/protocol.h" +#include "resources/statuseffectdb.h" #include "resources/theme.h" #include "utils/gettext.h" @@ -154,21 +155,21 @@ void MiniStatusWindow::event(Event::Channel channel, const Event &event) { if (event.getType() == Event::UpdateStatusEffect) { - int index = event.getInt("index"); - bool newStatus = event.getBool("newStatus"); + const int id = event.getInt("index"); + const bool newStatus = event.getBool("newStatus"); - if (auto effect = StatusEffect::getStatusEffect(index, newStatus)) + if (auto effect = StatusEffectDB::getStatusEffect(id)) { - effect->deliverMessage(); - effect->playSFX(); + effect->deliverMessage(newStatus); + effect->playSfx(newStatus); - Sprite *sprite = effect->getIcon(); + Sprite *sprite = newStatus ? effect->getIconSprite() : nullptr; if (!sprite) { // delete sprite, if necessary for (unsigned int i = 0; i < mStatusEffectIcons.size();) - if (mStatusEffectIcons[i] == index) + if (mStatusEffectIcons[i] == id) { mStatusEffectIcons.erase(mStatusEffectIcons.begin() + i); @@ -184,7 +185,7 @@ void MiniStatusWindow::event(Event::Channel channel, const Event &event) for (unsigned int i = 0; i < mStatusEffectIcons.size(); i++) - if (mStatusEffectIcons[i] == index) + if (mStatusEffectIcons[i] == id) { setIcon(i, sprite); found = true; @@ -195,7 +196,7 @@ void MiniStatusWindow::event(Event::Channel channel, const Event &event) { // add new int offset = mStatusEffectIcons.size(); setIcon(offset, sprite); - mStatusEffectIcons.push_back(index); + mStatusEffectIcons.push_back(id); } } } |