diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/ea/generalhandler.cpp | 21 | ||||
-rw-r--r-- | src/net/ea/gui/partytab.cpp | 2 | ||||
-rw-r--r-- | src/net/ea/inventoryhandler.cpp | 4 | ||||
-rw-r--r-- | src/net/ea/partyhandler.cpp | 15 | ||||
-rw-r--r-- | src/net/ea/playerhandler.cpp | 2 | ||||
-rw-r--r-- | src/net/ea/skillhandler.cpp | 4 | ||||
-rw-r--r-- | src/net/ea/tradehandler.cpp | 12 | ||||
-rw-r--r-- | src/net/tmwserv/generalhandler.cpp | 23 | ||||
-rw-r--r-- | src/net/tmwserv/inventoryhandler.cpp | 3 | ||||
-rw-r--r-- | src/net/tmwserv/partyhandler.cpp | 2 | ||||
-rw-r--r-- | src/net/tmwserv/playerhandler.cpp | 3 | ||||
-rw-r--r-- | src/net/tmwserv/tradehandler.cpp | 2 |
12 files changed, 48 insertions, 45 deletions
diff --git a/src/net/ea/generalhandler.cpp b/src/net/ea/generalhandler.cpp index b8d75671..404bff69 100644 --- a/src/net/ea/generalhandler.cpp +++ b/src/net/ea/generalhandler.cpp @@ -87,20 +87,13 @@ GeneralHandler::GeneralHandler(): handledMessages = _messages; generalHandler = this; - std::list<ItemDB::Stat*> stats; - ItemDB::Stat stat; - stat.tag = "str"; stat.format = N_("Strength: %d"); - stats.push_back(&stat); - stat.tag = "agi"; stat.format = N_("Agility: %d"); - stats.push_back(&stat); - stat.tag = "vit"; stat.format = N_("Vitality: %d"); - stats.push_back(&stat); - stat.tag = "int"; stat.format = N_("Intelligence: %d"); - stats.push_back(&stat); - stat.tag = "dex"; stat.format = N_("Dexterity: %d"); - stats.push_back(&stat); - stat.tag = "luck"; stat.format = N_("Luck: %d"); - stats.push_back(&stat); + std::list<ItemDB::Stat> stats; + stats.push_back(ItemDB::Stat("str", N_("Strength %+d"))); + stats.push_back(ItemDB::Stat("agi", N_("Agility %+d"))); + stats.push_back(ItemDB::Stat("vit", N_("Vitality %+d"))); + stats.push_back(ItemDB::Stat("int", N_("Intelligence %+d"))); + stats.push_back(ItemDB::Stat("dex", N_("Dexterity %+d"))); + stats.push_back(ItemDB::Stat("luck", N_("Luck %+d"))); ItemDB::setStatsList(stats); } diff --git a/src/net/ea/gui/partytab.cpp b/src/net/ea/gui/partytab.cpp index 12ca0d8d..9b0fc8c5 100644 --- a/src/net/ea/gui/partytab.cpp +++ b/src/net/ea/gui/partytab.cpp @@ -38,7 +38,7 @@ PartyTab::PartyTab() : ChatTab(_("Party")) { - setTabColor(guiPalette->getColor(Palette::PARTY)); + setTabColor(&guiPalette->getColor(Palette::PARTY)); } PartyTab::~PartyTab() diff --git a/src/net/ea/inventoryhandler.cpp b/src/net/ea/inventoryhandler.cpp index 1c48aa6c..30c583b8 100644 --- a/src/net/ea/inventoryhandler.cpp +++ b/src/net/ea/inventoryhandler.cpp @@ -27,6 +27,7 @@ #include "net/messageout.h" #include "configuration.h" +#include "equipment.h" #include "inventory.h" #include "item.h" #include "itemshortcut.h" @@ -318,6 +319,9 @@ void InventoryHandler::unequipItem(const Item *item) MessageOut outMsg(CMSG_PLAYER_UNEQUIP); outMsg.writeInt16(item->getInvIndex() + INVENTORY_OFFSET); + + // Tidy equipment directly to avoid weapon still shown bug, for instance + player_node->mEquipment->removeEquipment(item->getInvIndex()); } void InventoryHandler::useItem(const Item *item) diff --git a/src/net/ea/partyhandler.cpp b/src/net/ea/partyhandler.cpp index e5b20a38..2f1b02ab 100644 --- a/src/net/ea/partyhandler.cpp +++ b/src/net/ea/partyhandler.cpp @@ -79,6 +79,7 @@ void PartyHandler::handleMessage(MessageIn &msg) { partyTab->chatLog(_("Party successfully created."), BY_SERVER); player_node->setInParty(true); + partyWindow->setVisible(true); } break; case SMSG_PARTY_INFO: @@ -90,6 +91,7 @@ void PartyHandler::handleMessage(MessageIn &msg) int length = msg.readInt16(); std::string party = msg.readString(24); + partyWindow->setPartyName(party); int count = (length - 28) / 46; for (int i = 0; i < count; i++) @@ -101,13 +103,7 @@ void PartyHandler::handleMessage(MessageIn &msg) bool online = msg.readInt8() == 0; partyWindow->updateMember(id, nick, leader, online); - - Being *being = beingManager->findBeing(id); - if (being) - being->setName(nick); } - - partyWindow->setVisible(true); } break; case SMSG_PARTY_INVITE_RESPONSE: @@ -230,15 +226,16 @@ void PartyHandler::handleMessage(MessageIn &msg) msg.readInt8(); // fail if (id == player_node->getId()) { - player_node->setInParty(false); partyWindow->clearMembers(); partyWindow->setVisible(false); partyTab->chatLog(_("You have left the party."), BY_SERVER); } else + { partyTab->chatLog(strprintf(_("%s has left your party."), nick.c_str()), BY_SERVER); - partyWindow->removeMember(id); + partyWindow->removeMember(id); + } break; } case SMSG_PARTY_UPDATE_HP: @@ -305,7 +302,7 @@ void PartyHandler::inviteResponse(const std::string &inviter, bool accept) MessageOut outMsg(CMSG_PARTY_INVITED); outMsg.writeInt32(player_node->getId()); outMsg.writeInt32(accept ? 1 : 0); - player_node->setInParty(player_node->getInParty() || accept); + player_node->setInParty(player_node->isInParty() || accept); } void PartyHandler::leave() diff --git a/src/net/ea/playerhandler.cpp b/src/net/ea/playerhandler.cpp index 3f8fbc09..29f0bac4 100644 --- a/src/net/ea/playerhandler.cpp +++ b/src/net/ea/playerhandler.cpp @@ -75,7 +75,7 @@ namespace { { void action(const gcn::ActionEvent &event) { - player_node->revive(); + Net::getPlayerHandler()->respawn(); deathNotice = NULL; buyDialog->setVisible(false); sellDialog->setVisible(false); diff --git a/src/net/ea/skillhandler.cpp b/src/net/ea/skillhandler.cpp index 0239a2c8..69b0fd65 100644 --- a/src/net/ea/skillhandler.cpp +++ b/src/net/ea/skillhandler.cpp @@ -26,6 +26,7 @@ #include "net/messagein.h" #include "net/messageout.h" +#include "localplayer.h" #include "log.h" #include "gui/skill.h" @@ -216,6 +217,9 @@ void SkillHandler::handleMessage(MessageIn &msg) void SkillHandler::up(int skillId) { + if (player_node->mSkillPoint <= 0) + return; + MessageOut outMsg(CMSG_SKILL_LEVELUP_REQUEST); outMsg.writeInt16(skillId); } diff --git a/src/net/ea/tradehandler.cpp b/src/net/ea/tradehandler.cpp index ee8e6733..74722332 100644 --- a/src/net/ea/tradehandler.cpp +++ b/src/net/ea/tradehandler.cpp @@ -23,6 +23,7 @@ #include "net/ea/protocol.h" +#include "net/inventoryhandler.h" #include "net/messagein.h" #include "net/messageout.h" @@ -48,7 +49,7 @@ namespace { { void action(const gcn::ActionEvent &event) { - player_node->tradeReply(event.getId() == "yes"); + Net::getTradeHandler()->respond(event.getId() == "yes"); } } listener; } @@ -91,7 +92,7 @@ void TradeHandler::handleMessage(MessageIn &msg) { if (!player_node->tradeRequestOk()) { - player_node->tradeReply(false); + Net::getTradeHandler()->respond(false); break; } @@ -104,7 +105,7 @@ void TradeHandler::handleMessage(MessageIn &msg) } else { - player_node->tradeReply(false); + Net::getTradeHandler()->respond(false); break; } break; @@ -183,7 +184,7 @@ void TradeHandler::handleMessage(MessageIn &msg) // Successfully added item if (item->isEquipment() && item->isEquipped()) { - player_node->unequipItem(item); + Net::getInventoryHandler()->unequipItem(item); } tradeWindow->addItem(item->getId(), true, quantity, item->isEquipment()); @@ -236,6 +237,9 @@ void TradeHandler::request(Being *being) void TradeHandler::respond(bool accept) { + if (!accept) + player_node->setTrading(false); + MessageOut outMsg(CMSG_TRADE_RESPONSE); outMsg.writeInt8(accept ? 3 : 4); } diff --git a/src/net/tmwserv/generalhandler.cpp b/src/net/tmwserv/generalhandler.cpp index 0a0ca346..5886aafb 100644 --- a/src/net/tmwserv/generalhandler.cpp +++ b/src/net/tmwserv/generalhandler.cpp @@ -20,6 +20,7 @@ */ #include "gui/inventorywindow.h" +#include "gui/partywindow.h" #include "net/tmwserv/generalhandler.h" @@ -77,20 +78,13 @@ GeneralHandler::GeneralHandler(): generalHandler = this; - std::list<ItemDB::Stat*> stats; - ItemDB::Stat stat; - stat.tag = "str"; stat.format = N_("Strength: %d"); - stats.push_back(&stat); - stat.tag = "agi"; stat.format = N_("Agility: %d"); - stats.push_back(&stat); - stat.tag = "dex"; stat.format = N_("Dexterity: %d"); - stats.push_back(&stat); - stat.tag = "vit"; stat.format = N_("Vitality: %d"); - stats.push_back(&stat); - stat.tag = "int"; stat.format = N_("Intelligence: %d"); - stats.push_back(&stat); - stat.tag = "will"; stat.format = N_("Willpower: %d"); - stats.push_back(&stat); + std::list<ItemDB::Stat> stats; + stats.push_back(ItemDB::Stat("str", N_("Strength %+d"))); + stats.push_back(ItemDB::Stat("agi", N_("Agility %+d"))); + stats.push_back(ItemDB::Stat("dex", N_("Dexterity %+d"))); + stats.push_back(ItemDB::Stat("vit", N_("Vitality %+d"))); + stats.push_back(ItemDB::Stat("int", N_("Intelligence %+d"))); + stats.push_back(ItemDB::Stat("will", N_("Willpower %+d"))); ItemDB::setStatsList(stats); } @@ -151,6 +145,7 @@ void GeneralHandler::tick() void GeneralHandler::guiWindowsLoaded() { inventoryWindow->setSplitAllowed(true); + partyWindow->clearPartyName(); } void GeneralHandler::guiWindowsUnloaded() diff --git a/src/net/tmwserv/inventoryhandler.cpp b/src/net/tmwserv/inventoryhandler.cpp index d78c8318..8110fdd2 100644 --- a/src/net/tmwserv/inventoryhandler.cpp +++ b/src/net/tmwserv/inventoryhandler.cpp @@ -100,6 +100,9 @@ void InventoryHandler::unequipItem(const Item *item) MessageOut msg(PGMSG_UNEQUIP); msg.writeInt8(item->getInvIndex()); Net::GameServer::connection->send(msg); + + // Tidy equipment directly to avoid weapon still shown bug, for instance + player_node->mEquipment->setEquipment(item->getInvIndex(), 0); } void InventoryHandler::useItem(const Item *item) diff --git a/src/net/tmwserv/partyhandler.cpp b/src/net/tmwserv/partyhandler.cpp index 01de1be8..47ef791c 100644 --- a/src/net/tmwserv/partyhandler.cpp +++ b/src/net/tmwserv/partyhandler.cpp @@ -99,7 +99,7 @@ void PartyHandler::handleMessage(MessageIn &msg) localChatTab->chatLog(name + " joined the party"); - if (!player_node->getInParty()) + if (!player_node->isInParty()) player_node->setInParty(true); partyWindow->updateMember(id, name); diff --git a/src/net/tmwserv/playerhandler.cpp b/src/net/tmwserv/playerhandler.cpp index c7769ede..b697e8a8 100644 --- a/src/net/tmwserv/playerhandler.cpp +++ b/src/net/tmwserv/playerhandler.cpp @@ -29,6 +29,7 @@ #include "net/messagein.h" #include "net/messageout.h" +#include "net/net.h" #include "effectmanager.h" #include "engine.h" @@ -81,7 +82,7 @@ namespace { { void action(const gcn::ActionEvent &event) { - player_node->revive(); + Net::getPlayerHandler()->respawn(); deathNotice = NULL; buyDialog->setVisible(false); sellDialog->setVisible(false); diff --git a/src/net/tmwserv/tradehandler.cpp b/src/net/tmwserv/tradehandler.cpp index 4c462a3f..74789a34 100644 --- a/src/net/tmwserv/tradehandler.cpp +++ b/src/net/tmwserv/tradehandler.cpp @@ -167,6 +167,8 @@ void TradeHandler::request(Being *being) void TradeHandler::respond(bool accept) { // TODO + if (!accept) + player_node->setTrading(false); } void TradeHandler::addItem(Item *item, int amount) |