#pragma once class Container; class Slot { private: int slot; public: shared_ptr container; public: int index; int x, y; Slot(shared_ptr container, int slot, int x, int y); virtual ~Slot() {} void onQuickCraft(shared_ptr picked, shared_ptr original); protected: virtual void onQuickCraft(shared_ptr picked, int count); virtual void checkTakeAchievements(shared_ptr picked); public: void swap(Slot *other); virtual void onTake(shared_ptr player, shared_ptr carried); virtual bool mayPlace(shared_ptr item); virtual shared_ptr getItem(); virtual bool hasItem(); virtual void set(shared_ptr item); virtual void setChanged(); virtual int getMaxStackSize(); virtual Icon *getNoItemIcon(); virtual shared_ptr remove(int c); virtual bool isAt(shared_ptr c, int s); virtual bool mayPickup(shared_ptr player); virtual bool mayCombine(shared_ptr item); // 4J Added virtual shared_ptr combine(shared_ptr item); // 4J Added };