diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-02-06 19:02:06 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-02-06 19:02:06 +0300 |
commit | befcee0b12005706f29650cfbef425fc3b8a77b0 (patch) | |
tree | 494bf82ec509a80a534d895cffad07f50af7fea4 | |
parent | f4ccfe30c324365123c50bb56cd4b8166bd1f494 (diff) | |
download | manaplus-befcee0b12005706f29650cfbef425fc3b8a77b0.tar.gz manaplus-befcee0b12005706f29650cfbef425fc3b8a77b0.tar.bz2 manaplus-befcee0b12005706f29650cfbef425fc3b8a77b0.tar.xz manaplus-befcee0b12005706f29650cfbef425fc3b8a77b0.zip |
In crazy moves A add support for all emotes.
-rw-r--r-- | src/being/localplayer.cpp | 14 | ||||
-rw-r--r-- | src/resources/db/emotedb.cpp | 15 | ||||
-rw-r--r-- | src/resources/db/emotedb.h | 4 |
3 files changed, 29 insertions, 4 deletions
diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp index 529f2c73a..84b18774c 100644 --- a/src/being/localplayer.cpp +++ b/src/being/localplayer.cpp @@ -66,6 +66,8 @@ #include "resources/iteminfo.h" +#include "resources/db/emotedb.h" + #include "utils/gettext.h" #include "utils/timer.h" @@ -2988,14 +2990,18 @@ void LocalPlayer::crazyMoveA() if (emo == '?') { srand(tick_time); - emote(static_cast<unsigned char>(1 + (rand() % 13))); + emote(static_cast<unsigned char>(1 + (rand() % EmoteDB::size()))); } else { + unsigned char emoteId = 0; if (emo >= '0' && emo <= '9') - emote(static_cast<unsigned char>(emo - '0' + 1)); - else if (emo >= 'a' && emo <= 'd') - emote(static_cast<unsigned char>(emo - 'a' + 11)); + emoteId = static_cast<unsigned char>(emo - '0' + 1); + else if (emo >= 'a' && emo <= 'z') + emoteId = static_cast<unsigned char>(emo - 'a' + 11); + else if (emo >= 'A' && emo <= 'Z') + emoteId = static_cast<unsigned char>(emo - 'A' + 37); + emote(emoteId); } mCrazyMoveState ++; diff --git a/src/resources/db/emotedb.cpp b/src/resources/db/emotedb.cpp index 97ea95aa0..943628978 100644 --- a/src/resources/db/emotedb.cpp +++ b/src/resources/db/emotedb.cpp @@ -295,3 +295,18 @@ const int &EmoteDB::getLast() { return mLastEmote; } + +int EmoteDB::size() +{ + return static_cast<signed int>(mEmoteInfos.size()); +} + +int EmoteDB::getIdByIndex(const int index) +{ + if (index < 0 || index >= static_cast<signed int>(mEmoteInfos.size())) + return 0; + EmoteInfos::const_iterator it = mEmoteInfos.begin(); + for (int f = 0; f < index; f ++) + ++ it; + return (*it).first; +} diff --git a/src/resources/db/emotedb.h b/src/resources/db/emotedb.h index 02683a99a..29a2a8de4 100644 --- a/src/resources/db/emotedb.h +++ b/src/resources/db/emotedb.h @@ -87,6 +87,10 @@ namespace EmoteDB const int &getLast() A_WARN_UNUSED; + int getIdByIndex(const int index); + + int size(); + typedef EmoteInfos::iterator EmoteInfosIterator; } // namespace EmoteDB |