]> jfr.im git - irc/gameservirc.git/blob - gameserv/item.h
Shrunk the dependencies immensely with forward declarations in all H files instead...
[irc/gameservirc.git] / gameserv / item.h
1 #ifndef ITEM_H
2 #define ITEM_H
3
4
5 #include <string>
6
7 using namespace std;
8
9 class Player; // Forward declaration
10
11 class item
12 {
13 public:
14 item();
15 item(const char *name, long 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);
16 item(string name, long 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);
17
18 virtual ~item();
19
20 int uses() { return myuses; };
21 long int price() { return myprice; };
22
23 string getName () { return myname; };
24
25 virtual bool use(Player *p) = 0;
26 virtual void undo(Player *p) = 0;
27
28 bool operator<(const item &right) const;
29 bool operator>(const item &right) const;
30 bool operator==(const item &right) const;
31 bool operator!=(const item &right) const;
32
33 protected:
34 string myname; // Name to use in game & sorting
35 long int myprice; // How much does this item cost to buy (half to sell)
36 int mymodifiers[8]; // Up to 8 different modifiers handled in the sub-classes
37 int myuses; // How many times this item can be used by default
38 };
39
40 /*class itemContainer
41 {
42 public:
43 itemContainer();
44 itemContainer(item *);
45 ~itemContainer();
46
47 itemContainer &operator ++();
48 itemContainer operator ++(itemContainer);
49
50 private:
51 int myuses; How many times
52 item *myitem;
53 };
54 */
55
56 class weapon : public item
57 {
58 public:
59 weapon() : item() {myname = "New Weapon";};
60 weapon(const char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
61 weapon(string name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
62 ~weapon();
63
64 bool use(Player *p);
65 void undo(Player *p);
66 };
67
68 class armor : public item
69 {
70 public:
71 armor() : item(){};
72 armor(const char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
73 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){};
74 ~armor();
75
76 bool use(Player *p);
77 void undo(Player *p);
78 };
79
80 class potion : public item
81 {
82 public:
83 potion() : item(){};
84 potion(const char *name, int p=0, int uses = 1, 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){};
85 potion(string name, int p=0, int uses = 1, 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){};
86 ~potion();
87
88 bool use(Player *p);
89 void undo(Player *p);
90 };
91 #endif