aboutsummaryrefslogtreecommitdiffstats
path: root/include/inventory.hpp.bak
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2016-10-20 08:44:58 -0400
committerClyne Sullivan <tullivan99@gmail.com>2016-10-20 08:44:58 -0400
commitcb408a63a0f03ccb0b0ce7c338527a3b4964aff9 (patch)
treec373f7f74d0c1b5c834dccf47b7f3b343a0b870b /include/inventory.hpp.bak
parent4f838cdf582f0ace6d7de8cb376dfce7100fbea3 (diff)
removed all old entity stuff
Diffstat (limited to 'include/inventory.hpp.bak')
-rw-r--r--include/inventory.hpp.bak284
1 files changed, 284 insertions, 0 deletions
diff --git a/include/inventory.hpp.bak b/include/inventory.hpp.bak
new file mode 100644
index 0000000..533318c
--- /dev/null
+++ b/include/inventory.hpp.bak
@@ -0,0 +1,284 @@
+#ifndef INVENTORY_H
+#define INVENTORY_H
+
+#include <common.hpp>
+#include <string.h>
+
+#include <texture.hpp>
+#include <events.hpp>
+
+#define DEBUG
+
+class Entity;
+
+/**
+ * The base item class
+ * This stores the name, width, height, and texture(s)
+ */
+class Item {
+private:
+ bool beingUsed;
+
+protected:
+ std::vector<Entity*> interact;
+
+public:
+
+ // what we want to call each item
+ std::string name;
+
+ // how many pixel tall and white each thing is
+ dim2 dim;
+
+ // the total amount of this item each slot can have
+ uint maxStackSize;
+
+ // the array of textures for each frame of animation
+ Texturec *tex;
+
+ // how much the item is rotated in the hand
+ float rotation = 0.0f;
+
+ // return if the item is currently in use
+ virtual bool inUse();
+
+ // set the state of the item
+ virtual void setUse(bool use);
+
+ // add entities to the list of those being interacted
+ virtual void addInteract(Entity* e);
+ virtual void addInteract(std::vector<Entity*> e);
+
+ /**
+ * The function we use to call the child classes ability
+ * Note: Since this function is abstract, we HAVE to create one for each
+ * child class/type of item.
+ */
+ virtual int useItem()=0;
+
+ virtual Item* clone()=0;
+
+ // destructor
+ virtual ~Item();
+ // return the first texture for the item
+ GLuint rtex();
+
+ // return the nth texture for the item
+ GLuint rtex(int n);
+};
+
+/**
+ * Class for blank items, we use this for items that do not have an ability
+ * Like Quest or Debug items
+ */
+class BaseItem : public Item {
+public:
+ // since the items don't have a use, we don't make one for it
+ int useItem();
+
+ BaseItem* clone();
+
+ //~BaseItem(){}
+};
+
+/**
+ * Sword class. This is for swords, y'know. Pretty basic stuff
+ */
+class Sword : public Item {
+// can't touch this
+private:
+ /**
+ * How much damage our sword will do
+ * notice that it's private to avoid a change
+ */
+ float damage;
+
+ Ray hitbox;
+
+//can touch this
+public:
+ /**
+ * Lets us return the amount of damage the sword has
+ * TODO takes into account enchants and/or buffs/nerfs
+ */
+ //TODO move
+ float getDamage();
+
+ // set the damage of the sword
+ void setDamage(float d);
+
+ /**
+ * handles the swinging of the sword
+ */
+ //TODO move
+ int useItem();
+
+ Sword* clone();
+};
+
+class Arrow : public Item {
+private:
+ // same as sword
+ float damage;
+public:
+
+ // see sword
+ float getDamage();
+
+ // sets amount of damage
+ void setDamage(float d);
+
+ // uses item
+ int useItem();
+
+ Arrow *clone();
+};
+
+/**
+ * Bow class. We use this for shooting bow and arrows
+ */
+class Bow : public Item {
+private:
+ // same as sword
+ float damage;
+public:
+ // returns the amount of damage, see sword
+ float getDamage();
+
+ // sets the amount of damages
+ void setDamage(float d);
+
+ // handles shooting and arrow curving
+ int useItem();
+
+ Bow* clone();
+};
+
+/**
+ * Raw food class, this will be used for uncooked meats...
+ * TODO Eating this may cause health loss, salmonela, mad cow diese
+ */
+class RawFood : public Item {
+private:
+ // the amount of the health the food heals
+ float health;
+
+public:
+ // since the health is private, we get how much it is here
+ float getHealth();
+
+ // TODO chance to hurt
+ virtual int useItem();
+
+ RawFood* clone();
+};
+
+/**
+ * Cooked/Naturale food class
+ * When this food is consumed, higher stats are gained than Raw Food and
+ * there is no chance of damage/de-buffs
+ */
+class Food : public RawFood {
+private:
+public:
+
+ // consume food in hand, no chance for de-buff;
+ int useItem();
+
+ Food* clone();
+};
+
+class ItemLight : public Item {
+private:
+ // the color of the light
+ Color color;
+public:
+ // turn on/off the light
+ // TODO
+ int useItem();
+
+ ItemLight* clone();
+};
+
+/**
+ * Currency class. Well, it's used for currency
+ */
+class NewCurrency : public Item {
+private:
+ // how much the coin is "worth" so to say
+ int value;
+public:
+ // get the value of the coin
+ int getValue();
+
+ // TODO maybe play a jingling noise
+ // probably won't have a use
+ int useItem();
+
+ NewCurrency(){}
+ ~NewCurrency(){}
+};
+
+/***********************************************************************************
+ * OLD STUFF THAT NEEDS TO GET UPDATED *
+ **********************************************************************************/
+
+using InventorySlot = std::pair<Item *, unsigned int>;
+
+class Inventory {
+private:
+ unsigned int size; //how many slots our inventory has
+ unsigned int sel; //what item is currently selected
+ int os = 0;
+public:
+ std::vector<InventorySlot> Items;
+
+ bool invOpen = false; //is the inventory open
+ bool invOpening = false; //is the opening animation playing
+ bool invHover = false; //are we using the fancy hover inventory
+ bool selected = false; //used in hover inventory to show which item has been selected
+ bool mouseSel = false; //the location of the temperary selection for the hover inv
+ bool usingi = false; //bool used to tell if inventory owner is using selected item
+
+ Inventory(unsigned int s); // Creates an inventory of size 's'
+ ~Inventory(void); // Free's allocated memory
+
+ int useCurrent();
+ void currentAddInteract(Entity* e);
+ void currentAddInteract(std::vector<Entity*> e);
+
+ int addItem(std::string name,uint count);
+ int takeItem(std::string name,uint count);
+ int hasItem(std::string name);
+
+ int useItem(void);
+ bool detectCollision(vec2,vec2);
+
+ void setSelection(unsigned int s);
+ void setSelectionUp();
+ void setSelectionDown();
+
+ void draw(void); // Draws a text list of items in this inventory (should only be called for the player for now)
+
+ const Item* getCurrentItem(void);
+};
+
+void initInventorySprites(void);
+void destroyInventory(void);
+
+const char *getItemTexturePath(std::string name);
+GLuint getItemTexture(std::string name);
+float getItemWidth(std::string name);
+float getItemHeight(std::string name);
+
+#include <entityx/entityx.h>
+
+class InventorySystem : public entityx::System<InventorySystem>, public entityx::Receiver<InventorySystem> {
+public:
+ void update(entityx::EntityManager &en, entityx::EventManager &ev, entityx::TimeDelta dt) override;
+
+ void configure(entityx::EventManager &em);
+ void receive(const MouseScrollEvent &mse);
+};
+
+#endif // INVENTORY_H