]>
Commit | Line | Data |
---|---|---|
8ad9f659 | 1 | #ifndef ITEM_H |
2 | #define ITEM_H | |
3 | ||
26b17386 | 4 | |
37ed80a9 | 5 | #include <string> |
b6bf4226 | 6 | #include "level.h" |
37ed80a9 | 7 | |
8 | using namespace std; | |
9 | ||
10 | class Player; // Forward declaration | |
b6bf4226 | 11 | enum type { WEAPON, ARMOR, POTION }; |
8ad9f659 | 12 | |
13 | class item | |
14 | { | |
15 | public: | |
37ed80a9 | 16 | item(); |
b6bf4226 | 17 | item(const char *name, long int p=0, int uses=1, long int identifier=0, int m1=0, int m2=0, int m3=0, int m4=0, int m5=0, int m6=0, int m7=0, int m8=0); |
18 | item(string name, long int p=0, int uses=1, long int identifier=0, int m1=0, int m2=0, int m3=0, int m4=0, int m5=0, int m6=0, int m7=0, int m8=0); | |
37ed80a9 | 19 | |
8ad9f659 | 20 | virtual ~item(); |
21 | ||
22 | int uses() { return myuses; }; | |
23 | long int price() { return myprice; }; | |
37ed80a9 | 24 | |
25 | string getName () { return myname; }; | |
8ad9f659 | 26 | |
27 | virtual bool use(Player *p) = 0; | |
37ed80a9 | 28 | virtual void undo(Player *p) = 0; |
7f56a68b | 29 | virtual bool setData(char *datastr) = 0; |
b6bf4226 | 30 | |
31 | type getType() {return mytype;}; | |
32 | void setType(type); | |
e0056fa6 | 33 | long int getID() {return id;}; |
26b17386 | 34 | |
35 | bool operator<(const item &right) const; | |
36 | bool operator>(const item &right) const; | |
37 | bool operator==(const item &right) const; | |
38 | bool operator!=(const item &right) const; | |
7f56a68b | 39 | item &operator=(const item &right); |
8ad9f659 | 40 | |
41 | protected: | |
1ee4a31b | 42 | string myname; // Name to use in game |
26b17386 | 43 | long int myprice; // How much does this item cost to buy (half to sell) |
44 | int mymodifiers[8]; // Up to 8 different modifiers handled in the sub-classes | |
37ed80a9 | 45 | int myuses; // How many times this item can be used by default |
b6bf4226 | 46 | long int id; // Unique identifier for the item |
47 | type mytype; | |
37ed80a9 | 48 | }; |
49 | ||
e696687e | 50 | class itemContainer |
37ed80a9 | 51 | { |
52 | public: | |
53 | itemContainer(); | |
54 | itemContainer(item *); | |
e696687e | 55 | itemContainer(const itemContainer &); |
37ed80a9 | 56 | ~itemContainer(); |
57 | ||
58 | itemContainer &operator ++(); | |
e696687e | 59 | itemContainer operator ++(int); |
60 | ||
61 | itemContainer &operator --(); | |
62 | itemContainer operator --(int); | |
63 | ||
64 | bool operator <(const itemContainer &right) const; | |
65 | bool operator >(const itemContainer &right) const; | |
66 | bool operator ==(const itemContainer &right) const; | |
67 | bool operator !=(const itemContainer &right) const; | |
68 | ||
69 | item *getItem() {return myitem;}; | |
70 | void setItem(item *); | |
37ed80a9 | 71 | |
e0056fa6 | 72 | int getUses() { return myuses; }; |
73 | void setUses(int); | |
8a5cec4f | 74 | void use(Player *p); |
e0056fa6 | 75 | |
37ed80a9 | 76 | private: |
e696687e | 77 | int myuses; // How many times this item can be used |
37ed80a9 | 78 | item *myitem; |
8ad9f659 | 79 | }; |
80 | ||
81 | class weapon : public item | |
82 | { | |
18f9660e | 83 | public: |
37ed80a9 | 84 | weapon() : item() {myname = "New Weapon";}; |
b6bf4226 | 85 | weapon(const char *name, int p=0, int uses = -1, long int identifier=0, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){}; |
86 | weapon(string name, int p=0, int uses = -1, long int identifier=0, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){}; | |
37ed80a9 | 87 | ~weapon(); |
8ad9f659 | 88 | |
7f56a68b | 89 | bool setData(char *datastr); |
37ed80a9 | 90 | bool use(Player *p); |
91 | void undo(Player *p); | |
7f56a68b | 92 | |
8ad9f659 | 93 | }; |
26b17386 | 94 | |
95 | class armor : public item | |
96 | { | |
18f9660e | 97 | public: |
37ed80a9 | 98 | armor() : item(){}; |
b6bf4226 | 99 | armor(const char *name, int p=0, int uses = -1, long int identifier=0, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){}; |
100 | armor(string name, int p=0, int uses = -1, long int identifier=0, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){}; | |
37ed80a9 | 101 | ~armor(); |
26b17386 | 102 | |
7f56a68b | 103 | bool setData(char *datastr); |
37ed80a9 | 104 | bool use(Player *p); |
105 | void undo(Player *p); | |
26b17386 | 106 | }; |
8ad9f659 | 107 | |
108 | class potion : public item | |
109 | { | |
18f9660e | 110 | public: |
37ed80a9 | 111 | potion() : item(){}; |
b6bf4226 | 112 | potion(const char *name, int p=0, int uses = 1, long int identifier=0, int strength=0, int defense=0, int maxhp=0, int hp=0, int forest_fights=0, int player_fights=0, int gold=0, int bank=0) : item(name, p, uses, strength, defense, maxhp, hp, forest_fights, player_fights, gold, bank){}; |
113 | potion(string name, int p=0, int uses = 1, long int identifier=0, int strength=0, int defense=0, int maxhp=0, int hp=0, int forest_fights=0, int player_fights=0, int gold=0, int bank=0) : item(name, p, uses, strength, defense, maxhp, hp, forest_fights, player_fights, gold, bank){}; | |
37ed80a9 | 114 | ~potion(); |
8ad9f659 | 115 | |
7f56a68b | 116 | bool setData(char *datastr); |
37ed80a9 | 117 | bool use(Player *p); |
118 | void undo(Player *p); | |
b6bf4226 | 119 | |
120 | protected: | |
e0056fa6 | 121 | range myranges[8]; |
8ad9f659 | 122 | }; |
d1927afc | 123 | |
124 | class tavernItem | |
125 | { | |
126 | public: | |
127 | tavernItem(); | |
128 | tavernItem(item *, int); | |
129 | ||
130 | ||
131 | void setItem(item*); | |
132 | item *getItem() { return myItem; }; | |
133 | ||
134 | void setLevel(int); | |
135 | int getLevel() { return myLevel; }; | |
136 | ||
137 | bool visible(Player *); | |
138 | ||
139 | ||
140 | private: | |
1e7678e9 | 141 | |
d1927afc | 142 | item *myItem; // The item this actually points to |
143 | int myLevel; // The level the item shows up | |
144 | }; | |
8ad9f659 | 145 | #endif |