#ifndef ITEM_H
#define ITEM_H
-#include "player.h"
+
#include <string.h>
+#include "player.h"
class item
{
public:
- item(char *name, int p=0, int uses = 1, int m1=0, int m2=0, int m3=0, int m4=0, int m5=0, int m6=0, int m7=0, int m8=0);
- item(string name, int p=0, int uses = 1, int m1=0, int m2=0, int m3=0, int m4=0, int m5=0, int m6=0, int m7=0, int m8=0);
+ item(char *name=NULL, int p=0, int uses=1, int m1=0, int m2=0, int m3=0, int m4=0, int m5=0, int m6=0, int m7=0, int m8=0);
+ item(string name=NULL, int p=0, int uses=1, int m1=0, int m2=0, int m3=0, int m4=0, int m5=0, int m6=0, int m7=0, int m8=0);
virtual ~item();
int uses() { return myuses; };
long int price() { return myprice; };
virtual bool use(Player *p) = 0;
- virtual void undo(Player *p) = 0;
+ virtual void undo() = 0;
+
+ bool operator<(const item &right) const;
+ bool operator>(const item &right) const;
+ bool operator==(const item &right) const;
+ bool operator!=(const item &right) const;
protected:
- string myname;
- long int myprice;
- int mymodifiers[8];
- int myuses;
+ string myname; // Name to use in game & sorting
+ long int myprice; // How much does this item cost to buy (half to sell)
+ int mymodifiers[8]; // Up to 8 different modifiers handled in the sub-classes
+ int myuses; // How many times you can use this item
};
class weapon : public item
virtual bool use(Player *p);
virtual void undo(Player *p);
};
-typedef weapon armor; // Weapons and armor are logically the same if they can both modify strength, defense, and maxhp
+
+class armor : public item
+{
+ armor(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
+ armor(string name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
+ virtual ~armor();
+
+ virtual bool use(Player *p);
+ virtual void undo(Player *p);
+};
class potion : public item
{