1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-02 16:38:41 +00:00

Inventory menu (with dragging) improved. Crafting is now handled via a IACTION_CRAFT inventory action.

This commit is contained in:
Kahrl 2012-01-21 21:21:41 +01:00 committed by Perttu Ahola
parent 157a4cf18c
commit 1efdc36b22
9 changed files with 550 additions and 289 deletions

View file

@ -92,6 +92,7 @@ public:
#define IACTION_MOVE 0
#define IACTION_DROP 1
#define IACTION_CRAFT 2
struct InventoryAction
{
@ -99,7 +100,8 @@ struct InventoryAction
virtual u16 getType() const = 0;
virtual void serialize(std::ostream &os) const = 0;
virtual void apply(InventoryManager *mgr, ServerActiveObject *player) = 0;
virtual void apply(InventoryManager *mgr, ServerActiveObject *player,
IGameDef *gamedef) = 0;
};
struct IMoveAction : public InventoryAction
@ -139,7 +141,7 @@ struct IMoveAction : public InventoryAction
os<<to_i;
}
void apply(InventoryManager *mgr, ServerActiveObject *player);
void apply(InventoryManager *mgr, ServerActiveObject *player, IGameDef *gamedef);
};
struct IDropAction : public InventoryAction
@ -172,8 +174,40 @@ struct IDropAction : public InventoryAction
os<<from_i;
}
void apply(InventoryManager *mgr, ServerActiveObject *player);
void apply(InventoryManager *mgr, ServerActiveObject *player, IGameDef *gamedef);
};
struct ICraftAction : public InventoryAction
{
// count=0 means "everything"
u16 count;
InventoryLocation craft_inv;
ICraftAction()
{
count = 0;
}
ICraftAction(std::istream &is);
u16 getType() const
{
return IACTION_CRAFT;
}
void serialize(std::ostream &os) const
{
os<<"Craft ";
os<<count<<" ";
os<<craft_inv.dump()<<" ";
}
void apply(InventoryManager *mgr, ServerActiveObject *player, IGameDef *gamedef);
};
// Crafting helper
bool getCraftingResult(Inventory *inv, ItemStack& result,
bool decrementInput, IGameDef *gamedef);
#endif