Permalink
Browse files

Fixed problems with using the last emote

The tmwa/BeingHandler was adjusting the effect id rather than the emote
id, causing it to not find the last emote (and the rest of the emotes
only worked correctly because the effect ids were consecutive in the same
order as the emote ids).

Furthermore, the EmoteShortcutContainer refused to draw the icon for the
last emote due to an off-by-one error in dealing with the 1-adjusted
emote ids used by the EmoteShortcut class.

Also cleaned up some old remains of a player ignore strategy that used
to use the two balloon emotes (this had been their original purpose).

Reviewed-by: Erik Schilling
  • Loading branch information...
1 parent 4c7ff67 commit 9015268746ed9052a9dc83839b2834b5feeab166 @bjorn bjorn committed Apr 1, 2012
View
1 NEWS
@@ -2,6 +2,7 @@
- Made it easier to click beings that are next to other beings
- Removed NPC trade messages from chat (again)
- Fixed swapping of ring and necklace equipment slots
+- Fixed problems with using the last emote
- Fixed drawing order of particles
- Fixed manaserv-enabled builds
- Fixed category of mana.desktop file
View
@@ -7,6 +7,7 @@
- Made it easier to click beings that are next to other beings
- Removed NPC trade messages from chat (again)
- Fixed swapping of ring and necklace equipment slots
+ - Fixed problems with using the last emote
- Fixed drawing order of particles
- Fixed manaserv-enabled builds
- Fixed category of mana.desktop file
View
@@ -31,11 +31,9 @@
#include <guichan/color.hpp>
#include <map>
-#include <set>
#include <string>
#include <vector>
-#define FIRST_IGNORE_EMOTE 14
#define STATUS_EFFECTS 32
#define SPEECH_TIME 500
@@ -60,7 +60,7 @@ EmoteShortcutContainer::EmoteShortcutContainer():
mEmoteImg.push_back(EmoteDB::get(i)->sprite);
}
- mMaxItems = EmoteDB::getLast() < MAX_ITEMS ? EmoteDB::getLast() : MAX_ITEMS;
+ mMaxItems = std::min(EmoteDB::getLast(), MAX_ITEMS);
mBoxHeight = mBackgroundImg->getHeight();
mBoxWidth = mBackgroundImg->getWidth();
@@ -97,11 +97,10 @@ void EmoteShortcutContainer::draw(gcn::Graphics *graphics)
g->drawText(key, emoteX + 2, emoteY + 2, gcn::Graphics::LEFT);
int emoteId = emoteShortcut->getEmote(i);
- if (emoteId > 0 && emoteId <= EmoteDB::getLast())
+ if (emoteId > 0 && emoteId <= EmoteDB::getLast() + 1)
{
mEmoteImg[emoteId - 1]->draw(g, emoteX + 2, emoteY + 10);
}
-
}
if (mEmoteMoved)
@@ -427,9 +427,8 @@ void BeingHandler::handleMessage(Net::MessageIn &msg)
if (player_relations.hasPermission(dstBeing, PlayerRelation::EMOTE))
{
- const int fx = EmoteDB::get(msg.readInt8())->effect;
- //TODO: figure out why the -1 is needed
- effectManager->trigger(fx - 1, dstBeing);
+ const int fx = EmoteDB::get(msg.readInt8() - 1)->effect;
+ effectManager->trigger(fx, dstBeing);
}
break;
View
@@ -31,8 +31,7 @@
#include "utils/gettext.h"
#define PLAYER_IGNORE_STRATEGY_NOP "nop"
-#define PLAYER_IGNORE_STRATEGY_EMOTE0 "emote0"
-#define DEFAULT_IGNORE_STRATEGY PLAYER_IGNORE_STRATEGY_EMOTE0
+#define DEFAULT_IGNORE_STRATEGY PLAYER_IGNORE_STRATEGY_NOP
#define NAME "name" // constant for xml serialisation
#define RELATION "relation" // constant for xml serialisation
@@ -45,7 +45,7 @@ void EmoteDB::load()
unload();
mUnknown.name = "unknown";
- mUnknown.effect = 0;
+ mUnknown.effect = -1;
mUnknown.sprite = new ImageSprite(
ResourceManager::getInstance()->getImage("graphics/sprites/error.png"));
@@ -91,7 +91,7 @@ void EmoteDB::load()
const int width = XML::getProperty(emoteNode, "width", 0);
const int height = XML::getProperty(emoteNode, "height", 0);
- if (imageName.empty() || !(width > 0) || !(height > 0))
+ if (imageName.empty() || width <= 0 || height <= 0)
{
logger->log("Emote Database: Warning: Emote with bad imageset values");
delete currentEmote;
@@ -150,7 +150,7 @@ const Emote *EmoteDB::get(int id)
}
}
-const int &EmoteDB::getLast()
+int EmoteDB::getLast()
{
return mLastEmote;
}
View
@@ -48,9 +48,9 @@ namespace EmoteDB
const Emote *get(int id);
- const int &getLast();
+ int getLast();
typedef Emotes::iterator EmotesIterator;
}
-#endif
+#endif // EMOTE_DB_H

0 comments on commit 9015268

Please sign in to comment.