summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/chat.cpp3
-rw-r--r--src/gui/equipmentwindow.cpp5
-rw-r--r--src/gui/inventorywindow.cpp10
-rw-r--r--src/gui/itemamount.cpp8
-rw-r--r--src/gui/itemcontainer.cpp115
-rw-r--r--src/gui/itemcontainer.h7
-rw-r--r--src/gui/minimap.cpp27
-rw-r--r--src/gui/ministatus.cpp6
-rw-r--r--src/gui/partywindow.cpp56
-rw-r--r--src/gui/partywindow.h4
-rw-r--r--src/gui/popupmenu.cpp12
-rw-r--r--src/gui/setup_players.cpp8
-rw-r--r--src/gui/setup_players.h1
-rw-r--r--src/gui/setup_video.cpp254
-rw-r--r--src/gui/setup_video.h14
-rw-r--r--src/gui/skill.cpp5
-rw-r--r--src/gui/status.cpp8
-rw-r--r--src/gui/statuswindow.cpp2
-rw-r--r--src/gui/storagewindow.cpp2
-rw-r--r--src/gui/widgets/avatar.cpp8
-rw-r--r--src/gui/widgets/tab.cpp8
-rw-r--r--src/gui/widgets/tab.h4
-rw-r--r--src/gui/widgets/whispertab.cpp2
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()