From a93722a53e2d50466dfd5512c4a6a1c3dfc60fb1 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 28 Jan 2012 21:00:12 +0300 Subject: Add support for processing player statuses in evol server. --- src/gui/shopwindow.cpp | 13 +++++++++++++ src/gui/whoisonline.cpp | 36 +++++++++++++++++++++++++++++++++--- src/gui/whoisonline.h | 47 ++++++++++++++++++++--------------------------- 3 files changed, 66 insertions(+), 30 deletions(-) (limited to 'src/gui') diff --git a/src/gui/shopwindow.cpp b/src/gui/shopwindow.cpp index b6b87edb7..1a27b8b0c 100644 --- a/src/gui/shopwindow.cpp +++ b/src/gui/shopwindow.cpp @@ -55,6 +55,7 @@ #include "net/net.h" #include "net/chathandler.h" #include "net/npchandler.h" +#include "net/playerhandler.h" #include "net/tradehandler.h" #include "resources/iteminfo.h" @@ -206,11 +207,15 @@ void ShopWindow::action(const gcn::ActionEvent &event) && mBuyShopItemList->getSelected() >= 0) { mBuyShopItems->del(mBuyShopItemList->getSelected()); + if (isShopEmpty() && player_node) + player_node->updateStatus(); } else if (event.getId() == "delete sell" && mSellShopItemList && mSellShopItemList->getSelected() >= 0) { mSellShopItems->del(mSellShopItemList->getSelected()); + if (isShopEmpty() && player_node) + player_node->updateStatus(); } else if (event.getId() == "announce buy" && mBuyShopItems && mBuyShopItems->getNumberOfElements() > 0) @@ -306,8 +311,12 @@ void ShopWindow::addBuyItem(Item *item, int amount, int price) { if (!mBuyShopItems || !item) return; + bool emp = isShopEmpty(); mBuyShopItems->addItemNoDup(item->getId(), item->getColor(), amount, price); + if (emp && player_node) + player_node->updateStatus(); + updateButtonsAndLabels(); } @@ -315,8 +324,12 @@ void ShopWindow::addSellItem(Item *item, int amount, int price) { if (!mBuyShopItems || !item) return; + bool emp = isShopEmpty(); mSellShopItems->addItemNoDup(item->getId(), item->getColor(), amount, price); + if (emp && player_node) + player_node->updateStatus(); + updateButtonsAndLabels(); } diff --git a/src/gui/whoisonline.cpp b/src/gui/whoisonline.cpp index 34cfc1a57..e38f6ad73 100644 --- a/src/gui/whoisonline.cpp +++ b/src/gui/whoisonline.cpp @@ -402,7 +402,8 @@ void WhoIsOnline::loadWebList() if (!mShowLevel) level = 0; - OnlinePlayer *player = new OnlinePlayer(nick, -1, level, -1); + OnlinePlayer *player = new OnlinePlayer(nick, 0, level, + GENDER_UNSPECIFIED, -1); mOnlinePlayers.insert(player); mOnlineNicks.insert(nick); @@ -709,11 +710,40 @@ void WhoIsOnline::optionChanged(const std::string &name) void OnlinePlayer::setText(std::string color) { - mText = strprintf("@@%s|##%s%s", mNick.c_str(), + mText = strprintf("@@%s|##%s%s ", mNick.c_str(), color.c_str(), mNick.c_str()); + if (actorSpriteManager) + { + Being *being = actorSpriteManager->findBeingByName( + mNick, Being::PLAYER); + if (being) + being->setState(mStatus); + } + if (mLevel > 0) - mText += strprintf(" (%d)", mLevel); + mText += strprintf("%d", mLevel); + + if (mGender == GENDER_FEMALE) + mText += "\u2640"; + else if (mGender == GENDER_MALE) + mText += "\u2642"; + + if (mStatus > 0) + { + if (mStatus & Being::FLAG_SHOP) + mText += "$"; + if (mStatus & Being::FLAG_AWAY) + { + // TRANSLATORS: this away status writed in player nick + mText += _("A"); + } + if (mStatus & Being::FLAG_INACTIVE) + { + // TRANSLATORS: this inactive status writed in player nick + mText += _("I"); + } + } if (mVersion > 0) mText += strprintf(" - %d", mVersion); diff --git a/src/gui/whoisonline.h b/src/gui/whoisonline.h index ef25257da..feaec3ab4 100644 --- a/src/gui/whoisonline.h +++ b/src/gui/whoisonline.h @@ -45,57 +45,50 @@ struct SDL_Thread; class OnlinePlayer { public: - OnlinePlayer(std::string nick, int status, int level, int version) : + OnlinePlayer(std::string nick, unsigned char status, + unsigned char level, unsigned char gender, + unsigned char version) : mNick(nick), mText(""), mStatus(status), mLevel(level), - mVersion(version) + mVersion(version), + mGender(gender) { } const std::string getNick() const - { - return mNick; - } + { return mNick; } - int getStaus() const - { - return mStatus; - } + unsigned char getStaus() const + { return mStatus; } - int getVersion() const - { - return mVersion; - } + unsigned char getVersion() const + { return mVersion; } - int getLevel() const - { - return mLevel; - } + unsigned char getLevel() const + { return mLevel; } const std::string getText() - { - return mText; - } + { return mText; } void setText(std::string str); - void setLevel(int level) - { - mLevel = level; - } + void setLevel(unsigned char level) + { mLevel = level; } private: std::string mNick; std::string mText; - int mStatus; + unsigned char mStatus; + + unsigned char mLevel; - int mLevel; + unsigned char mVersion; - int mVersion; + unsigned char mGender; }; /** -- cgit v1.2.3-70-g09d2