diff options
author | Stijn Buys <ingar@osirion.org> | 2012-10-20 16:35:26 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2012-10-20 16:35:26 +0000 |
commit | 75274ebd6ba90784f5aa837b7e5ea97fc6bfb720 (patch) | |
tree | a5d51a87bf3f20833df18bc40a3254b946716afb /src/core/netserver.cc | |
parent | f01629dc14b1ee05b44d2e38b3dffbc1441fd85f (diff) |
Item id based inventory, support for weapon dealers.
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r-- | src/core/netserver.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/core/netserver.cc b/src/core/netserver.cc index 81bd303..9fb5f78 100644 --- a/src/core/netserver.cc +++ b/src/core/netserver.cc @@ -667,16 +667,27 @@ void NetServer::send_inventory_update(NetClient *client, Entity *entity, const u if (!entity || !entity->inventory()) return; + // send message header std::ostringstream msg; msg << "inv " << entity->id() << " " << game()->timestamp() << " "; - size_t nbitems = 0; + // send full update marker + bool send_full_update = false; + if (entity->inventory()->timestamp_erase() >= timestamp) { + send_full_update = true; + msg << "1 "; + } else { + send_full_update = false; + msg << "0 "; + } + // send items + size_t nbitems = 0; std::ostringstream itemstr; for (Inventory::Items::const_iterator it = entity->inventory()->items().begin(); it != entity->inventory()->items().end(); it++) { const Item *item = (*it); - if (item->timestamp() >= timestamp) { - itemstr << item->info()->id() << " "; + if (send_full_update || (item->timestamp() >= timestamp)) { + itemstr << item->id() << " " << item->info()->id() << " "; item->serialize_server_update(itemstr); nbitems++; } @@ -733,7 +744,7 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me unsigned int protover; if (msgstream >> protover) { if (protover != PROTOCOLVERSION) { - // set protocol version mismatch notification + // send protocol version mismatch notification std::stringstream netmsgstream(""); netmsgstream << "^WProtocol version mismatch: "; netmsgstream << "client " << protover << " server " << PROTOCOLVERSION << "!\n"; |