summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-02-22 01:09:07 +0100
committerThorbjørn Lindeijer <bjorn@lindeijer.nl>2025-02-25 18:28:11 +0100
commit63e2712b2ad2c398160d399bdd9e454417c2654b (patch)
tree8190b702ee57e33051646b71431301e9be79d1fb /src/gui
parentcca8b9c59a83d865ed1c64cef4f5c098f0c78bf9 (diff)
downloadmana-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.cpp19
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);
}
}
}