diff options
author | Tametomo <irarice@gmail.com> | 2009-04-15 19:55:29 +0200 |
---|---|---|
committer | Bjørn Lindeijer <bjorn@lindeijer.nl> | 2009-04-15 19:57:02 +0200 |
commit | 5f00b25ba2895704123eb3d01b3ab5d012d2f333 (patch) | |
tree | 5f94b0a8b54c8a2200c1fe568917f06551208b07 /src/gui | |
parent | ef13037435c671b76c75c3ecefbad83dbdc578f2 (diff) | |
download | mana-client-5f00b25ba2895704123eb3d01b3ab5d012d2f333.tar.gz mana-client-5f00b25ba2895704123eb3d01b3ab5d012d2f333.tar.bz2 mana-client-5f00b25ba2895704123eb3d01b3ab5d012d2f333.tar.xz mana-client-5f00b25ba2895704123eb3d01b3ab5d012d2f333.zip |
Some PopupMenu cleanups/fixes and additions.
Signed-off-by: Tametomo <irarice@gmail.com>
Signed-off-by: Bjørn Lindeijer <bjorn@lindeijer.nl>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/popupmenu.cpp | 42 | ||||
-rw-r--r-- | src/gui/viewport.cpp | 9 | ||||
-rw-r--r-- | src/gui/viewport.h | 6 |
3 files changed, 38 insertions, 19 deletions
diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index e8af3122..ef1990f8 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -78,13 +78,13 @@ void PopupMenu::showPopup(int x, int y, Being *being) if (being->getType() != Being::UNKNOWN) mBrowserBox->addRow(_("@@name|Add name to chat@@")); + const std::string &name = being->getName(); switch (being->getType()) { case Being::PLAYER: { // Players can be traded with. Later also follow and // add as buddy will be options in this menu. - const std::string &name = being->getName(); mBrowserBox->addRow(strprintf(_("@@trade|Trade With %s@@"), name.c_str())); mBrowserBox->addRow(strprintf(_("@@attack|Attack %s@@"), name.c_str())); @@ -109,7 +109,7 @@ void PopupMenu::showPopup(int x, int y, Being *being) break; } - //mBrowserBox->addRow(_("@@follow|Follow ") + name + "@@"); + //mBrowserBox->addRow(_(strprintf("@@follow|Follow %s@@"), name.c_str())); //mBrowserBox->addRow(_("@@buddy|Add ") + name + " to Buddy List@@"); mBrowserBox->addRow(strprintf(_("@@guild|Invite %s to join your guild@@"), name.c_str())); mBrowserBox->addRow(strprintf(_("@@party|Invite %s to join your party@@"), name.c_str())); @@ -123,7 +123,12 @@ void PopupMenu::showPopup(int x, int y, Being *being) case Being::NPC: // NPCs can be talked to (single option, candidate for removal // unless more options would be added) - mBrowserBox->addRow(_("@@talk|Talk To NPC@@")); + mBrowserBox->addRow(strprintf(_("@@talk|Talk To %s@@"), name.c_str())); + break; + + case Being::MONSTER: + // Monsters can be attacked + mBrowserBox->addRow(strprintf(_("@@attack|Attack %s@@"), name.c_str())); break; /*case Being::MONSTER: @@ -132,7 +137,7 @@ void PopupMenu::showPopup(int x, int y, Being *being) default: /* Other beings aren't interesting... */ - break; + return; } //browserBox->addRow("@@look|Look To@@"); @@ -145,11 +150,13 @@ void PopupMenu::showPopup(int x, int y, Being *being) void PopupMenu::showPopup(int x, int y, FloorItem *floorItem) { mFloorItem = floorItem; + mItem = floorItem->getItem(); mBrowserBox->clearRows(); // Floor item can be picked up (single option, candidate for removal) std::string name = ItemDB::get(mFloorItem->getItemId()).getName(); mBrowserBox->addRow(strprintf(_("@@pickup|Pick Up %s@@"), name.c_str())); + mBrowserBox->addRow(_("@@chat|Add to Chat@@")); //browserBox->addRow("@@look|Look To@@"); mBrowserBox->addRow("##3---"); @@ -181,9 +188,7 @@ void PopupMenu::handleLink(const std::string &link) } #ifdef EATHENA_SUPPORT // Attack action - else if (link == "attack" && - being && - being->getType() == Being::PLAYER) + else if (link == "attack" && being) { player_node->attack(being, true); } @@ -224,11 +229,6 @@ void PopupMenu::handleLink(const std::string &link) player_node->inviteToGuild(being); } #endif - // Add player to your party - else if (link == "party") - { - player_node->inviteToParty(dynamic_cast<Player*>(being)); - } /* // Follow Player action else if (link == "follow") @@ -244,10 +244,6 @@ void PopupMenu::handleLink(const std::string &link) buddyWindow->addBuddy(being->getName()); }*/ - else if (link == "name") - { - chatWindow->addInputText(being->getName()); - } // Pick Up Floor Item action else if ((link == "pickup") && mFloorItem) @@ -294,11 +290,23 @@ void PopupMenu::handleLink(const std::string &link) new ItemAmountWindow(ItemAmountWindow::ItemSplit, inventoryWindow, mItem); } + else if (link == "drop") { new ItemAmountWindow(ItemAmountWindow::ItemDrop, inventoryWindow, mItem); } + + else if (link == "party" && being && being->getType() == Being::PLAYER) + { + player_node->inviteToParty(dynamic_cast<Player*>(being)); + } + + else if (link == "name" && being) + { + chatWindow->addInputText(being->getName()); + } + else if (link == "admin-kick" && being && (being->getType() == Being::PLAYER || @@ -308,7 +316,7 @@ void PopupMenu::handleLink(const std::string &link) } // Unknown actions - else + else if (link != "cancel") { std::cout << link << std::endl; } diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp index 3fc5f2d4..9ce537fc 100644 --- a/src/gui/viewport.cpp +++ b/src/gui/viewport.cpp @@ -313,8 +313,8 @@ void Viewport::mousePressed(gcn::MouseEvent &event) if ((being = beingManager->findBeingByPixel(pixelx, pixely)) && being != player_node) { - mPopupMenu->showPopup(event.getX(), event.getY(), being); - return; + mPopupMenu->showPopup(event.getX(), event.getY(), being); + return; } else if ((floorItem = floorItemManager->findByCoordinates(tilex, tiley))) @@ -446,6 +446,11 @@ void Viewport::showPopup(int x, int y, Item *item) mPopupMenu->showPopup(x, y, item); } +void Viewport::closePopupMenu() +{ + mPopupMenu->handleLink("cancel"); +} + void Viewport::optionChanged(const std::string &name) { mScrollLaziness = (int) config.getValue("ScrollLaziness", 32); diff --git a/src/gui/viewport.h b/src/gui/viewport.h index cff23862..3dae5a2a 100644 --- a/src/gui/viewport.h +++ b/src/gui/viewport.h @@ -109,6 +109,12 @@ class Viewport : public WindowContainer, public gcn::MouseListener, void showPopup(int x, int y, Item *item); /** + * Closes the popup menu. Needed for when the player dies or switching + * maps. + */ + void closePopupMenu(); + + /** * A relevant config option changed. */ void optionChanged(const std::string &name); |