diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/chat.cpp | 3 | ||||
-rw-r--r-- | src/gui/equipmentwindow.cpp | 5 | ||||
-rw-r--r-- | src/gui/inventorywindow.cpp | 10 | ||||
-rw-r--r-- | src/gui/itemamount.cpp | 8 | ||||
-rw-r--r-- | src/gui/itemcontainer.cpp | 115 | ||||
-rw-r--r-- | src/gui/itemcontainer.h | 7 | ||||
-rw-r--r-- | src/gui/minimap.cpp | 27 | ||||
-rw-r--r-- | src/gui/ministatus.cpp | 6 | ||||
-rw-r--r-- | src/gui/partywindow.cpp | 56 | ||||
-rw-r--r-- | src/gui/partywindow.h | 4 | ||||
-rw-r--r-- | src/gui/popupmenu.cpp | 12 | ||||
-rw-r--r-- | src/gui/setup_players.cpp | 8 | ||||
-rw-r--r-- | src/gui/setup_players.h | 1 | ||||
-rw-r--r-- | src/gui/setup_video.cpp | 254 | ||||
-rw-r--r-- | src/gui/setup_video.h | 14 | ||||
-rw-r--r-- | src/gui/skill.cpp | 5 | ||||
-rw-r--r-- | src/gui/status.cpp | 8 | ||||
-rw-r--r-- | src/gui/statuswindow.cpp | 2 | ||||
-rw-r--r-- | src/gui/storagewindow.cpp | 2 | ||||
-rw-r--r-- | src/gui/widgets/avatar.cpp | 8 | ||||
-rw-r--r-- | src/gui/widgets/tab.cpp | 8 | ||||
-rw-r--r-- | src/gui/widgets/tab.h | 4 | ||||
-rw-r--r-- | src/gui/widgets/whispertab.cpp | 2 |
23 files changed, 225 insertions, 344 deletions
diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 027297a2..eca224fc 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -493,7 +493,8 @@ ChatTab *ChatWindow::addWhisperTab(const std::string &nick, bool switchTo) ChatTab *ret = mWhispers[tempNick] = new WhisperTab(nick); - mChatTabs->setSelectedTab(ret); + if (switchTo) + mChatTabs->setSelectedTab(ret); return ret; } diff --git a/src/gui/equipmentwindow.cpp b/src/gui/equipmentwindow.cpp index aa81361d..44006971 100644 --- a/src/gui/equipmentwindow.cpp +++ b/src/gui/equipmentwindow.cpp @@ -33,6 +33,9 @@ #include "item.h" #include "localplayer.h" +#include "net/inventoryhandler.h" +#include "net/net.h" + #include "resources/image.h" #include "resources/iteminfo.h" #include "resources/resourcemanager.h" @@ -176,7 +179,7 @@ void EquipmentWindow::action(const gcn::ActionEvent &event) mInventory->getItem(mEquipment->getEquipment(mSelected)) : mInventory->getItem(mEquipment->getArrows()); #endif - player_node->unequipItem(item); + Net::getInventoryHandler()->unequipItem(item); setSelected(-1); } } diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index efa5bc2e..d6cd3a84 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -92,8 +92,8 @@ InventoryWindow::InventoryWindow(int invSize): mSlotsLabel = new Label(_("Slots:")); mWeightLabel = new Label(_("Weight:")); - mSlotsBar = new ProgressBar(1.0f, 100, 20, gcn::Color(225, 200, 25)); - mWeightBar = new ProgressBar(1.0f, 100, 20, gcn::Color(0, 0, 255)); + mSlotsBar = new ProgressBar(0.0f, 100, 20, gcn::Color(225, 200, 25)); + mWeightBar = new ProgressBar(0.0f, 100, 20, gcn::Color(0, 0, 255)); place(0, 0, mWeightLabel).setPadding(3); place(1, 0, mWeightBar, 3); @@ -166,12 +166,12 @@ void InventoryWindow::action(const gcn::ActionEvent &event) if (item->isEquipment()) { if (item->isEquipped()) - player_node->unequipItem(item); + Net::getInventoryHandler()->unequipItem(item); else - player_node->equipItem(item); + Net::getInventoryHandler()->equipItem(item); } else - player_node->useItem(item); + Net::getInventoryHandler()->useItem(item); } else if (event.getId() == "drop") { diff --git a/src/gui/itemamount.cpp b/src/gui/itemamount.cpp index 393cd8bc..252daf19 100644 --- a/src/gui/itemamount.cpp +++ b/src/gui/itemamount.cpp @@ -33,7 +33,9 @@ #include "gui/widgets/icon.h" #include "item.h" -#include "localplayer.h" + +#include "net/inventoryhandler.h" +#include "net/net.h" #include "utils/gettext.h" @@ -45,10 +47,10 @@ void ItemAmountWindow::finish(Item *item, int amount, Usage usage) tradeWindow->tradeItem(item, amount); break; case ItemDrop: - player_node->dropItem(item, amount); + Net::getInventoryHandler()->dropItem(item, amount); break; case ItemSplit: - player_node->splitItem(item, amount); + Net::getInventoryHandler()->splitItem(item, amount); break; case StoreAdd: storageWindow->addStore(item, amount); diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index 4779b004..6cbdabb2 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -27,11 +27,13 @@ #include "gui/sdlinput.h" #include "gui/viewport.h" +#include "net/net.h" +#include "net/inventoryhandler.h" + #include "graphics.h" #include "inventory.h" #include "item.h" #include "itemshortcut.h" -#include "localplayer.h" #include "log.h" #include "resources/image.h" @@ -53,8 +55,8 @@ ItemContainer::ItemContainer(Inventory *inventory, bool forceQuantity): mInventory(inventory), mGridColumns(1), mGridRows(1), - mSelectedItem(NULL), - mHighlightedItem(NULL), + mSelectedIndex(-1), + mHighlightedIndex(-1), mSelectionStatus(SEL_NONE), mForceQuantity(forceQuantity), mSwapItems(false), @@ -92,8 +94,8 @@ void ItemContainer::draw(gcn::Graphics *graphics) { int itemX = i * BOX_WIDTH; int itemY = j * BOX_HEIGHT; - - Item *item = mInventory->getItem((j * mGridColumns) + i); + int itemIndex = (j * mGridColumns) + i; + Item *item = mInventory->getItem(itemIndex); if (!item || item->getId() == 0) continue; @@ -101,7 +103,7 @@ void ItemContainer::draw(gcn::Graphics *graphics) Image *image = item->getImage(); if (image) { - if (item == mSelectedItem) + if (itemIndex == mSelectedIndex) { if (mSelectionStatus == SEL_DRAGGING) { // Reposition the coords to that of the cursor. @@ -133,11 +135,10 @@ void ItemContainer::draw(gcn::Graphics *graphics) } // Draw an orange box around the selected item - if (isFocused() && mHighlightedItem) + if (isFocused() && mHighlightedIndex != -1) { - const int i = mHighlightedItem->getInvIndex(); - const int itemX = (i % mGridColumns) * BOX_WIDTH; - const int itemY = (i / mGridColumns) * BOX_HEIGHT; + const int itemX = (mHighlightedIndex % mGridColumns) * BOX_WIDTH; + const int itemY = (mHighlightedIndex / mGridColumns) * BOX_HEIGHT; g->setColor(gcn::Color(255, 128, 0)); g->drawRectangle(gcn::Rectangle(itemX, itemY, BOX_WIDTH, BOX_HEIGHT)); } @@ -145,18 +146,24 @@ void ItemContainer::draw(gcn::Graphics *graphics) void ItemContainer::selectNone() { - setSelectedItem(NULL); + setSelectedIndex(-1); + mSelectionStatus = SEL_NONE; } -void ItemContainer::setSelectedItem(Item *item) +void ItemContainer::setSelectedIndex(int newIndex) { - if (mSelectedItem != item) + if (mSelectedIndex != newIndex) { - mSelectedItem = item; + mSelectedIndex = newIndex; distributeValueChangedEvent(); } } +Item *ItemContainer::getSelectedItem() const +{ + return mInventory->getItem(mSelectedIndex); +} + void ItemContainer::distributeValueChangedEvent() { SelectionListenerIterator i, i_end; @@ -229,21 +236,20 @@ void ItemContainer::mousePressed(gcn::MouseEvent &event) chatWindow->addItemText(item->getInfo().getName()); } - if (mSelectedItem && mSelectedItem == item) + if (mSelectedIndex == index) { mSelectionStatus = SEL_DESELECTING; } else if (item && item->getId()) { - setSelectedItem(item); + setSelectedIndex(index); mSelectionStatus = SEL_SELECTING; itemShortcut->setItemSelected(item->getId()); } else { - setSelectedItem(NULL); - mSelectionStatus = SEL_NONE; + selectNone(); } } } @@ -266,8 +272,7 @@ void ItemContainer::mouseReleased(gcn::MouseEvent &event) mSelectionStatus = SEL_SELECTED; return; case SEL_DESELECTING: - setSelectedItem(NULL); - mSelectionStatus = SEL_NONE; + selectNone(); return; case SEL_DRAGGING: mSelectionStatus = SEL_SELECTED; @@ -279,12 +284,10 @@ void ItemContainer::mouseReleased(gcn::MouseEvent &event) int index = getSlotIndex(event.getX(), event.getY()); if (index == Inventory::NO_SLOT_INDEX) return; - Item *item = mInventory->getItem(index); - if (item == mSelectedItem) + if (index == mSelectedIndex || mSelectedIndex == -1) return; - player_node->moveInvItem(mSelectedItem, index); - setSelectedItem(NULL); - mSelectionStatus = SEL_NONE; + Net::getInventoryHandler()->moveItem(mSelectedIndex, index); + selectNone(); } @@ -332,49 +335,47 @@ int ItemContainer::getSlotIndex(int x, int y) const void ItemContainer::keyAction() { // If there is no highlight then return. - if (!mHighlightedItem) + if (mHighlightedIndex == -1) return; // If the highlight is on the selected item, then deselect it. - if (mHighlightedItem == mSelectedItem) + if (mHighlightedIndex == mSelectedIndex) { - setSelectedItem(NULL); - mSelectionStatus = SEL_NONE; + selectNone(); } // Check and swap items if necessary. else if (mSwapItems && - mSelectedItem && - mHighlightedItem->getId()) + mSelectedIndex != -1 && + mHighlightedIndex != -1) { - player_node->moveInvItem( - mSelectedItem, mHighlightedItem->getInvIndex()); - setSelectedItem(mHighlightedItem); + Net::getInventoryHandler()->moveItem( + mSelectedIndex, mHighlightedIndex); + setSelectedIndex(mHighlightedIndex); } // If the highlight is on an item then select it. - else if (mHighlightedItem->getId()) + else if (mHighlightedIndex != -1) { - setSelectedItem(mHighlightedItem); + setSelectedIndex(mHighlightedIndex); mSelectionStatus = SEL_SELECTED; } // If the highlight is on a blank space then move it. - else if (mSelectedItem) + else if (mSelectedIndex != -1) { - player_node->moveInvItem( - mSelectedItem, mHighlightedItem->getInvIndex()); - setSelectedItem(NULL); - mSelectionStatus = SEL_NONE; + Net::getInventoryHandler()->moveItem( + mSelectedIndex, mHighlightedIndex); + selectNone(); } } void ItemContainer::moveHighlight(Direction direction) { - if (!mHighlightedItem) + if (mHighlightedIndex == -1) { - if (mSelectedItem) { - mHighlightedItem = mSelectedItem; + if (mSelectedIndex != -1) { + mHighlightedIndex = mSelectedIndex; } else { - mHighlightedItem = mInventory->getItem(0); + mHighlightedIndex = 0; } return; } @@ -382,34 +383,34 @@ void ItemContainer::moveHighlight(Direction direction) switch (direction) { case Left: - if (mHighlightedItem->getInvIndex() % mGridColumns == 0) + if (mHighlightedIndex % mGridColumns == 0) { - mHighlightedItem += mGridColumns; + mHighlightedIndex += mGridColumns; } - mHighlightedItem--; + mHighlightedIndex--; break; case Right: - if ((mHighlightedItem->getInvIndex() % mGridColumns) == + if ((mHighlightedIndex % mGridColumns) == (mGridColumns - 1)) { - mHighlightedItem -= mGridColumns; + mHighlightedIndex -= mGridColumns; } - mHighlightedItem++; + mHighlightedIndex++; break; case Up: - if (mHighlightedItem->getInvIndex() / mGridColumns == 0) + if (mHighlightedIndex / mGridColumns == 0) { - mHighlightedItem += (mGridColumns * mGridRows); + mHighlightedIndex += (mGridColumns * mGridRows); } - mHighlightedItem -= mGridColumns; + mHighlightedIndex -= mGridColumns; break; case Down: - if ((mHighlightedItem->getInvIndex() / mGridColumns) == + if ((mHighlightedIndex / mGridColumns) == (mGridRows - 1)) { - mHighlightedItem -= (mGridColumns * mGridRows); + mHighlightedIndex -= (mGridColumns * mGridRows); } - mHighlightedItem += mGridColumns; + mHighlightedIndex += mGridColumns; break; } } diff --git a/src/gui/itemcontainer.h b/src/gui/itemcontainer.h index bc7caf5d..f446a647 100644 --- a/src/gui/itemcontainer.h +++ b/src/gui/itemcontainer.h @@ -86,8 +86,7 @@ class ItemContainer : public gcn::Widget, /** * Returns the selected item. */ - Item *getSelectedItem() const - { return mSelectedItem; } + Item *getSelectedItem() const; /** * Sets selected item to NULL. @@ -145,7 +144,7 @@ class ItemContainer : public gcn::Widget, /** * Sets the currently selected item. */ - void setSelectedItem(Item *item); + void setSelectedIndex(int index); /** * Find the current item index by the most recently used item ID @@ -174,7 +173,7 @@ class ItemContainer : public gcn::Widget, Inventory *mInventory; int mGridColumns, mGridRows; Image *mSelImg; - Item *mSelectedItem, *mHighlightedItem; + int mSelectedIndex, mHighlightedIndex; SelectionState mSelectionStatus; bool mForceQuantity; bool mSwapItems; diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp index 3dab63a3..a5bdc59d 100644 --- a/src/gui/minimap.cpp +++ b/src/gui/minimap.cpp @@ -31,7 +31,6 @@ #include "player.h" #include "gui/palette.h" -#include "gui/partywindow.h" #include "resources/image.h" #include "resources/resourcemanager.h" @@ -56,13 +55,13 @@ Minimap::Minimap(): setResizable(false); setDefaultVisible(true); - setSaveVisible(false); + setSaveVisible(true); setStickyButton(true); setSticky(false); loadWindowState(); - setVisible(mShow); + setVisible(mShow, isSticky()); } Minimap::~Minimap() @@ -94,9 +93,6 @@ void Minimap::setMap(Map *map) ResourceManager *resman = ResourceManager::getInstance(); mMapImage = resman->getImage(map->getProperty("minimap")); - if (!mShow) - return; - if (mMapImage) { const int offsetX = 2 * getPadding(); @@ -120,17 +116,19 @@ void Minimap::setMap(Map *map) setDefaultSize(getX(), getY(), getWidth(), getHeight()); resetToDefaultSize(); - setVisible(true); + if (mShow) + setVisible(true); } else { - setVisible(false); + if (!isSticky()) + setVisible(false); } } void Minimap::toggle() { - setVisible(!mShow, isSticky()); + setVisible(!isVisible(), isSticky()); mShow = isVisible(); } @@ -183,6 +181,8 @@ void Minimap::draw(gcn::Graphics *graphics) { case Being::PLAYER: { + const Player *player = static_cast<const Player*>(being); + Palette::ColorType type = Palette::PC; if (being == player_node) @@ -190,14 +190,15 @@ void Minimap::draw(gcn::Graphics *graphics) type = Palette::SELF; dotSize = 3; } - else if (partyWindow->findMember(being->getId())) + else if (player->isGM()) + { + type = Palette::GM_NAME; + } + else if (player->isInParty()) { type = Palette::PARTY; } - if (static_cast<const Player*>(being)->isGM()) - type = Palette::GM_NAME; - graphics->setColor(guiPalette->getColor(type)); break; } diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp index b4bc29e9..65d2391d 100644 --- a/src/gui/ministatus.cpp +++ b/src/gui/ministatus.cpp @@ -36,10 +36,10 @@ MiniStatusWindow::MiniStatusWindow(): Popup("MiniStatus") { - mHpBar = new ProgressBar(1.0f, 100, 20, gcn::Color(0, 171, 34)); + mHpBar = new ProgressBar(0.0f, 100, 20, gcn::Color(0, 171, 34)); #ifdef EATHENA_SUPPORT - mMpBar = new ProgressBar(1.0f, 100, 20, gcn::Color(26, 102, 230)); - mXpBar = new ProgressBar(1.0f, 100, 20, gcn::Color(143, 192, 211)); + mMpBar = new ProgressBar(0.0f, 100, 20, gcn::Color(26, 102, 230)); + mXpBar = new ProgressBar(0.0f, 100, 20, gcn::Color(143, 192, 211)); #endif mHpBar->setPosition(0, 3); diff --git a/src/gui/partywindow.cpp b/src/gui/partywindow.cpp index dbd8f3ef..317811ee 100644 --- a/src/gui/partywindow.cpp +++ b/src/gui/partywindow.cpp @@ -23,6 +23,9 @@ #include "gui/widgets/chattab.h" +#include "beingmanager.h" +#include "player.h" + #include "net/net.h" #include "net/partyhandler.h" @@ -46,15 +49,15 @@ PartyWindow::PartyWindow() : { setWindowName("Party"); setVisible(false); + setSaveVisible(true); setResizable(true); setSaveVisible(true); setCloseButton(true); - setMinWidth(200); + setMinWidth(212); setMinHeight(200); - setDefaultSize(590, 200, 200, 200); + setDefaultSize(590, 200, 212, 200); loadWindowState(); - setVisible(false); // Do not start out visible } PartyWindow::~PartyWindow() @@ -62,6 +65,16 @@ PartyWindow::~PartyWindow() delete_all(mMembers); } +void PartyWindow::setPartyName(const std::string &name) +{ + setCaption(strprintf(_("Party (%s)"), name.c_str())); +} + +void PartyWindow::clearPartyName() +{ + setCaption(_("Party")); +} + PartyMember *PartyWindow::findMember(int id) const { PartyList::const_iterator it = mMembers.find(id); @@ -105,18 +118,15 @@ int PartyWindow::findMember(const std::string &name) const void PartyWindow::updateMember(int id, const std::string &memberName, bool leader, bool online) { - PartyMember *player = findOrCreateMember(id); - player->name = memberName; - player->leader = leader; - player->online = online; - player->avatar->setName(memberName); - player->avatar->setOnline(online); - - // show the window - if (mMembers.size() > 0) - { - setVisible(true); - } + PartyMember *member = findOrCreateMember(id); + member->name = memberName; + member->leader = leader; + member->online = online; + member->avatar->setName(memberName); + member->avatar->setOnline(online); + + if (Player *player = dynamic_cast<Player*>(beingManager->findBeing(id))) + player->setInParty(true); } void PartyWindow::updateMemberHP(int id, int hp, int maxhp) @@ -130,11 +140,8 @@ void PartyWindow::removeMember(int id) { mMembers.erase(id); - // if no-one left, remove the party window - if (mMembers.size() < 1) - { - setVisible(false); - } + if (Player *player = dynamic_cast<Player*>(beingManager->findBeing(id))) + player->setInParty(false); } void PartyWindow::removeMember(const std::string &name) @@ -201,10 +208,19 @@ void PartyWindow::action(const gcn::ActionEvent &event) } } +void clearMembersSub(const std::pair<int, PartyMember*> &p) +{ + Player *player = dynamic_cast<Player*>(beingManager->findBeing(p.first)); + if (player) + player->setInParty(false); +} + void PartyWindow::clearMembers() { clearLayout(); + std::for_each(mMembers.begin(), mMembers.end(), clearMembersSub); + delete_all(mMembers); mMembers.clear(); } diff --git a/src/gui/partywindow.h b/src/gui/partywindow.h index 65e8d772..8cea500f 100644 --- a/src/gui/partywindow.h +++ b/src/gui/partywindow.h @@ -65,6 +65,10 @@ class PartyWindow : public Window, gcn::ActionListener */ ~PartyWindow(); + void setPartyName(const std::string &name); + + void clearPartyName(); + /** * Find a party member based on ID. Returns NULL if not found. */ diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index 46a33d6c..2dcf2628 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -40,6 +40,8 @@ #include "net/adminhandler.h" #include "net/inventoryhandler.h" #include "net/net.h" +#include "net/partyhandler.h" +#include "net/tradehandler.h" #include "resources/itemdb.h" #include "resources/iteminfo.h" @@ -182,7 +184,7 @@ void PopupMenu::handleLink(const std::string &link) being && being->getType() == Being::PLAYER) { - player_node->trade(being); + Net::getTradeHandler()->request(being); tradePartnerName = being->getName(); } #ifdef EATHENA_SUPPORT @@ -261,13 +263,13 @@ void PopupMenu::handleLink(const std::string &link) if (mItem->isEquipment()) { if (mItem->isEquipped()) - player_node->unequipItem(mItem); + Net::getInventoryHandler()->unequipItem(mItem); else - player_node->equipItem(mItem); + Net::getInventoryHandler()->equipItem(mItem); } else { - player_node->useItem(mItem); + Net::getInventoryHandler()->useItem(mItem); } } @@ -302,7 +304,7 @@ void PopupMenu::handleLink(const std::string &link) else if (link == "party" && being && being->getType() == Being::PLAYER) { - player_node->inviteToParty(dynamic_cast<Player*>(being)); + Net::getPartyHandler()->invite(dynamic_cast<Player*>(being)); } else if (link == "name" && being) diff --git a/src/gui/setup_players.cpp b/src/gui/setup_players.cpp index c5dffe3d..f0d88a30 100644 --- a/src/gui/setup_players.cpp +++ b/src/gui/setup_players.cpp @@ -221,8 +221,6 @@ Setup_Players::Setup_Players(): mPlayerTable(new GuiTable(mPlayerTableModel)), mPlayerTitleTable(new GuiTable(mPlayerTableTitleModel)), mPlayerScrollArea(new ScrollArea(mPlayerTable)), - mPersistIgnores(new CheckBox(_("Save player list"), - player_relations.getPersistIgnores())), mDefaultTrading(new CheckBox(_("Allow trading"), player_relations.getDefault() & PlayerRelation::TRADE)), mDefaultWhisper(new CheckBox(_("Allow whispers"), @@ -288,9 +286,8 @@ Setup_Players::Setup_Players(): place(0, 6, mWhisperTabCheckBox); place(2, 5, ignore_action_label); place(2, 6, mIgnoreActionChoicesBox, 2).setPadding(2); - place(2, 7, mPersistIgnores); - place(2, 8, mDefaultTrading); - place(2, 9, mDefaultWhisper); + place(2, 7, mDefaultTrading); + place(2, 8, mDefaultWhisper); player_relations.addListener(this); @@ -326,7 +323,6 @@ void Setup_Players::reset() void Setup_Players::apply() { - player_relations.setPersistIgnores(mPersistIgnores->isSelected()); player_relations.store(); unsigned int old_default_relations = player_relations.getDefault() & diff --git a/src/gui/setup_players.h b/src/gui/setup_players.h index d7507d19..3096cab9 100644 --- a/src/gui/setup_players.h +++ b/src/gui/setup_players.h @@ -58,7 +58,6 @@ private: GuiTable *mPlayerTitleTable; gcn::ScrollArea *mPlayerScrollArea; - gcn::CheckBox *mPersistIgnores; gcn::CheckBox *mDefaultTrading; gcn::CheckBox *mDefaultWhisper; diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp index bbbeb6d7..9add3251 100644 --- a/src/gui/setup_video.cpp +++ b/src/gui/setup_video.cpp @@ -109,10 +109,10 @@ ModeListModel::ModeListModel() const char *SIZE_NAME[4] = { - N_("Tiny"), - N_("Small"), - N_("Medium"), - N_("Large"), + N_("Tiny"), + N_("Small"), + N_("Medium"), + N_("Large"), }; class FontSizeChoiceListModel : public gcn::ListModel @@ -134,6 +134,41 @@ public: } }; +static const char *speechModeToString(Being::Speech mode) +{ + switch (mode) + { + case Being::NO_SPEECH: return _("No text"); + case Being::TEXT_OVERHEAD: return _("Text"); + case Being::NO_NAME_IN_BUBBLE: return _("Bubbles, no names"); + case Being::NAME_IN_BUBBLE: return _("Bubbles with names"); + } + return ""; +} + +static const char *overlayDetailToString(int detail) +{ + switch (detail) + { + case 0: return _("off"); + case 1: return _("low"); + case 2: return _("high"); + } + return ""; +} + +static const char *particleDetailToString(int detail) +{ + switch (detail) + { + case 0: return _("low"); + case 1: return _("medium"); + case 2: return _("high"); + case 3: return _("max"); + } + return ""; +} + Setup_Video::Setup_Video(): mFullScreenEnabled(config.getValue("screen", false)), mOpenGLEnabled(config.getValue("opengl", false)), @@ -145,7 +180,8 @@ Setup_Video::Setup_Video(): mPickupParticleEnabled(config.getValue("showpickupparticle", false)), mOpacity(config.getValue("guialpha", 0.8)), mFps((int) config.getValue("fpslimit", 60)), - mSpeechMode((int) config.getValue("speech", Being::TEXT_OVERHEAD)), + mSpeechMode(static_cast<Being::Speech>( + config.getValue("speech", Being::TEXT_OVERHEAD))), mModeListModel(new ModeListModel), mModeList(new ListBox(mModeListModel)), mFsCheckBox(new CheckBox(_("Full screen"), mFullScreenEnabled)), @@ -167,12 +203,6 @@ Setup_Video::Setup_Video(): mFpsCheckBox(new CheckBox(_("FPS Limit:"))), mFpsSlider(new Slider(10, 120)), mFpsField(new TextField), - mOriginalScrollLaziness((int) config.getValue("ScrollLaziness", 16)), - mScrollLazinessSlider(new Slider(1, 64)), - mScrollLazinessField(new TextField), - mOriginalScrollRadius((int) config.getValue("ScrollRadius", 0)), - mScrollRadiusSlider(new Slider(0, 128)), - mScrollRadiusField(new TextField), mOverlayDetail((int) config.getValue("OverlayDetail", 2)), mOverlayDetailSlider(new Slider(0, 2)), mOverlayDetailField(new Label("")), @@ -188,8 +218,6 @@ Setup_Video::Setup_Video(): speechLabel = new Label(_("Overhead text")); alphaLabel = new Label(_("Gui opacity")); - scrollRadiusLabel = new Label(_("Scroll radius")); - scrollLazinessLabel = new Label(_("Scroll laziness")); overlayDetailLabel = new Label(_("Ambient FX")); particleDetailLabel = new Label(_("Particle Detail")); fontSizeLabel = new Label(_("Font size")); @@ -223,10 +251,6 @@ Setup_Video::Setup_Video(): mFpsCheckBox->setActionEventId("fpslimitcheckbox"); mSpeechSlider->setActionEventId("speech"); mFpsSlider->setActionEventId("fpslimitslider"); - mScrollRadiusSlider->setActionEventId("scrollradiusslider"); - mScrollRadiusField->setActionEventId("scrollradiusfield"); - mScrollLazinessSlider->setActionEventId("scrolllazinessslider"); - mScrollLazinessField->setActionEventId("scrolllazinessfield"); mOverlayDetailSlider->setActionEventId("overlaydetailslider"); mOverlayDetailField->setActionEventId("overlaydetailfield"); mParticleDetailSlider->setActionEventId("particledetailslider"); @@ -243,98 +267,28 @@ Setup_Video::Setup_Video(): mFpsCheckBox->addActionListener(this); mSpeechSlider->addActionListener(this); mFpsSlider->addActionListener(this); - mFpsField->addKeyListener(this); - mScrollRadiusSlider->addActionListener(this); - mScrollRadiusField->addKeyListener(this); - mScrollLazinessSlider->addActionListener(this); - mScrollLazinessField->addKeyListener(this); mOverlayDetailSlider->addActionListener(this); mOverlayDetailField->addKeyListener(this); mParticleDetailSlider->addActionListener(this); mParticleDetailField->addKeyListener(this); - mScrollRadiusField->setText(toString(mOriginalScrollRadius)); - mScrollRadiusSlider->setValue(mOriginalScrollRadius); - - mScrollLazinessField->setText(toString(mOriginalScrollLaziness)); - mScrollLazinessSlider->setValue(mOriginalScrollLaziness); - - switch (mSpeechMode) - { - case 0: - mSpeechLabel->setCaption(_("No text")); - break; - case 1: - mSpeechLabel->setCaption(_("Text")); - break; - case 2: - mSpeechLabel->setCaption(_("Bubbles, no names")); - break; - case 3: - mSpeechLabel->setCaption(_("Bubbles with names")); - break; - } + mSpeechLabel->setCaption(speechModeToString(mSpeechMode)); mSpeechSlider->setValue(mSpeechMode); - switch (mOverlayDetail) - { - case 0: - mOverlayDetailField->setCaption(_("off")); - break; - case 1: - mOverlayDetailField->setCaption(_("low")); - break; - case 2: - mOverlayDetailField->setCaption(_("high")); - break; - } + mOverlayDetailField->setCaption(overlayDetailToString(mOverlayDetail)); mOverlayDetailSlider->setValue(mOverlayDetail); - switch (mParticleDetail) - { - case 0: - mParticleDetailField->setCaption(_("low")); - break; - case 1: - mParticleDetailField->setCaption(_("medium")); - break; - case 2: - mParticleDetailField->setCaption(_("high")); - break; - case 3: - mParticleDetailField->setCaption(_("max")); - break; - } + mParticleDetailField->setCaption(particleDetailToString(mParticleDetail)); mParticleDetailSlider->setValue(mParticleDetail); - int fontSizeSelected; - switch (mFontSize) - { - case 10: - fontSizeSelected = 0; - break; - case 11: - fontSizeSelected = 1; - break; - case 12: - fontSizeSelected = 2; - break; - case 13: - fontSizeSelected = 3; - break; - default: - fontSizeSelected = 1; - break; - } - - mFontSizeDropDown->setSelected(fontSizeSelected); + mFontSizeDropDown->setSelected(mFontSize - 10); mFontSizeDropDown->adjustHeight(); // Do the layout LayoutHelper h(this); ContainerPlacer place = h.getPlacer(0, 0); - place(0, 0, scrollArea, 1, 6).setPadding(2); + place(0, 0, scrollArea, 1, 5).setPadding(2); place(1, 0, mFsCheckBox, 2); place(3, 0, mOpenGLCheckBox, 1); @@ -360,25 +314,17 @@ Setup_Video::Setup_Video(): place(1, 8, mFpsCheckBox).setPadding(3); place(2, 8, mFpsField).setPadding(1); - place(0, 9, mScrollRadiusSlider); - place(1, 9, scrollRadiusLabel); - place(2, 9, mScrollRadiusField).setPadding(1); + place(0, 9, mSpeechSlider); + place(1, 9, speechLabel); + place(2, 9, mSpeechLabel, 3).setPadding(2); - place(0, 10, mScrollLazinessSlider); - place(1, 10, scrollLazinessLabel); - place(2, 10, mScrollLazinessField).setPadding(1); + place(0, 10, mOverlayDetailSlider); + place(1, 10, overlayDetailLabel); + place(2, 10, mOverlayDetailField, 3).setPadding(2); - place(0, 11, mSpeechSlider); - place(1, 11, speechLabel); - place(2, 11, mSpeechLabel, 3).setPadding(2); - - place(0, 12, mOverlayDetailSlider); - place(1, 12, overlayDetailLabel); - place(2, 12, mOverlayDetailField, 3).setPadding(2); - - place(0, 13, mParticleDetailSlider); - place(1, 13, particleDetailLabel); - place(2, 13, mParticleDetailField, 3).setPadding(2); + place(0, 11, mParticleDetailSlider); + place(1, 11, particleDetailLabel); + place(2, 11, mParticleDetailField, 3).setPadding(2); setDimension(gcn::Rectangle(0, 0, 325, 300)); } @@ -446,7 +392,8 @@ void Setup_Video::apply() mVisibleNamesEnabled = config.getValue("visiblenames", true); mParticleEffectsEnabled = config.getValue("particleeffects", true); mNameEnabled = config.getValue("showownname", false); - mSpeechMode = (int) config.getValue("speech", Being::TEXT_OVERHEAD); + mSpeechMode = static_cast<Being::Speech>( + config.getValue("speech", Being::TEXT_OVERHEAD)); mOpacity = config.getValue("guialpha", 0.8); mOverlayDetail = (int) config.getValue("OverlayDetail", 2); mOpenGLEnabled = config.getValue("opengl", false); @@ -454,26 +401,6 @@ void Setup_Video::apply() mPickupParticleEnabled = config.getValue("showpickupparticle", false); } -int Setup_Video::updateSlider(gcn::Slider *slider, gcn::TextField *field, - const std::string &configName) -{ - int value; - std::stringstream temp(field->getText()); - temp >> value; - if (value < slider->getScaleStart()) - { - value = (int) slider->getScaleStart(); - } - else if (value > slider->getScaleEnd()) - { - value = (int) slider->getScaleEnd(); - } - field->setText(toString(value)); - slider->setValue(value); - config.setValue(configName, value); - return value; -} - void Setup_Video::cancel() { mFsCheckBox->setSelected(mFullScreenEnabled); @@ -487,11 +414,6 @@ void Setup_Video::cancel() mOverlayDetailSlider->setValue(mOverlayDetail); mParticleDetailSlider->setValue(mParticleDetail); - mScrollRadiusField->setText(toString(mOriginalScrollRadius)); - mScrollLazinessField->setText(toString(mOriginalScrollLaziness)); - updateSlider(mScrollRadiusSlider, mScrollRadiusField, "ScrollRadius"); - updateSlider(mScrollLazinessSlider, mScrollLazinessField, "ScrollLaziness"); - config.setValue("screen", mFullScreenEnabled); config.setValue("customcursor", mCustomCursorEnabled); config.setValue("visiblenames", mVisibleNamesEnabled); @@ -557,22 +479,9 @@ void Setup_Video::action(const gcn::ActionEvent &event) } else if (event.getId() == "speech") { - int val = (int) mSpeechSlider->getValue(); - switch (val) - { - case 0: - mSpeechLabel->setCaption(_("No text")); - break; - case 1: - mSpeechLabel->setCaption(_("Text")); - break; - case 2: - mSpeechLabel->setCaption(_("Bubbles, no names")); - break; - case 3: - mSpeechLabel->setCaption(_("Bubbles with names")); - break; - } + Being::Speech val = + static_cast<Being::Speech>(mSpeechSlider->getValue()); + mSpeechLabel->setCaption(speechModeToString(val)); mSpeechSlider->setValue(val); config.setValue("speech", val); } @@ -589,53 +498,16 @@ void Setup_Video::action(const gcn::ActionEvent &event) mFps = (int) mFpsSlider->getValue(); mFpsField->setText(toString(mFps)); } - else if (event.getId() == "scrollradiusslider") - { - int val = (int) mScrollRadiusSlider->getValue(); - mScrollRadiusField->setText(toString(val)); - config.setValue("ScrollRadius", val); - } - else if (event.getId() == "scrolllazinessslider") - { - int val = (int) mScrollLazinessSlider->getValue(); - mScrollLazinessField->setText(toString(val)); - config.setValue("ScrollLaziness", val); - } else if (event.getId() == "overlaydetailslider") { int val = (int) mOverlayDetailSlider->getValue(); - switch (val) - { - case 0: - mOverlayDetailField->setCaption(_("off")); - break; - case 1: - mOverlayDetailField->setCaption(_("low")); - break; - case 2: - mOverlayDetailField->setCaption(_("high")); - break; - } + mOverlayDetailField->setCaption(overlayDetailToString(val)); config.setValue("OverlayDetail", val); } else if (event.getId() == "particledetailslider") { int val = (int) mParticleDetailSlider->getValue(); - switch (val) - { - case 0: - mParticleDetailField->setCaption(_("low")); - break; - case 1: - mParticleDetailField->setCaption(_("medium")); - break; - case 2: - mParticleDetailField->setCaption(_("high")); - break; - case 3: - mParticleDetailField->setCaption(_("max")); - break; - } + mParticleDetailField->setCaption(particleDetailToString(val)); config.setValue("particleEmitterSkip", 3 - val); Particle::emitterSkip = 4 - val; } @@ -678,6 +550,4 @@ void Setup_Video::keyPressed(gcn::KeyEvent &event) mFpsField->setText(""); mFps = 0; } - updateSlider(mScrollRadiusSlider, mScrollRadiusField, "ScrollRadius"); - updateSlider(mScrollLazinessSlider, mScrollLazinessField, "ScrollLaziness"); } diff --git a/src/gui/setup_video.h b/src/gui/setup_video.h index 9b9cbfde..01b9cd4f 100644 --- a/src/gui/setup_video.h +++ b/src/gui/setup_video.h @@ -22,6 +22,7 @@ #ifndef GUI_SETUP_VIDEO_H #define GUI_SETUP_VIDEO_H +#include "being.h" #include "guichanfwd.h" #include "gui/setuptab.h" @@ -44,9 +45,6 @@ class Setup_Video : public SetupTab, public gcn::ActionListener, void keyPressed(gcn::KeyEvent &event); private: - int updateSlider(gcn::Slider *slider, gcn::TextField *field, - const std::string &configName); - bool mFullScreenEnabled; bool mOpenGLEnabled; bool mCustomCursorEnabled; @@ -57,7 +55,7 @@ class Setup_Video : public SetupTab, public gcn::ActionListener, bool mPickupParticleEnabled; double mOpacity; int mFps; - int mSpeechMode; + Being::Speech mSpeechMode; class ModeListModel *mModeListModel; @@ -88,14 +86,6 @@ class Setup_Video : public SetupTab, public gcn::ActionListener, gcn::Slider *mFpsSlider; gcn::TextField *mFpsField; - int mOriginalScrollLaziness; - gcn::Slider *mScrollLazinessSlider; - gcn::TextField *mScrollLazinessField; - - int mOriginalScrollRadius; - gcn::Slider *mScrollRadiusSlider; - gcn::TextField *mScrollRadiusField; - int mOverlayDetail; gcn::Slider *mOverlayDetailSlider; gcn::Label *mOverlayDetailField; diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index b6f6f124..3a4fb75c 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -33,6 +33,9 @@ #include "localplayer.h" #include "log.h" +#include "net/net.h" +#include "net/skillhandler.h" + #include "utils/dtor.h" #include "utils/gettext.h" #include "utils/stringutils.h" @@ -173,7 +176,7 @@ void SkillDialog::action(const gcn::ActionEvent &event) // Increment skill int selectedSkill = mTable->getSelectedRow(); if (selectedSkill >= 0) - player_node->raiseSkill(mSkillList[selectedSkill]->id); + Net::getSkillHandler()->up(mSkillList[selectedSkill]->id); } else if (event.getId() == "skill" && mTable->getSelectedRow() > -1) { diff --git a/src/gui/status.cpp b/src/gui/status.cpp index c9681fa9..7fc42fdb 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -58,16 +58,16 @@ StatusWindow::StatusWindow(LocalPlayer *player): Units::formatCurrency(mCurrency).c_str())); mHpLabel = new Label(_("HP:")); - mHpBar = new ProgressBar(1.0f, 80, 15, gcn::Color(0, 171, 34)); + mHpBar = new ProgressBar(0.0f, 80, 15, gcn::Color(0, 171, 34)); mXpLabel = new Label(_("Exp:")); - mXpBar = new ProgressBar(1.0f, 80, 15, gcn::Color(143, 192, 211)); + mXpBar = new ProgressBar(0.0f, 80, 15, gcn::Color(143, 192, 211)); mMpLabel = new Label(_("MP:")); - mMpBar = new ProgressBar(1.0f, 80, 15, gcn::Color(26, 102, 230)); + mMpBar = new ProgressBar(0.0f, 80, 15, gcn::Color(26, 102, 230)); mJobLabel = new Label(_("Job:")); - mJobBar = new ProgressBar(1.0f, 80, 15, gcn::Color(220, 135, 203)); + mJobBar = new ProgressBar(0.0f, 80, 15, gcn::Color(220, 135, 203)); // ---------------------- // Stats Part diff --git a/src/gui/statuswindow.cpp b/src/gui/statuswindow.cpp index e76c19a7..edbf387b 100644 --- a/src/gui/statuswindow.cpp +++ b/src/gui/statuswindow.cpp @@ -50,7 +50,7 @@ StatusWindow::StatusWindow(LocalPlayer *player): mMoneyLabel = new Label("Money:"); mHpLabel = new Label("HP:"); - mHpBar = new ProgressBar(1.0f, 80, 15, gcn::Color(0, 171, 34)); + mHpBar = new ProgressBar(0.0f, 80, 15, gcn::Color(0, 171, 34)); mHpValueLabel = new Label; int y = 3; diff --git a/src/gui/storagewindow.cpp b/src/gui/storagewindow.cpp index 6502399a..593a49a3 100644 --- a/src/gui/storagewindow.cpp +++ b/src/gui/storagewindow.cpp @@ -77,7 +77,7 @@ StorageWindow::StorageWindow(int invSize): mSlotsLabel = new Label(_("Slots: ")); - mSlotsBar = new ProgressBar(1.0f, 100, 20, gcn::Color(225, 200, 25)); + mSlotsBar = new ProgressBar(0.0f, 100, 20, gcn::Color(225, 200, 25)); mSlotsBar->setText(strprintf("%d/%d", mUsedSlots, mMaxSlots)); mSlotsBar->setProgress((float) mUsedSlots / mMaxSlots); diff --git a/src/gui/widgets/avatar.cpp b/src/gui/widgets/avatar.cpp index 116640d8..b120c51f 100644 --- a/src/gui/widgets/avatar.cpp +++ b/src/gui/widgets/avatar.cpp @@ -104,13 +104,7 @@ void Avatar::updateAvatarLabel() std::ostringstream ss; ss << mName; - if (mName == player_node->getName()) - { - mHp = player_node->getHp(); - mMaxHp = player_node->getMaxHp(); - } - - if (mMaxHp != 0) + if (mName != player_node->getName() && mMaxHp != 0) ss << " (" << mHp << "/" << mMaxHp << ")"; mLabel->setCaption(ss.str()); diff --git a/src/gui/widgets/tab.cpp b/src/gui/widgets/tab.cpp index c98ecee4..f2231fca 100644 --- a/src/gui/widgets/tab.cpp +++ b/src/gui/widgets/tab.cpp @@ -63,7 +63,7 @@ static TabData const data[TAB_COUNT] = { ImageRect Tab::tabImg[TAB_COUNT]; Tab::Tab() : gcn::Tab(), - mTabColor(guiPalette->getColor(Palette::TEXT)) + mTabColor(&guiPalette->getColor(Palette::TEXT)) { init(); } @@ -127,7 +127,7 @@ void Tab::draw(gcn::Graphics *graphics) { mode = TAB_SELECTED; // if tab is selected, it doesnt need to highlight activity - mLabel->setForegroundColor(mTabColor); + mLabel->setForegroundColor(*mTabColor); mHighlighted = false; } else if (mHighlighted) @@ -137,7 +137,7 @@ void Tab::draw(gcn::Graphics *graphics) } else { - mLabel->setForegroundColor(mTabColor); + mLabel->setForegroundColor(*mTabColor); } } @@ -163,7 +163,7 @@ void Tab::draw(gcn::Graphics *graphics) drawChildren(graphics); } -void Tab::setTabColor(const gcn::Color &color) +void Tab::setTabColor(const gcn::Color *color) { mTabColor = color; } diff --git a/src/gui/widgets/tab.h b/src/gui/widgets/tab.h index 134d5591..eea2586c 100644 --- a/src/gui/widgets/tab.h +++ b/src/gui/widgets/tab.h @@ -45,7 +45,7 @@ class Tab : public gcn::Tab /** * Set the normal color fo the tab's text. */ - void setTabColor(const gcn::Color &color); + void setTabColor(const gcn::Color *color); /** * Set tab highlighted @@ -64,7 +64,7 @@ class Tab : public gcn::Tab static int mInstances; /**< Number of tab instances */ static float mAlpha; - gcn::Color mTabColor; + const gcn::Color *mTabColor; bool mHighlighted; }; diff --git a/src/gui/widgets/whispertab.cpp b/src/gui/widgets/whispertab.cpp index 17ee3fc4..23325108 100644 --- a/src/gui/widgets/whispertab.cpp +++ b/src/gui/widgets/whispertab.cpp @@ -35,7 +35,7 @@ WhisperTab::WhisperTab(const std::string &nick) : ChatTab(nick), mNick(nick) { - setTabColor(guiPalette->getColor(Palette::WHISPER)); + setTabColor(&guiPalette->getColor(Palette::WHISPER)); } WhisperTab::~WhisperTab() |