diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | src/being.cpp | 4 | ||||
-rw-r--r-- | src/game.cpp | 476 | ||||
-rw-r--r-- | src/gui/buy.cpp | 8 | ||||
-rw-r--r-- | src/gui/buysell.cpp | 6 | ||||
-rw-r--r-- | src/gui/char_select.cpp | 102 | ||||
-rw-r--r-- | src/gui/char_server.cpp | 78 | ||||
-rw-r--r-- | src/gui/chat.cpp | 4 | ||||
-rw-r--r-- | src/gui/connection.cpp | 16 | ||||
-rw-r--r-- | src/gui/login.cpp | 22 | ||||
-rw-r--r-- | src/gui/npc.cpp | 6 | ||||
-rw-r--r-- | src/gui/npc_text.cpp | 4 | ||||
-rw-r--r-- | src/gui/popupmenu.cpp | 14 | ||||
-rw-r--r-- | src/gui/requesttrade.cpp | 8 | ||||
-rw-r--r-- | src/gui/sell.cpp | 8 | ||||
-rw-r--r-- | src/gui/skill.cpp | 4 | ||||
-rw-r--r-- | src/gui/status.cpp | 16 | ||||
-rw-r--r-- | src/gui/trade.cpp | 18 | ||||
-rw-r--r-- | src/inventory.cpp | 22 | ||||
-rw-r--r-- | src/net/messagein.cpp | 48 | ||||
-rw-r--r-- | src/net/messagein.h | 21 | ||||
-rw-r--r-- | src/net/messageout.cpp | 49 | ||||
-rw-r--r-- | src/net/messageout.h | 13 | ||||
-rw-r--r-- | src/net/protocol.cpp | 8 |
24 files changed, 484 insertions, 480 deletions
@@ -7,6 +7,15 @@ 2005-10-16 Björn Steinbrink <B.Steinbrink@gmx.de> + * src/being.cpp, src/game.cpp, src/inventory.cpp, src/gui/buy.cpp, + src/gui/buysell.cpp, src/gui/char_select.cpp, src/gui/char_server.cpp, + src/gui/chat.cpp, src/gui/connection.cpp, src/gui/login.cpp, + src/gui/npc.cpp, src/gui/npc_text.cpp, src/gui/popupmenu.cpp, + src/gui/requesttrade.cpp, src/gui/sell.cpp, src/gui/skill.cpp, + src/gui/status.cpp, src/gui/trade.cpp, src/net/messagein.cpp, + src/net/messagein.h, src/net/messageout.cpp, src/net/messageout.h, + src/net/protocol.cpp: Rename {read,write}{Byte,Short,Long} to + {read,write}Int{8,16,32}. * src/being.cpp, src/engine.cpp, src/engine.h, src/game.cpp, src/main.cpp, src/gui/equipmentwindow.cpp, src/gui/itemcontainer.cpp, src/resources/resourcemanager.cpp, src/resources/resourcemanager.h: diff --git a/src/being.cpp b/src/being.cpp index 42b2c2f5..6b26afad 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -95,8 +95,8 @@ Being* createBeing(Uint32 id, Uint16 job, Map *map) if (being->getType() == Being::PLAYER) { MessageOut outMsg; - outMsg.writeShort(0x0094); - outMsg.writeLong(being->getId());//readLong(2)); + outMsg.writeInt16(0x0094); + outMsg.writeInt32(being->getId());//readLong(2)); } // If the being is a monster then load the monsterset else if (being->job >= 1002 && diff --git a/src/game.cpp b/src/game.cpp index 35196e4a..9e437d2b 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -141,8 +141,8 @@ class DeathNoticeListener : public gcn::ActionListener { public: void action(const std::string &eventId) { MessageOut outMsg; - outMsg.writeShort(0x00b2); - outMsg.writeByte(0); + outMsg.writeInt16(0x00b2); + outMsg.writeInt8(0); deathNotice = NULL; } } deathNoticeListener; @@ -573,8 +573,8 @@ void do_input() // TODO: Remove duplicated code, probably add a // pick up command MessageOut outMsg; - outMsg.writeShort(0x009f); - outMsg.writeLong(id); + outMsg.writeInt16(0x009f); + outMsg.writeInt32(id); } used = true; } @@ -669,8 +669,8 @@ void do_input() if (emotion) { MessageOut outMsg; - outMsg.writeShort(0x00bf); - outMsg.writeByte(emotion); + outMsg.writeInt16(0x00bf); + outMsg.writeInt8(emotion); action_time = false; used = true; } @@ -708,9 +708,9 @@ void do_input() if (!current_npc) { MessageOut outMsg; - outMsg.writeShort(CMSG_NPC_TALK); - outMsg.writeLong(target->getId()); - outMsg.writeByte(0); + outMsg.writeInt16(CMSG_NPC_TALK); + outMsg.writeInt32(target->getId()); + outMsg.writeInt8(0); current_npc = target->getId(); } break; @@ -752,8 +752,8 @@ void do_input() if ((dx*dx + dy*dy) < 4) { MessageOut outMsg; - outMsg.writeShort(0x009f); - outMsg.writeLong(floorItemId); + outMsg.writeInt16(0x009f); + outMsg.writeInt32(floorItemId); } } @@ -948,8 +948,8 @@ void do_input() if (id != 0) { MessageOut outMsg; - outMsg.writeShort(CMSG_ITEM_PICKUP); - outMsg.writeLong(id); + outMsg.writeInt16(CMSG_ITEM_PICKUP); + outMsg.writeInt32(id); } } else if (joy[JOY_BTN2] && action_time) @@ -981,7 +981,7 @@ void do_parse() { case SMSG_LOGIN_SUCCESS: // Connected to game server succesfully, set spawn point - msg.readLong(); // server tick + msg.readInt32(); // server tick msg.readCoordinates(player_node->x, player_node->y, player_node->direction); msg.skip(2); // unknown @@ -990,8 +990,8 @@ void do_parse() // Received speech from being case SMSG_BEING_CHAT: { - Sint16 chatMsgLength = msg.readShort() - 8; - being = findNode(msg.readLong()); + Sint16 chatMsgLength = msg.readInt16() - 8; + being = findNode(msg.readInt32()); if (!being || chatMsgLength <= 0) { @@ -1010,7 +1010,7 @@ void do_parse() case SMSG_PLAYER_CHAT: case SMSG_GM_CHAT: { - Sint16 chatMsgLength = msg.readShort() - 4; + Sint16 chatMsgLength = msg.readInt16() - 4; if (chatMsgLength <= 0) { @@ -1048,12 +1048,12 @@ void do_parse() case SMSG_BEING_MOVE: // Information about a being in range { - Uint32 id = msg.readLong(); - Uint16 speed = msg.readShort(); - msg.readShort(); // unknown - msg.readShort(); // unknown - msg.readShort(); // option - Uint16 job = msg.readShort(); // class + Uint32 id = msg.readInt32(); + Uint16 speed = msg.readInt16(); + msg.readInt16(); // unknown + msg.readInt16(); // unknown + msg.readInt16(); // option + Uint16 job = msg.readInt16(); // class being = findNode(id); @@ -1081,28 +1081,28 @@ void do_parse() being->setWalkSpeed(speed); being->job = job; - being->setHairStyle(msg.readShort()); - being->setWeapon(msg.readShort()); - msg.readShort(); // head option bottom + being->setHairStyle(msg.readInt16()); + being->setWeapon(msg.readInt16()); + msg.readInt16(); // head option bottom if (msg.getId() == SMSG_BEING_MOVE) { - msg.readLong(); // server tick + msg.readInt32(); // server tick } - msg.readShort(); // shield - msg.readShort(); // head option top - msg.readShort(); // head option mid - being->setHairColor(msg.readShort()); - msg.readShort(); // unknown - msg.readShort(); // head dir - msg.readShort(); // guild - msg.readShort(); // unknown - msg.readShort(); // unknown - msg.readShort(); // manner - msg.readShort(); // karma - msg.readByte(); // unknown - msg.readByte(); // sex + msg.readInt16(); // shield + msg.readInt16(); // head option top + msg.readInt16(); // head option mid + being->setHairColor(msg.readInt16()); + msg.readInt16(); // unknown + msg.readInt16(); // head dir + msg.readInt16(); // guild + msg.readInt16(); // unknown + msg.readInt16(); // unknown + msg.readInt16(); // manner + msg.readInt16(); // karma + msg.readInt8(); // unknown + msg.readInt8(); // sex if (msg.getId() == SMSG_BEING_MOVE) { @@ -1119,19 +1119,19 @@ void do_parse() being->direction); } - msg.readByte(); // unknown - msg.readByte(); // unknown - msg.readByte(); // unknown / sit + msg.readInt8(); // unknown + msg.readInt8(); // unknown + msg.readInt8(); // unknown / sit } break; case SMSG_BEING_REMOVE: // A being should be removed or has died - being = findNode(msg.readLong()); + being = findNode(msg.readInt32()); if (being != NULL) { - if (msg.readByte() == 1) + if (msg.readInt8() == 1) { // Death switch (being->getType()) @@ -1164,12 +1164,12 @@ void do_parse() case SMSG_PLAYER_MOVE: // An update about a player, potentially including movement. { - Uint32 id = msg.readLong(); - Uint16 speed = msg.readShort(); - msg.readShort(); // option 1 - msg.readShort(); // option 2 - msg.readShort(); // option - Uint16 job = msg.readShort(); + Uint32 id = msg.readInt32(); + Uint16 speed = msg.readInt16(); + msg.readInt16(); // option 1 + msg.readInt16(); // option 2 + msg.readInt16(); // option + Uint16 job = msg.readInt16(); being = findNode(id); @@ -1180,26 +1180,26 @@ void do_parse() being->setWalkSpeed(speed); being->job = job; - being->setHairStyle(msg.readShort()); - being->setWeaponById(msg.readShort()); // item id 1 - msg.readShort(); // item id 2 - msg.readShort(); // head option bottom + being->setHairStyle(msg.readInt16()); + being->setWeaponById(msg.readInt16()); // item id 1 + msg.readInt16(); // item id 2 + msg.readInt16(); // head option bottom if (msg.getId() == SMSG_PLAYER_MOVE) { - msg.readLong(); // server tick + msg.readInt32(); // server tick } - msg.readShort(); // head option top - msg.readShort(); // head option mid - being->setHairColor(msg.readShort()); - msg.readShort(); // unknown - msg.readShort(); // head dir - msg.readLong(); // guild - msg.readLong(); // emblem - msg.readShort(); // manner - msg.readByte(); // karma - msg.readByte(); // sex + msg.readInt16(); // head option top + msg.readInt16(); // head option mid + being->setHairColor(msg.readInt16()); + msg.readInt16(); // unknown + msg.readInt16(); // head dir + msg.readInt32(); // guild + msg.readInt32(); // emblem + msg.readInt16(); // manner + msg.readInt8(); // karma + msg.readInt8(); // sex if (msg.getId() == SMSG_PLAYER_MOVE) { @@ -1215,23 +1215,23 @@ void do_parse() being->direction); } - msg.readByte(); // unknown - msg.readByte(); // unknown + msg.readInt8(); // unknown + msg.readInt8(); // unknown if (msg.getId() == SMSG_PLAYER_UPDATE_1) { - if (msg.readByte() == 2) + if (msg.readInt8() == 2) { being->action = Being::SIT; } } else if (msg.getId() == SMSG_PLAYER_MOVE) { - msg.readByte(); // unknown + msg.readInt8(); // unknown } - msg.readByte(); // Lv - msg.readByte(); // unknown + msg.readInt8(); // Lv + msg.readInt8(); // unknown being->walk_time = tick_time; being->mFrame = 0; @@ -1239,8 +1239,8 @@ void do_parse() break; case SMSG_NPC_MESSAGE: - msg.readShort(); // length - current_npc = msg.readLong(); + msg.readInt16(); // length + current_npc = msg.readInt32(); npcTextDialog->addText(msg.readString(msg.getLength() - 8)); npcListDialog->setVisible(false); npcTextDialog->setVisible(true); @@ -1262,8 +1262,8 @@ void do_parse() if (tradeWindow->isVisible() || requestTradeDialogOpen) { MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_RESPONSE); - outMsg.writeByte(4); + outMsg.writeInt16(CMSG_TRADE_RESPONSE); + outMsg.writeInt8(4); break; } @@ -1273,7 +1273,7 @@ void do_parse() break; case SMSG_TRADE_RESPONSE: - switch (msg.readByte()) + switch (msg.readInt8()) { case 0: // Too far away chatWindow->chat_log("Trading isn't possible. " @@ -1309,11 +1309,11 @@ void do_parse() case SMSG_TRADE_ITEM_ADD: { - Sint32 amount = msg.readLong(); - Sint16 type = msg.readShort(); - msg.readByte(); // identified flag - msg.readByte(); // attribute - msg.readByte(); // refine + Sint32 amount = msg.readInt32(); + Sint16 type = msg.readInt16(); + msg.readInt8(); // identified flag + msg.readInt8(); // attribute + msg.readInt8(); // refine msg.skip(8); // card (4 shorts) // TODO: handle also identified, etc @@ -1328,10 +1328,10 @@ void do_parse() case SMSG_TRADE_ITEM_ADD_RESPONSE: // Trade: New Item add response (was 0x00ea, now 01b1) { - Item *item = inventory->getItem(msg.readShort()); - Sint16 quantity = msg.readShort(); + Item *item = inventory->getItem(msg.readInt16()); + Sint16 quantity = msg.readInt16(); - switch (msg.readByte()) + switch (msg.readInt8()) { case 0: // Successfully added item @@ -1359,7 +1359,7 @@ void do_parse() case SMSG_TRADE_OK: // 0 means ok from myself, 1 means ok from other; - tradeWindow->receivedOk(msg.readByte() == 0); + tradeWindow->receivedOk(msg.readInt8() == 0); break; case SMSG_TRADE_CANCEL: @@ -1379,16 +1379,16 @@ void do_parse() // Only called on map load / warp. First reset all items // to not load them twice on map change. inventory->resetItems(); - msg.readShort(); // length + msg.readInt16(); // length Sint32 number = (msg.getLength() - 4) / 18; for (int loop = 0; loop < number; loop++) { - Sint16 index = msg.readShort(); - Sint16 itemId = msg.readShort(); - msg.readByte(); // type - msg.readByte(); // identify flag - Sint16 amount = msg.readShort(); + Sint16 index = msg.readInt16(); + Sint16 itemId = msg.readInt16(); + msg.readInt8(); // type + msg.readInt8(); // identify flag + Sint16 amount = msg.readInt16(); msg.skip(2); // unknown msg.skip(8); // card (4 shorts) @@ -1405,19 +1405,19 @@ void do_parse() case SMSG_PLAYER_EQUIPMENT: { - msg.readShort(); // length + msg.readInt16(); // length Sint32 number = (msg.getLength() - 4) / 20; for (int loop = 0; loop < number; loop++) { - Sint16 index = msg.readShort(); - Sint16 itemId = msg.readShort(); - msg.readByte(); // type - msg.readByte(); // identify flag - msg.readShort(); // equip type - Sint16 equipPoint = msg.readShort(); - msg.readByte(); // attribute - msg.readByte(); // refine + Sint16 index = msg.readInt16(); + Sint16 itemId = msg.readInt16(); + msg.readInt8(); // type + msg.readInt8(); // identify flag + msg.readInt16(); // equip type + Sint16 equipPoint = msg.readInt16(); + msg.readInt8(); // attribute + msg.readInt8(); // refine msg.skip(8); // card inventory->addItem(index, itemId, 1, true); @@ -1441,10 +1441,10 @@ void do_parse() case SMSG_ITEM_USE_RESPONSE: { - Sint16 index = msg.readShort(); - Sint16 amount = msg.readShort(); + Sint16 index = msg.readInt16(); + Sint16 amount = msg.readInt16(); - if (msg.readByte() == 0) { + if (msg.readInt8() == 0) { chatWindow->chat_log("Failed to use item", BY_SERVER); } else { inventory->getItem(index)->setQuantity(amount); @@ -1459,8 +1459,8 @@ void do_parse() map_path = map_path.substr(0, map_path.rfind(".")) + ".tmx.gz"; - Uint16 x = msg.readShort(); - Uint16 y = msg.readShort(); + Uint16 x = msg.readInt16(); + Uint16 y = msg.readInt16(); logger->log("Warping to %s (%d, %d)", map_path.c_str(), x, y); @@ -1479,7 +1479,7 @@ void do_parse() // Send "map loaded" MessageOut outMsg; - outMsg.writeShort(CMSG_MAP_LOADED); + outMsg.writeInt16(CMSG_MAP_LOADED); } break; @@ -1487,11 +1487,11 @@ void do_parse() // Action failed (ex. sit because you have not reached the // right level) CHATSKILL action; - action.skill = msg.readShort(); - action.bskill = msg.readShort(); - action.unused = msg.readShort(); // unknown - action.success = msg.readByte(); - action.reason = msg.readByte(); + action.skill = msg.readInt16(); + action.bskill = msg.readInt16(); + action.unused = msg.readInt16(); // unknown + action.success = msg.readInt8(); + action.reason = msg.readInt8(); if (action.success != SKILL_FAILED && action.bskill == BSKILL_EMOTE) { @@ -1502,13 +1502,13 @@ void do_parse() case SMSG_PLAYER_STAT_UPDATE_1: { - Sint16 type = msg.readShort(); - Sint32 value = msg.readLong(); + Sint16 type = msg.readInt16(); + Sint32 value = msg.readInt32(); switch (type) { //case 0x0000: - // player_node->setWalkSpeed(msg.readLong()); + // player_node->setWalkSpeed(msg.readInt32()); // break; case 0x0005: player_info->hp = value; break; case 0x0006: player_info->maxHp = value; break; @@ -1558,7 +1558,7 @@ void do_parse() // Stop walking // case 0x0088: // Disabled because giving some problems - //if (being = findNode(readLong(2))) { + //if (being = findNode(readInt32(2))) { // if (being->getId() != player_node->getId()) { // being->action = STAND; // being->mFrame = 0; @@ -1571,15 +1571,15 @@ void do_parse() case SMSG_BEING_ACTION: { - Being *srcBeing = findNode(msg.readLong()); - Being *dstBeing = findNode(msg.readLong()); - msg.readLong(); // server tick - msg.readLong(); // src speed - msg.readLong(); // dst speed - Sint16 param1 = msg.readShort(); - msg.readShort(); // param 2 - Sint8 type = msg.readByte(); - msg.readShort(); // param 3 + Being *srcBeing = findNode(msg.readInt32()); + Being *dstBeing = findNode(msg.readInt32()); + msg.readInt32(); // server tick + msg.readInt32(); // src speed + msg.readInt32(); // dst speed + Sint16 param1 = msg.readInt16(); + msg.readInt16(); // param 2 + Sint8 type = msg.readInt8(); + msg.readInt16(); // param 3 switch (type) { @@ -1614,50 +1614,50 @@ void do_parse() break; case SMSG_PLAYER_STAT_UPDATE_2: - switch (msg.readShort()) { + switch (msg.readInt16()) { case 0x0001: - player_info->xp = msg.readLong(); + player_info->xp = msg.readInt32(); break; case 0x0002: - player_info->jobXp = msg.readLong(); + player_info->jobXp = msg.readInt32(); break; case 0x0014: - player_info->gp = msg.readLong(); + player_info->gp = msg.readInt32(); break; case 0x0016: - player_info->xpForNextLevel = msg.readLong(); + player_info->xpForNextLevel = msg.readInt32(); break; case 0x0017: - player_info->jobXpForNextLevel = msg.readLong(); + player_info->jobXpForNextLevel = msg.readInt32(); break; } break; case SMSG_BEING_LEVELUP: - if ((Uint32)msg.readLong() == player_node->getId()) { + if ((Uint32)msg.readInt32() == player_node->getId()) { logger->log("Level up"); sound.playSfx("sfx/levelup.ogg"); } else { logger->log("Someone else went level up"); } - msg.readLong(); // type + msg.readInt32(); // type break; case SMSG_BEING_EMOTION: - if (!(being = findNode(msg.readLong()))) + if (!(being = findNode(msg.readInt32()))) { break; } - being->emotion = msg.readByte(); + being->emotion = msg.readInt8(); being->emotion_time = EMOTION_TIME; break; case SMSG_PLAYER_STAT_UPDATE_3: { - Sint32 type = msg.readLong(); - Sint32 base = msg.readLong(); - Sint32 bonus = msg.readLong(); + Sint32 type = msg.readInt32(); + Sint32 base = msg.readInt32(); + Sint32 bonus = msg.readInt32(); Sint32 total = base + bonus; switch (type) { @@ -1677,11 +1677,11 @@ void do_parse() sellDialog->setVisible(false); sellDialog->reset(); buySellDialog->setVisible(true); - current_npc = msg.readLong(); + current_npc = msg.readInt32(); break; case SMSG_NPC_BUY: - msg.readShort(); // length + msg.readInt16(); // length n_items = (msg.getLength() - 4) / 11; buyDialog->reset(); buyDialog->setMoney(player_info->gp); @@ -1689,16 +1689,16 @@ void do_parse() for (int k = 0; k < n_items; k++) { - Sint32 value = msg.readLong(); - msg.readLong(); // DCvalue - msg.readByte(); // type - Sint16 itemId = msg.readShort(); + Sint32 value = msg.readInt32(); + msg.readInt32(); // DCvalue + msg.readInt8(); // type + Sint16 itemId = msg.readInt16(); buyDialog->addItem(itemId, value); } break; case SMSG_NPC_SELL: - msg.readShort(); // length + msg.readInt16(); // length n_items = (msg.getLength() - 4) / 10; if (n_items > 0) { sellDialog->reset(); @@ -1706,9 +1706,9 @@ void do_parse() for (int k = 0; k < n_items; k++) { - Sint16 index = msg.readShort(); - Sint32 value = msg.readLong(); - msg.readLong(); // OCvalue + Sint16 index = msg.readInt16(); + Sint32 value = msg.readInt32(); + msg.readInt32(); // OCvalue Item *item = inventory->getItem(index); if (item && !(item->isEquipped())) { @@ -1723,7 +1723,7 @@ void do_parse() break; case SMSG_NPC_BUY_RESPONSE: - if (msg.readByte() == 0) { + if (msg.readInt8() == 0) { chatWindow->chat_log("Thanks for buying", BY_SERVER); } else { chatWindow->chat_log("Unable to buy", BY_SERVER); @@ -1731,7 +1731,7 @@ void do_parse() break; case SMSG_NPC_SELL_RESPONSE: - if (msg.readByte() == 0) { + if (msg.readInt8() == 0) { chatWindow->chat_log("Thanks for selling", BY_SERVER); } else { chatWindow->chat_log("Unable to sell", BY_SERVER); @@ -1740,16 +1740,16 @@ void do_parse() case SMSG_PLAYER_INVENTORY_ADD: { - Sint16 index = msg.readShort(); - Sint16 amount = msg.readShort(); - Sint16 itemId = msg.readShort(); - msg.readByte(); // identify flag - msg.readByte(); // attribute - msg.readByte(); // refine + Sint16 index = msg.readInt16(); + Sint16 amount = msg.readInt16(); + Sint16 itemId = msg.readInt16(); + msg.readInt8(); // identify flag + msg.readInt8(); // attribute + msg.readInt8(); // refine msg.skip(8); // card - Sint16 equipType = msg.readShort(); - msg.readByte(); // type - Sint8 fail = msg.readByte(); + Sint16 equipType = msg.readInt16(); + msg.readInt8(); // type + Sint8 fail = msg.readInt8(); if (fail > 0) { chatWindow->chat_log("Unable to pick up item", @@ -1763,39 +1763,39 @@ void do_parse() case SMSG_PLAYER_INVENTORY_REMOVE: { - Sint16 index = msg.readShort(); - Sint16 amount = msg.readShort(); + Sint16 index = msg.readInt16(); + Sint16 amount = msg.readInt16(); inventory->getItem(index)->increaseQuantity(-amount); } break; case SMSG_PLAYER_INVENTORY_USE: { - Sint16 index = msg.readShort(); - msg.readShort(); // item id - msg.readLong(); // id - Sint16 amountLeft = msg.readShort(); - msg.readByte(); // type + Sint16 index = msg.readInt16(); + msg.readInt16(); // item id + msg.readInt32(); // id + Sint16 amountLeft = msg.readInt16(); + msg.readInt8(); // type inventory->getItem(index)->setQuantity(amountLeft); } break; case SMSG_PLAYER_SKILLS: - msg.readShort(); // length + msg.readInt16(); // length n_items = (msg.getLength() - 4) / 37; skillDialog->cleanList(); for (int k = 0; k < n_items; k++) { - Sint16 skillId = msg.readShort(); - msg.readShort(); // target type - msg.readShort(); // unknown - Sint16 level = msg.readShort(); - Sint16 sp = msg.readShort(); - msg.readShort(); // range + Sint16 skillId = msg.readInt16(); + msg.readInt16(); // target type + msg.readInt16(); // unknown + Sint16 level = msg.readInt16(); + Sint16 sp = msg.readInt16(); + msg.readInt16(); // range std::string skillName = msg.readString(24); - Sint8 up = msg.readByte(); + Sint8 up = msg.readInt8(); if (level != 0 || up != 0) { @@ -1811,18 +1811,18 @@ void do_parse() case 0x010c: // Display MVP player - msg.readLong(); // id + msg.readInt32(); // id chatWindow->chat_log("MVP player", BY_SERVER); break; case SMSG_ITEM_VISIBLE: case SMSG_ITEM_DROPPED: { - Uint32 id = msg.readLong(); - Sint16 itemId = msg.readShort(); - msg.readByte(); // identify flag - Uint16 x = msg.readShort(); - Uint16 y = msg.readShort(); + Uint32 id = msg.readInt32(); + Sint16 itemId = msg.readInt16(); + msg.readInt8(); // identify flag + Uint16 x = msg.readInt16(); + Uint16 y = msg.readInt16(); msg.skip(4); // amount,subX,subY / subX,subY,amount add_floor_item(new FloorItem(id, itemId, x, y, tiledMap)); @@ -1830,43 +1830,43 @@ void do_parse() break; case SMSG_ITEM_REMOVE: - remove_floor_item(msg.readLong()); + remove_floor_item(msg.readInt32()); break; case SMSG_NPC_CHOICE: - msg.readShort(); // length - current_npc = msg.readLong(); + msg.readInt16(); // length + current_npc = msg.readInt32(); npcListDialog->parseItems(msg.readString(msg.getLength() - 8)); npcListDialog->setVisible(true); break; case SMSG_BEING_CHANGE_LOOKS: - if (!(being = findNode(msg.readLong()))) + if (!(being = findNode(msg.readInt32()))) { break; } - switch (msg.readByte()) { + switch (msg.readInt8()) { case 1: - being->setHairStyle(msg.readByte()); + being->setHairStyle(msg.readInt8()); break; case 2: - being->setWeapon(msg.readByte()); + being->setWeapon(msg.readInt8()); break; case 6: - being->setHairColor(msg.readByte()); + being->setHairColor(msg.readInt8()); break; default: - msg.readByte(); // unsupported + msg.readInt8(); // unsupported break; } break; case SMSG_PLAYER_EQUIP: { - Sint16 index = msg.readShort(); - Sint16 equipPoint = msg.readShort(); - Sint8 type = msg.readByte(); + Sint16 index = msg.readInt16(); + Sint16 equipPoint = msg.readInt16(); + Sint8 type = msg.readInt8(); logger->log("Equipping: %i %i %i", index, equipPoint, type); @@ -1900,10 +1900,10 @@ void do_parse() case 0x01d7: // Equipment related { - being = findNode(msg.readLong()); - msg.readByte(); // equip point - Sint16 itemId1 = msg.readShort(); - msg.readShort(); // item id 2 + being = findNode(msg.readInt32()); + msg.readInt8(); // equip point + Sint16 itemId1 = msg.readInt16(); + msg.readInt16(); // item id 2 if (being != NULL) { @@ -1914,9 +1914,9 @@ void do_parse() case SMSG_PLAYER_UNEQUIP: { - Sint16 index = msg.readShort(); - Sint16 equipPoint = msg.readShort(); - Sint8 type = msg.readByte(); + Sint16 index = msg.readInt16(); + Sint16 equipPoint = msg.readInt16(); + Sint8 type = msg.readInt8(); if (type == 0) { chatWindow->chat_log("Unable to unequip.", BY_SERVER); @@ -1968,7 +1968,7 @@ void do_parse() case SMSG_PLAYER_ARROW_EQUIP: { - Sint16 id = msg.readShort(); + Sint16 id = msg.readInt16(); if (id > 1) { Item *item = inventory->getItem(id); @@ -1983,7 +1983,7 @@ void do_parse() case SMSG_PLAYER_ARROW_MESSAGE: { - Sint16 type = msg.readShort(); + Sint16 type = msg.readInt16(); switch (type) { case 0: @@ -1999,9 +1999,9 @@ void do_parse() case SMSG_PLAYER_STAT_UPDATE_4: { - Sint16 type = msg.readShort(); - Sint8 fail = msg.readByte(); - Sint8 value = msg.readByte(); + Sint16 type = msg.readInt16(); + Sint8 fail = msg.readInt8(); + Sint8 value = msg.readInt8(); if (fail == 1) { @@ -2019,47 +2019,47 @@ void do_parse() // Updates stats and status points case SMSG_PLAYER_STAT_UPDATE_5: - player_info->statsPointsToAttribute = msg.readShort(); - player_info->STR = msg.readByte(); - player_info->STRUp = msg.readByte(); - player_info->AGI = msg.readByte(); - player_info->AGIUp = msg.readByte(); - player_info->VIT = msg.readByte(); - player_info->VITUp = msg.readByte(); - player_info->INT = msg.readByte(); - player_info->INTUp = msg.readByte(); - player_info->DEX = msg.readByte(); - player_info->DEXUp = msg.readByte(); - player_info->LUK = msg.readByte(); - player_info->LUKUp = msg.readByte(); - player_info->ATK = msg.readShort(); // ATK - player_info->ATKBonus = msg.readShort(); // ATK bonus - player_info->MATK = msg.readShort(); // MATK max - player_info->MATKBonus = msg.readShort(); // MATK min - player_info->DEF = msg.readShort(); // DEF - player_info->DEFBonus = msg.readShort(); // DEF bonus - player_info->MDEF = msg.readShort(); // MDEF - player_info->MDEFBonus = msg.readShort(); // MDEF bonus - player_info->HIT = msg.readShort(); // HIT - player_info->FLEE = msg.readShort(); // FLEE - player_info->FLEEBonus = msg.readShort(); // FLEE bonus - msg.readShort(); // critical - msg.readShort(); // unknown + player_info->statsPointsToAttribute = msg.readInt16(); + player_info->STR = msg.readInt8(); + player_info->STRUp = msg.readInt8(); + player_info->AGI = msg.readInt8(); + player_info->AGIUp = msg.readInt8(); + player_info->VIT = msg.readInt8(); + player_info->VITUp = msg.readInt8(); + player_info->INT = msg.readInt8(); + player_info->INTUp = msg.readInt8(); + player_info->DEX = msg.readInt8(); + player_info->DEXUp = msg.readInt8(); + player_info->LUK = msg.readInt8(); + player_info->LUKUp = msg.readInt8(); + player_info->ATK = msg.readInt16(); // ATK + player_info->ATKBonus = msg.readInt16(); // ATK bonus + player_info->MATK = msg.readInt16(); // MATK max + player_info->MATKBonus = msg.readInt16(); // MATK min + player_info->DEF = msg.readInt16(); // DEF + player_info->DEFBonus = msg.readInt16(); // DEF bonus + player_info->MDEF = msg.readInt16(); // MDEF + player_info->MDEFBonus = msg.readInt16(); // MDEF bonus + player_info->HIT = msg.readInt16(); // HIT + player_info->FLEE = msg.readInt16(); // FLEE + player_info->FLEEBonus = msg.readInt16(); // FLEE bonus + msg.readInt16(); // critical + msg.readInt16(); // unknown break; case SMSG_PLAYER_STAT_UPDATE_6: - switch (msg.readShort()) { - case 0x0020: player_info->STRUp = msg.readByte(); break; - case 0x0021: player_info->AGIUp = msg.readByte(); break; - case 0x0022: player_info->VITUp = msg.readByte(); break; - case 0x0023: player_info->INTUp = msg.readByte(); break; - case 0x0024: player_info->DEXUp = msg.readByte(); break; - case 0x0025: player_info->LUKUp = msg.readByte(); break; + switch (msg.readInt16()) { + case 0x0020: player_info->STRUp = msg.readInt8(); break; + case 0x0021: player_info->AGIUp = msg.readInt8(); break; + case 0x0022: player_info->VITUp = msg.readInt8(); break; + case 0x0023: player_info->INTUp = msg.readInt8(); break; + case 0x0024: player_info->DEXUp = msg.readInt8(); break; + case 0x0025: player_info->LUKUp = msg.readInt8(); break; } break; case SMSG_BEING_NAME_RESPONSE: - if ((being = findNode(msg.readLong()))) + if ((being = findNode(msg.readInt32()))) { being->setName(msg.readString(24)); } diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index 185709d1..f918d45a 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -237,10 +237,10 @@ void BuyDialog::action(const std::string& eventId) else if (eventId == "buy" && (m_amountItems > 0 && m_amountItems <= m_maxItems)) { MessageOut outMsg; - outMsg.writeShort(CMSG_NPC_BUY_REQUEST); - outMsg.writeShort(8); - outMsg.writeShort(m_amountItems); - outMsg.writeShort(shopInventory[selectedItem].id); + outMsg.writeInt16(CMSG_NPC_BUY_REQUEST); + outMsg.writeInt16(8); + outMsg.writeInt16(m_amountItems); + outMsg.writeInt16(shopInventory[selectedItem].id); // update money ! m_money -= m_amountItems * shopInventory[selectedItem].price; diff --git a/src/gui/buysell.cpp b/src/gui/buysell.cpp index 1f40e7b5..627d119f 100644 --- a/src/gui/buysell.cpp +++ b/src/gui/buysell.cpp @@ -82,9 +82,9 @@ void BuySellDialog::action(const std::string& eventId) } if (actionId > -1) { MessageOut outMsg; - outMsg.writeShort(CMSG_NPC_BUY_SELL_REQUEST); - outMsg.writeLong(current_npc); - outMsg.writeByte(actionId); + outMsg.writeInt16(CMSG_NPC_BUY_SELL_REQUEST); + outMsg.writeInt32(current_npc); + outMsg.writeInt8(actionId); } setVisible(false); diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index 46ead1dc..a22a25de 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -195,8 +195,8 @@ void CharSelectDialog::serverCharDelete() { // Request character deletion MessageOut outMsg; - outMsg.writeShort(0x0068); - outMsg.writeLong(char_info[0]->id); + outMsg.writeInt16(0x0068); + outMsg.writeInt32(char_info[0]->id); outMsg.writeString("a@a.com", 40); MessageIn msg = get_next_message(); @@ -225,8 +225,8 @@ void CharSelectDialog::serverCharSelect() { // Request character selection MessageOut outMsg; - outMsg.writeShort(0x0066); - outMsg.writeByte(0); + outMsg.writeInt16(0x0066); + outMsg.writeInt8(0); MessageIn msg = get_next_message(); @@ -235,11 +235,11 @@ void CharSelectDialog::serverCharSelect() if (msg.getId() == 0x0071) { - char_ID = msg.readLong(); + char_ID = msg.readInt32(); map_path = "maps/" + msg.readString(16); map_path= map_path.substr(0, map_path.rfind(".")) + ".tmx.gz"; - map_address = msg.readLong(); - map_port = msg.readShort(); + map_address = msg.readInt32(); + map_port = msg.readInt16(); player_info = char_info[0]; state = CONNECTING_STATE; @@ -250,7 +250,7 @@ void CharSelectDialog::serverCharSelect() } else if (msg.getId() == 0x006c) { - switch (msg.readByte()) { + switch (msg.readInt8()) { case 0: errorMessage = "Access denied"; break; @@ -265,7 +265,7 @@ void CharSelectDialog::serverCharSelect() } else if (msg.getId() == 0x0081) { - switch (msg.readByte()) { + switch (msg.readInt8()) { case 1: errorMessage = "Map server offline"; break; @@ -416,17 +416,17 @@ void CharCreateDialog::serverCharCreate() { // Send character infos MessageOut outMsg; - outMsg.writeShort(0x0067); + outMsg.writeInt16(0x0067); outMsg.writeString(getName(), 24); - outMsg.writeByte(5); - outMsg.writeByte(5); - outMsg.writeByte(5); - outMsg.writeByte(5); - outMsg.writeByte(5); - outMsg.writeByte(5); - outMsg.writeByte(0); - outMsg.writeShort(playerBox->hairColor + 1); - outMsg.writeShort(playerBox->hairStyle + 1); + outMsg.writeInt8(5); + outMsg.writeInt8(5); + outMsg.writeInt8(5); + outMsg.writeInt8(5); + outMsg.writeInt8(5); + outMsg.writeInt8(5); + outMsg.writeInt8(0); + outMsg.writeInt16(playerBox->hairColor + 1); + outMsg.writeInt16(playerBox->hairStyle + 1); MessageIn msg = get_next_message(); @@ -435,41 +435,41 @@ void CharCreateDialog::serverCharCreate() char_info = (PLAYER_INFO**)malloc(sizeof(PLAYER_INFO*)); char_info[0] = new PLAYER_INFO; - char_info[0]->id = msg.readLong(); - char_info[0]->xp = msg.readLong(); - char_info[0]->gp = msg.readLong(); - char_info[0]->jobXp = msg.readLong(); - char_info[0]->jobLvl = msg.readLong(); + char_info[0]->id = msg.readInt32(); + char_info[0]->xp = msg.readInt32(); + char_info[0]->gp = msg.readInt32(); + char_info[0]->jobXp = msg.readInt32(); + char_info[0]->jobLvl = msg.readInt32(); msg.skip(8); // unknown - msg.readLong(); // option - msg.readLong(); // karma - msg.readLong(); // manner + msg.readInt32(); // option + msg.readInt32(); // karma + msg.readInt32(); // manner msg.skip(2); // unknown - char_info[0]->hp = msg.readShort(); - char_info[0]->maxHp = msg.readShort(); - char_info[0]->mp = msg.readShort(); - char_info[0]->maxMp = msg.readShort(); - msg.readShort(); // speed - msg.readShort(); // class - char_info[0]->hairStyle = msg.readShort(); - char_info[0]->weapon = msg.readShort(); - char_info[0]->lvl = msg.readShort(); - msg.readShort(); // skill point - msg.readShort(); // head bottom - msg.readShort(); // shield - msg.readShort(); // head option top - msg.readShort(); // head option mid - char_info[0]->hairColor = msg.readShort(); - msg.readShort(); // unknown + char_info[0]->hp = msg.readInt16(); + char_info[0]->maxHp = msg.readInt16(); + char_info[0]->mp = msg.readInt16(); + char_info[0]->maxMp = msg.readInt16(); + msg.readInt16(); // speed + msg.readInt16(); // class + char_info[0]->hairStyle = msg.readInt16(); + char_info[0]->weapon = msg.readInt16(); + char_info[0]->lvl = msg.readInt16(); + msg.readInt16(); // skill point + msg.readInt16(); // head bottom + msg.readInt16(); // shield + msg.readInt16(); // head option top + msg.readInt16(); // head option mid + char_info[0]->hairColor = msg.readInt16(); + msg.readInt16(); // unknown char_info[0]->name = msg.readString(24); - char_info[0]->STR = msg.readByte(); - char_info[0]->AGI = msg.readByte(); - char_info[0]->VIT = msg.readByte(); - char_info[0]->INT = msg.readByte(); - char_info[0]->DEX = msg.readByte(); - char_info[0]->LUK = msg.readByte(); - char_info[0]->characterNumber = msg.readByte(); // character number - msg.readByte(); // unknown + char_info[0]->STR = msg.readInt8(); + char_info[0]->AGI = msg.readInt8(); + char_info[0]->VIT = msg.readInt8(); + char_info[0]->INT = msg.readInt8(); + char_info[0]->DEX = msg.readInt8(); + char_info[0]->LUK = msg.readInt8(); + char_info[0]->characterNumber = msg.readInt8(); // character number + msg.readInt8(); // unknown n_character = 1; } diff --git a/src/gui/char_server.cpp b/src/gui/char_server.cpp index 22ac484b..4135d9c5 100644 --- a/src/gui/char_server.cpp +++ b/src/gui/char_server.cpp @@ -160,12 +160,12 @@ void ServerSelectDialog::selectServer(int index) { // Send login infos MessageOut outMsg; - outMsg.writeShort(0x0065); - outMsg.writeLong(account_ID); - outMsg.writeLong(session_ID1); - outMsg.writeLong(session_ID2); - outMsg.writeShort(0); // unknown - outMsg.writeByte(sex); + outMsg.writeInt16(0x0065); + outMsg.writeInt32(account_ID); + outMsg.writeInt32(session_ID1); + outMsg.writeInt32(session_ID2); + outMsg.writeInt16(0); // unknown + outMsg.writeInt8(sex); // Skipping a mysterious 4 bytes while ((in_size < 4) || (out_size > 0)) flush(); @@ -189,41 +189,41 @@ void ServerSelectDialog::selectServer(int index) char_info[i]->totalWeight = 0; char_info[i]->maxWeight = 0; char_info[i]->lastAttackTime = 0; - char_info[i]->id = msg.readLong(); - char_info[i]->xp = msg.readLong(); - char_info[i]->gp = msg.readLong(); - char_info[i]->jobXp = msg.readLong(); - char_info[i]->jobLvl = msg.readLong(); + char_info[i]->id = msg.readInt32(); + char_info[i]->xp = msg.readInt32(); + char_info[i]->gp = msg.readInt32(); + char_info[i]->jobXp = msg.readInt32(); + char_info[i]->jobLvl = msg.readInt32(); msg.skip(8); // unknown - msg.readLong(); // option - msg.readLong(); // karma - msg.readLong(); // manner + msg.readInt32(); // option + msg.readInt32(); // karma + msg.readInt32(); // manner msg.skip(2); // unknown - char_info[i]->hp = msg.readShort(); - char_info[i]->maxHp = msg.readShort(); - char_info[i]->mp = msg.readShort(); - char_info[i]->maxMp = msg.readShort(); - msg.readShort(); // speed - msg.readShort(); // class - char_info[i]->hairStyle = msg.readShort(); - char_info[i]->weapon = msg.readShort(); - char_info[i]->lvl = msg.readShort(); - msg.readShort(); // skill point - msg.readShort(); // head bottom - msg.readShort(); // shield - msg.readShort(); // head option top - msg.readShort(); // head option mid - char_info[i]->hairColor = msg.readShort(); - msg.readShort(); // unknown + char_info[i]->hp = msg.readInt16(); + char_info[i]->maxHp = msg.readInt16(); + char_info[i]->mp = msg.readInt16(); + char_info[i]->maxMp = msg.readInt16(); + msg.readInt16(); // speed + msg.readInt16(); // class + char_info[i]->hairStyle = msg.readInt16(); + char_info[i]->weapon = msg.readInt16(); + char_info[i]->lvl = msg.readInt16(); + msg.readInt16(); // skill point + msg.readInt16(); // head bottom + msg.readInt16(); // shield + msg.readInt16(); // head option top + msg.readInt16(); // head option mid + char_info[i]->hairColor = msg.readInt16(); + msg.readInt16(); // unknown char_info[i]->name = msg.readString(24); - char_info[i]->STR = msg.readByte(); - char_info[i]->AGI = msg.readByte(); - char_info[i]->VIT = msg.readByte(); - char_info[i]->INT = msg.readByte(); - char_info[i]->DEX = msg.readByte(); - char_info[i]->LUK = msg.readByte(); - char_info[i]->characterNumber = msg.readByte(); // character number - msg.readByte(); // unknown + char_info[i]->STR = msg.readInt8(); + char_info[i]->AGI = msg.readInt8(); + char_info[i]->VIT = msg.readInt8(); + char_info[i]->INT = msg.readInt8(); + char_info[i]->DEX = msg.readInt8(); + char_info[i]->LUK = msg.readInt8(); + char_info[i]->characterNumber = msg.readInt8(); // character number + msg.readInt8(); // unknown } state = CHAR_SELECT_STATE; @@ -236,7 +236,7 @@ void ServerSelectDialog::selectServer(int index) else if (msg.getId() == 0x006c) { std::string errorStr; - switch (msg.readByte()) { + switch (msg.readInt8()) { case 0: errorStr = "Access denied"; break; case 1: errorStr = "Cannot use this ID"; break; default: errorStr = "Rejected from server"; break; diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 7e1458c9..20deb1a7 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -251,8 +251,8 @@ ChatWindow::chat_send(std::string nick, std::string msg) // send processed message MessageOut outMsg; - outMsg.writeShort(packetId); - outMsg.writeShort(msg.length() + 4); + outMsg.writeInt16(packetId); + outMsg.writeInt16(msg.length() + 4); outMsg.writeString(msg, msg.length()); } diff --git a/src/gui/connection.cpp b/src/gui/connection.cpp index 0e885598..bfa69f23 100644 --- a/src/gui/connection.cpp +++ b/src/gui/connection.cpp @@ -104,12 +104,12 @@ void ConnectionDialog::mapLogin() { // Send login infos MessageOut outMsg; - outMsg.writeShort(0x0072); - outMsg.writeLong(account_ID); - outMsg.writeLong(char_ID); - outMsg.writeLong(session_ID1); - outMsg.writeLong(session_ID2); - outMsg.writeByte(sex); + outMsg.writeInt16(0x0072); + outMsg.writeInt32(account_ID); + outMsg.writeInt32(char_ID); + outMsg.writeInt32(session_ID1); + outMsg.writeInt32(session_ID2); + outMsg.writeInt8(sex); // Skip a mysterious 4 bytes while ((in_size < 4)|| (out_size > 0)) flush(); @@ -120,7 +120,7 @@ void ConnectionDialog::mapLogin() if (msg.getId() == SMSG_LOGIN_SUCCESS) { unsigned char direction; - msg.readLong(); // server tick + msg.readInt32(); // server tick msg.readCoordinates(startX, startY, direction); msg.skip(2); // unknown logger->log("Protocol: Player start position: (%d, %d), Direction: %d", @@ -140,7 +140,7 @@ void ConnectionDialog::mapLogin() // Send "map loaded" // TODO: be able to reuse the same msg MessageOut newMsg; - newMsg.writeShort(0x007d); + newMsg.writeInt16(0x007d); } void connectionInputHandler(SDL_KeyboardEvent *keyEvent) diff --git a/src/gui/login.cpp b/src/gui/login.cpp index 6846059c..4f08216b 100644 --- a/src/gui/login.cpp +++ b/src/gui/login.cpp @@ -342,11 +342,11 @@ LoginDialog::attemptLogin(const std::string& user, const std::string& pass) { // Send login infos MessageOut outMsg; - outMsg.writeShort(0x0064); - outMsg.writeLong(0); // client version + outMsg.writeInt16(0x0064); + outMsg.writeInt32(0); // client version outMsg.writeString(user, 24); outMsg.writeString(pass, 24); - outMsg.writeByte(0); // unknown + outMsg.writeInt8(0); // unknown // Receive reply MessageIn msg = get_next_message(); @@ -365,20 +365,20 @@ LoginDialog::attemptLogin(const std::string& user, const std::string& pass) n_server = (msg.getLength() - 47) / 32; server_info = (SERVER_INFO**)malloc(sizeof(SERVER_INFO*) * n_server); - session_ID1 = msg.readLong(); - account_ID = msg.readLong(); - session_ID2 = msg.readLong(); + session_ID1 = msg.readInt32(); + account_ID = msg.readInt32(); + session_ID2 = msg.readInt32(); msg.skip(30); // unknown - sex = msg.readByte(); + sex = msg.readInt8(); for (int i = 0; i < n_server; i++) { server_info[i] = new SERVER_INFO; - server_info[i]->address = msg.readLong(); - server_info[i]->port = msg.readShort(); + server_info[i]->address = msg.readInt32(); + server_info[i]->port = msg.readInt16(); server_info[i]->name = msg.readString(20); - server_info[i]->online_users = msg.readLong(); + server_info[i]->online_users = msg.readInt32(); msg.skip(2); // unknown logger->log("Network: Server: %s (%s:%d)", @@ -392,7 +392,7 @@ LoginDialog::attemptLogin(const std::string& user, const std::string& pass) } else if (msg.getId() == 0x006a) { - int loginError = msg.readByte(); + int loginError = msg.readInt8(); logger->log("Login::error code: %i", loginError); switch (loginError) { diff --git a/src/gui/npc.cpp b/src/gui/npc.cpp index 16641916..68856705 100644 --- a/src/gui/npc.cpp +++ b/src/gui/npc.cpp @@ -129,9 +129,9 @@ NpcListDialog::action(const std::string& eventId) if (choice) { MessageOut outMsg; - outMsg.writeShort(CMSG_NPC_LIST_CHOICE); - outMsg.writeLong(current_npc); - outMsg.writeByte(choice); + outMsg.writeInt16(CMSG_NPC_LIST_CHOICE); + outMsg.writeInt32(current_npc); + outMsg.writeInt8(choice); setVisible(false); reset(); current_npc = 0; diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index 2e0b0837..5f5ea9cb 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -83,8 +83,8 @@ NpcTextDialog::action(const std::string& eventId) if (eventId == "ok") { MessageOut outMsg; - outMsg.writeShort(CMSG_NPC_NEXT_REQUEST); - outMsg.writeLong(current_npc); + outMsg.writeInt16(CMSG_NPC_NEXT_REQUEST); + outMsg.writeInt32(current_npc); setText(""); setVisible(false); current_npc = 0; diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index 6bb57f60..e6d3b402 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -135,9 +135,9 @@ void PopupMenu::handleLink(const std::string& link) current_npc == 0) { MessageOut outMsg; - outMsg.writeShort(CMSG_NPC_TALK); - outMsg.writeLong(mBeing->getId()); - outMsg.writeByte(0); + outMsg.writeInt16(CMSG_NPC_TALK); + outMsg.writeInt32(mBeing->getId()); + outMsg.writeInt8(0); current_npc = mBeing->getId(); } @@ -147,8 +147,8 @@ void PopupMenu::handleLink(const std::string& link) mBeing->getType() == Being::PLAYER) { MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_REQUEST); - outMsg.writeLong(mBeing->getId()); + outMsg.writeInt16(CMSG_TRADE_REQUEST); + outMsg.writeInt32(mBeing->getId()); //tradePartner.flush(); //tradePartner << "Trade: You and " << being->name<< ""; tradePartnerName = mBeing->getName(); @@ -183,8 +183,8 @@ void PopupMenu::handleLink(const std::string& link) else if ((link == "pickup") && mFloorItem != NULL) { MessageOut outMsg; - outMsg.writeShort(CMSG_ITEM_PICKUP); - outMsg.writeLong(mFloorItem->getId()); + outMsg.writeInt16(CMSG_ITEM_PICKUP); + outMsg.writeInt32(mFloorItem->getId()); } // Look To action diff --git a/src/gui/requesttrade.cpp b/src/gui/requesttrade.cpp index e4423c59..6c7ef2ce 100644 --- a/src/gui/requesttrade.cpp +++ b/src/gui/requesttrade.cpp @@ -87,16 +87,16 @@ RequestTradeDialog::~RequestTradeDialog() void RequestTradeDialog::action(const std::string& eventId) { int choice = 4; // 4 means trade canceled - + if (eventId == "accept") { choice = 3; // ok to trade } else if (eventId == "cancel") { requestTradeDialogOpen = false; } - + MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_RESPONSE); - outMsg.writeByte(choice); + outMsg.writeInt16(CMSG_TRADE_RESPONSE); + outMsg.writeInt8(choice); scheduleDelete(); } diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp index 73880861..a147fa44 100644 --- a/src/gui/sell.cpp +++ b/src/gui/sell.cpp @@ -232,10 +232,10 @@ void SellDialog::action(const std::string& eventId) assert(m_amountItems > 0 && m_amountItems <= m_maxItems); MessageOut outMsg; - outMsg.writeShort(CMSG_NPC_SELL_REQUEST); - outMsg.writeShort(8); - outMsg.writeShort(shopInventory[selectedItem].index); - outMsg.writeShort(m_amountItems); + outMsg.writeInt16(CMSG_NPC_SELL_REQUEST); + outMsg.writeInt16(8); + outMsg.writeInt16(shopInventory[selectedItem].index); + outMsg.writeInt16(m_amountItems); m_maxItems -= m_amountItems; m_amountItems = 0; diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index b65fcfd9..c2e09819 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -133,8 +133,8 @@ void SkillDialog::action(const std::string& eventId) if (player_info->skillPoint > 0 && selectedSkill >= 0) { MessageOut outMsg; - outMsg.writeShort(CMSG_SKILL_LEVELUP_REQUEST); - outMsg.writeShort(skillList[selectedSkill]->id); + outMsg.writeInt16(CMSG_SKILL_LEVELUP_REQUEST); + outMsg.writeInt16(skillList[selectedSkill]->id); } } else if (eventId == "skill") diff --git a/src/gui/status.cpp b/src/gui/status.cpp index f5302e95..0c20b6fc 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -454,32 +454,32 @@ void StatusWindow::action(const std::string& eventId) if (eventId.length() == 3) { MessageOut outMsg; - outMsg.writeShort(CMSG_STAT_UPDATE_REQUEST); + outMsg.writeInt16(CMSG_STAT_UPDATE_REQUEST); if (eventId == "STR") { - outMsg.writeShort(0x000d); + outMsg.writeInt16(0x000d); } if (eventId == "AGI") { - outMsg.writeShort(0x000e); + outMsg.writeInt16(0x000e); } if (eventId == "VIT") { - outMsg.writeShort(0x000f); + outMsg.writeInt16(0x000f); } if (eventId == "INT") { - outMsg.writeShort(0x0010); + outMsg.writeInt16(0x0010); } if (eventId == "DEX") { - outMsg.writeShort(0x0011); + outMsg.writeInt16(0x0011); } if (eventId == "LUK") { - outMsg.writeShort(0x0012); + outMsg.writeInt16(0x0012); } - outMsg.writeByte(1); + outMsg.writeInt8(1); } } diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp index 19aaab9e..818b8b61 100644 --- a/src/gui/trade.cpp +++ b/src/gui/trade.cpp @@ -242,9 +242,9 @@ void TradeWindow::receivedOk(bool own) void TradeWindow::tradeItem(Item *item, int quantity) { MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_ITEM_ADD_REQUEST); - outMsg.writeShort(item->getInvIndex()); - outMsg.writeLong(quantity); + outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST); + outMsg.writeInt16(item->getInvIndex()); + outMsg.writeInt32(quantity); } void TradeWindow::mouseClick(int x, int y, int button, int count) @@ -314,7 +314,7 @@ void TradeWindow::action(const std::string &eventId) else if (eventId == "cancel") { MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_CANCEL_REQUEST); + outMsg.writeInt16(CMSG_TRADE_CANCEL_REQUEST); } else if (eventId == "ok") { @@ -327,19 +327,19 @@ void TradeWindow::action(const std::string &eventId) moneyField->setText(tempMoney[1].str()); MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_ITEM_ADD_REQUEST); - outMsg.writeShort(0); - outMsg.writeLong(tempInt); + outMsg.writeInt16(CMSG_TRADE_ITEM_ADD_REQUEST); + outMsg.writeInt16(0); + outMsg.writeInt32(tempInt); } else { moneyField->setText(""); } moneyField->setEnabled(false); MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_ADD_COMPLETE); + outMsg.writeInt16(CMSG_TRADE_ADD_COMPLETE); } else if (eventId == "trade") { MessageOut outMsg; - outMsg.writeShort(CMSG_TRADE_OK); + outMsg.writeInt16(CMSG_TRADE_OK); } } diff --git a/src/inventory.cpp b/src/inventory.cpp index 63fbab7a..3a2d3742 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -98,9 +98,9 @@ bool Inventory::contains(Item *item) int Inventory::useItem(Item *item) { MessageOut outMsg; - outMsg.writeShort(CMSG_PLAYER_INVENTORY_USE); - outMsg.writeShort(item->getInvIndex()); - outMsg.writeLong(item->getId()); + outMsg.writeInt16(CMSG_PLAYER_INVENTORY_USE); + outMsg.writeInt16(item->getInvIndex()); + outMsg.writeInt32(item->getId()); // Note: id is dest of item, usually player_node->account_ID ?? return 0; } @@ -109,25 +109,25 @@ int Inventory::dropItem(Item *item, int quantity) { // TODO: Fix wrong coordinates of drops, serverside? MessageOut outMsg; - outMsg.writeShort(CMSG_PLAYER_INVENTORY_DROP); - outMsg.writeShort(item->getInvIndex()); - outMsg.writeShort(quantity); + outMsg.writeInt16(CMSG_PLAYER_INVENTORY_DROP); + outMsg.writeInt16(item->getInvIndex()); + outMsg.writeInt16(quantity); return 0; } void Inventory::equipItem(Item *item) { MessageOut outMsg; - outMsg.writeShort(CMSG_PLAYER_EQUIP); - outMsg.writeShort(item->getInvIndex()); - outMsg.writeShort(0); + outMsg.writeInt16(CMSG_PLAYER_EQUIP); + outMsg.writeInt16(item->getInvIndex()); + outMsg.writeInt16(0); } void Inventory::unequipItem(Item *item) { MessageOut outMsg; - outMsg.writeShort(CMSG_PLAYER_UNEQUIP); - outMsg.writeShort(item->getInvIndex()); + outMsg.writeInt16(CMSG_PLAYER_UNEQUIP); + outMsg.writeInt16(item->getInvIndex()); // Tidy equipment directly to avoid weapon still shown bug, by instance Equipment::getInstance()->removeEquipment(item); diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index 25bf2f07..9f2b38f7 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -38,49 +38,47 @@ MessageIn::MessageIn(const char *data, unsigned int length): mPos(0) { // Read the message ID - mId = readShort(); + mId = readInt16(); } -char -MessageIn::readByte() +Sint8 +MessageIn::readInt8() { assert(mPos < mLength); return mData[mPos++]; } -short -MessageIn::readShort() +Sint16 +MessageIn::readInt16() { assert(mPos + 2 <= mLength); mPos += 2; #if SDL_BYTEORDER == SDL_BIG_ENDIAN - return SDL_Swap16(*(short*)(mData + (mPos - 2))); + return SDL_Swap16(*(Sint16*)(mData + (mPos - 2))); #else - return (*(short*)(mData + (mPos - 2))); + return (*(Sint16*)(mData + (mPos - 2))); #endif } -long -MessageIn::readLong() +Sint32 +MessageIn::readInt32() { assert(mPos + 4 <= mLength); mPos += 4; #if SDL_BYTEORDER == SDL_BIG_ENDIAN - return SDL_Swap32(*(long*)(mData + (mPos - 4))); + return SDL_Swap32(*(Sint32*)(mData + (mPos - 4))); #else - return (*(long*)(mData + (mPos - 4))); + return (*(Sint32*)(mData + (mPos - 4))); #endif } void -MessageIn::readCoordinates(unsigned short &x, - unsigned short &y, - unsigned char &direction) +MessageIn::readCoordinates(Uint16 &x, Uint16 &y, Uint8 &direction) { assert(mPos + 3 <= mLength); const char *data = mData + mPos; - short temp; + Sint16 temp; temp = MAKEWORD(data[1] & 0x00c0, data[0] & 0x00ff); x = temp >> 6; @@ -93,13 +91,13 @@ MessageIn::readCoordinates(unsigned short &x, } void -MessageIn::readCoordinatePair(unsigned short &srcX, unsigned short &srcY, - unsigned short &dstX, unsigned short &dstY) +MessageIn::readCoordinatePair(Uint16 &srcX, Uint16 &srcY, + Uint16 &dstX, Uint16 &dstY) { assert(mPos + 5 <= mLength); const char *data = mData + mPos; - short temp; + Sint16 temp; temp = MAKEWORD(data[3], data[2] & 0x000f); dstX = temp >> 2; @@ -129,7 +127,7 @@ MessageIn::readString(int length) // Get string length if (length < 0) { - stringLength = readShort(); + stringLength = readInt16(); } else { stringLength = length; } @@ -149,20 +147,20 @@ MessageIn::readString(int length) return read; } -char& operator<<(char &lhs, MessageIn &msg) +Sint8& operator<<(Sint8 &lhs, MessageIn &msg) { - lhs = msg.readByte(); + lhs = msg.readInt8(); return lhs; } -short& operator<<(short &lhs, MessageIn &msg) +Sint16& operator<<(Sint16 &lhs, MessageIn &msg) { - lhs = msg.readShort(); + lhs = msg.readInt16(); return lhs; } -long& operator<<(long &lhs, MessageIn &msg) +Sint32& operator<<(Sint32 &lhs, MessageIn &msg) { - lhs = msg.readLong(); + lhs = msg.readInt32(); return lhs; } diff --git a/src/net/messagein.h b/src/net/messagein.h index 087d325c..d97cd8b6 100644 --- a/src/net/messagein.h +++ b/src/net/messagein.h @@ -25,15 +25,16 @@ #define _TMW_MESSAGEIN_ #include <string> +#include <SDL_types.h> /** * Used for parsing an incoming message. */ class MessageIn { - friend char& operator<<(char &lhs, MessageIn &msg); - friend short& operator<<(short &lhs, MessageIn &msg); - friend long& operator<<(long &lhs, MessageIn &msg); + friend Sint8& operator<<(Sint8 &lhs, MessageIn &msg); + friend Sint16& operator<<(Sint16 &lhs, MessageIn &msg); + friend Sint32& operator<<(Sint32 &lhs, MessageIn &msg); public: /** @@ -53,26 +54,24 @@ class MessageIn unsigned int getLength() { return mLength; } - char readByte(); /**< Reads a byte. */ - short readShort(); /**< Reads a short. */ - long readLong(); /**< Reads a long. */ + Sint8 readInt8(); /**< Reads a byte. */ + Sint16 readInt16(); /**< Reads a short. */ + Sint32 readInt32(); /**< Reads a long. */ /** * Reads a special 3 byte block used by eAthena, containing x and y * coordinates and direction. */ void - readCoordinates(unsigned short &x, - unsigned short &y, - unsigned char &direction); + readCoordinates(Uint16 &x, Uint16 &y, Uint8 &direction); /** * Reads a special 5 byte block used by eAthena, containing a source * and destination coordinate pair. */ void - readCoordinatePair(unsigned short &srcX, unsigned short &srcY, - unsigned short &dstX, unsigned short &dstY); + readCoordinatePair(Uint16 &srcX, Uint16 &srcY, + Uint16 &dstX, Uint16 &dstY); /** * Skips a given number of bytes. diff --git a/src/net/messageout.cpp b/src/net/messageout.cpp index 713d49be..9b27a6a5 100644 --- a/src/net/messageout.cpp +++ b/src/net/messageout.cpp @@ -57,39 +57,36 @@ void MessageOut::expand(size_t bytes) mDataSize = bytes;*/ } -void MessageOut::writeByte(char value) +void MessageOut::writeInt8(Sint8 value) { - expand(mPos + sizeof(char)); + expand(mPos + sizeof(Sint8)); mData[mPos] = value; - mPos += sizeof(char); - out_size += sizeof(char); + mPos += sizeof(Sint8); + out_size += sizeof(Sint8); } -void MessageOut::writeShort(short value) +void MessageOut::writeInt16(Sint16 value) { - expand(mPos + sizeof(short)); + expand(mPos + sizeof(Sint16)); #if SDL_BYTEORDER == SDL_BIG_ENDIAN - (*(short *)(mData + mPos)) = SDL_Swap16(value); + (*(Sint16 *)(mData + mPos)) = SDL_Swap16(value); #else - (*(short *)(mData + mPos)) = value; + (*(Sint16 *)(mData + mPos)) = value; #endif - mPos += sizeof(short); - out_size += sizeof(short); + mPos += sizeof(Sint16); + out_size += sizeof(Sint16); } -/* - writeLong should use an int because long is 8 bytes in x86_64 arch ! -*/ -void MessageOut::writeLong(int value) +void MessageOut::writeInt32(Sint32 value) { - expand(mPos + sizeof(int)); + expand(mPos + sizeof(Sint32)); #if SDL_BYTEORDER == SDL_BIG_ENDIAN - (*(int *)(mData + mPos)) = SDL_Swap32(value); + (*(Sint32 *)(mData + mPos)) = SDL_Swap32(value); #else - (*(int *)(mData + mPos)) = value; + (*(Sint32 *)(mData + mPos)) = value; #endif - mPos += sizeof(int); - out_size += sizeof(int); + mPos += sizeof(Sint32); + out_size += sizeof(Sint32); } void MessageOut::writeString(const std::string &string, int length) @@ -99,7 +96,7 @@ void MessageOut::writeString(const std::string &string, int length) if (length < 0) { // Write the length at the start if not fixed - writeShort(string.length()); + writeInt16(string.length()); expand(mPos + string.length()); } else @@ -133,20 +130,20 @@ const Packet *MessageOut::getPacket() return mPacket; } -MessageOut& operator<<(MessageOut &msg, const char &rhs) +MessageOut& operator<<(MessageOut &msg, const Sint8 &rhs) { - msg.writeByte(rhs); + msg.writeInt8(rhs); return msg; } -MessageOut& operator<<(MessageOut &msg, const short &rhs) +MessageOut& operator<<(MessageOut &msg, const Sint16 &rhs) { - msg.writeShort(rhs); + msg.writeInt16(rhs); return msg; } -MessageOut& operator<<(MessageOut &msg, const long &rhs) +MessageOut& operator<<(MessageOut &msg, const Sint32 &rhs) { - msg.writeLong(rhs); + msg.writeInt32(rhs); return msg; } diff --git a/src/net/messageout.h b/src/net/messageout.h index 04a5ba91..b2ee506e 100644 --- a/src/net/messageout.h +++ b/src/net/messageout.h @@ -25,6 +25,7 @@ #define _TMW_MESSAGEOUT_ #include <iosfwd> +#include <SDL_types.h> class Packet; @@ -33,9 +34,9 @@ class Packet; */ class MessageOut { - friend MessageOut& operator<<(MessageOut &msg, const char &rhs); - friend MessageOut& operator<<(MessageOut &msg, const short &rhs); - friend MessageOut& operator<<(MessageOut &msg, const long &rhs); + friend MessageOut& operator<<(MessageOut &msg, const Sint8 &rhs); + friend MessageOut& operator<<(MessageOut &msg, const Sint16 &rhs); + friend MessageOut& operator<<(MessageOut &msg, const Sint32 &rhs); public: /** @@ -48,9 +49,9 @@ class MessageOut */ ~MessageOut(); - void writeByte(char value); /**< Writes a byte. */ - void writeShort(short value); /**< Writes a short. */ - void writeLong(int value); /**< Writes a long. */ + void writeInt8(Sint8 value); /**< Writes a byte. */ + void writeInt16(Sint16 value); /**< Writes a short. */ + void writeInt32(Sint32 value); /**< Writes a long. */ /** * Writes a string. If a fixed length is not given (-1), it is stored diff --git a/src/net/protocol.cpp b/src/net/protocol.cpp index 516afa59..e57be110 100644 --- a/src/net/protocol.cpp +++ b/src/net/protocol.cpp @@ -73,16 +73,16 @@ void walk(unsigned short x, unsigned short y, unsigned char direction) char temp[3]; MessageOut outMsg; set_coordinates(temp, x, y, direction); - outMsg.writeShort(0x0085); + outMsg.writeInt16(0x0085); outMsg.writeString(temp, 3); } void action(char type, int id) { MessageOut outMsg; - outMsg.writeShort(0x0089); - outMsg.writeLong(id); - outMsg.writeByte(type); + outMsg.writeInt16(0x0089); + outMsg.writeInt32(id); + outMsg.writeInt8(type); } Being* attack(unsigned short x, unsigned short y, unsigned char direction) |