#ifndef INVENTORY_H #define INVENTORY_H #include #include #define DEBUG #define ID Item( #define NAME , #define TYPE , #define WIDTH , #define HEIGHT , #define STACKSIZE , #define TEX , #define ENI ), #define STOP ) /* * A list of all item IDs. */ enum ITEM_ID { DEBUG_ITEM = 0, TEST_ITEM = 1, PLAYER_BAG = 2, FLASHLIGHT = 3, SWORD_WOOD = 4 }; enum ITEM_TYPE{ TOOL = 1, SWORD = 2, RANGED = 3, EQUIP = 4, FOOD = 5 }; class Item{ protected: public: ITEM_ID id; // ID of the item char *name; ITEM_TYPE type; // What category the item falls under float width; float height; int maxStackSize; char* textureLoc; Texturec *tex; GLuint text; Item(ITEM_ID i, const char *n, ITEM_TYPE t, float w, float h, int m, const char *tl); GLuint rtex(){ return tex->image[0]; } }; struct item_t{ int count; ITEM_ID id; } __attribute__((packed)); class Inventory { private: unsigned int size; // Size of 'item' array item_t *inv; int os = 0; public: unsigned int sel; bool invOpen = false; bool invOpening = false; bool invHover = false; bool selected = false; bool mouseSel = false; bool usingi = false; Inventory(unsigned int s); // Creates an inventory of size 's' ~Inventory(void); // Free's allocated memory int addItem(ITEM_ID id,unsigned char count); // Add 'count' items with an id of 'id' to the inventory int takeItem(ITEM_ID id,unsigned char count); // Take 'count' items with an id of 'id' from the inventory int useItem(void); bool detectCollision(vec2,vec2); void setSelection(unsigned int s); void draw(void); // Draws a text list of items in this inventory (should only be called for the player for now) }; void itemUse(void *p); void initInventorySprites(void); char *getItemTexturePath(ITEM_ID id); int getItemWidth(ITEM_ID); int getItemHeight(ITEM_ID); #endif // INVENTORY_H