/*
-Minetest-c55
-Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
CURRENT_PLAYER,
PLAYER,
NODEMETA,
+ DETACHED,
} type;
- std::string name; // PLAYER
+ std::string name; // PLAYER, DETACHED
v3s16 p; // NODEMETA
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_)
{
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){}
};