X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Finventorymanager.h;h=f81f5b972b8c4eceb49187893870ace0b6af07f8;hb=6b9906687b85fcefa28df572d92a3dea3118c0a3;hp=009db48367ef82f4db07c348553b30566b5e716a;hpb=037b2591971d752e67fa7d47095b996b3f56da5a;p=oweals%2Fminetest.git diff --git a/src/inventorymanager.h b/src/inventorymanager.h index 009db4836..f81f5b972 100644 --- a/src/inventorymanager.h +++ b/src/inventorymanager.h @@ -32,9 +32,10 @@ struct InventoryLocation CURRENT_PLAYER, PLAYER, NODEMETA, + DETACHED, } type; - std::string name; // PLAYER + std::string name; // PLAYER, DETACHED v3s16 p; // NODEMETA InventoryLocation() @@ -59,6 +60,34 @@ struct InventoryLocation type = NODEMETA; p = p_; } + void setDetached(const std::string &name_) + { + type = DETACHED; + name = name_; + } + + bool operator==(const InventoryLocation &other) const + { + if(type != other.type) + return false; + switch(type){ + case UNDEFINED: + return false; + case CURRENT_PLAYER: + return true; + case PLAYER: + return (name == other.name); + case NODEMETA: + return (p == other.p); + case DETACHED: + return (name == other.name); + } + return false; + } + bool operator!=(const InventoryLocation &other) const + { + return !(*this == other); + } void applyCurrentPlayer(const std::string &name_) { @@ -80,13 +109,11 @@ public: InventoryManager(){} virtual ~InventoryManager(){} - // Get an inventory or set it modified (so it will be updated over - // network or so) + // Get an inventory (server and client) virtual Inventory* getInventory(const InventoryLocation &loc){return NULL;} - virtual std::string getInventoryOwner(const InventoryLocation &loc){return "";} + // Set modified (will be saved and sent over network; only on server) virtual void setInventoryModified(const InventoryLocation &loc){} - - // Used on the client to send an action to the server + // Send inventory action to server (only on client) virtual void inventoryAction(InventoryAction *a){} };