]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/inventorymanager.h
Remove unused ITextSceneNode header (#11476)
[dragonfireclient.git] / src / inventorymanager.h
index 9ae92e5f4ba2c1922d4d1fdb269d1c4f96347e57..4ad5d3f49ae0b2d8eccae0f0ed4e440269873377 100644 (file)
@@ -97,7 +97,7 @@ struct InventoryLocation
        std::string dump() const;
        void serialize(std::ostream &os) const;
        void deSerialize(std::istream &is);
-       void deSerialize(std::string s);
+       void deSerialize(const std::string &s);
 };
 
 struct InventoryAction;
@@ -111,7 +111,7 @@ class InventoryManager
        // Get an inventory (server and client)
        virtual Inventory* getInventory(const InventoryLocation &loc){return NULL;}
     // Set modified (will be saved and sent over network; only on server)
-       virtual void setInventoryModified(const InventoryLocation &loc, bool playerSend = true){}
+       virtual void setInventoryModified(const InventoryLocation &loc{}
     // Send inventory action to server (only on client)
        virtual void inventoryAction(InventoryAction *a){}
 };
@@ -134,16 +134,20 @@ struct InventoryAction
        virtual ~InventoryAction() = default;;
 };
 
-struct IMoveAction : public InventoryAction
+struct MoveAction
 {
-       // count=0 means "everything"
-       u16 count = 0;
        InventoryLocation from_inv;
        std::string from_list;
        s16 from_i = -1;
        InventoryLocation to_inv;
        std::string to_list;
        s16 to_i = -1;
+};
+
+struct IMoveAction : public InventoryAction, public MoveAction
+{
+       // count=0 means "everything"
+       u16 count = 0;
        bool move_somewhere = false;
 
        // treat these as private
@@ -179,15 +183,24 @@ struct IMoveAction : public InventoryAction
        void apply(InventoryManager *mgr, ServerActiveObject *player, IGameDef *gamedef);
 
        void clientApply(InventoryManager *mgr, IGameDef *gamedef);
+
+       void swapDirections();
+
+       void onPutAndOnTake(const ItemStack &src_item, ServerActiveObject *player) const;
+
+       void onMove(int count, ServerActiveObject *player) const;
+
+       int allowPut(const ItemStack &dst_item, ServerActiveObject *player) const;
+
+       int allowTake(const ItemStack &src_item, ServerActiveObject *player) const;
+
+       int allowMove(int try_take_count, ServerActiveObject *player) const;
 };
 
-struct IDropAction : public InventoryAction
+struct IDropAction : public InventoryAction, public MoveAction
 {
        // count=0 means "everything"
        u16 count = 0;
-       InventoryLocation from_inv;
-       std::string from_list;
-       s16 from_i = -1;
 
        IDropAction() = default;