]> jfr.im git - irc/gameservirc.git/blame - gameserv/item.h
Removed GameServ.suo
[irc/gameservirc.git] / gameserv / item.h
CommitLineData
8ad9f659 1#ifndef ITEM_H
2#define ITEM_H
3
26b17386 4
37ed80a9 5#include <string>
b6bf4226 6#include "level.h"
37ed80a9 7
8using namespace std;
9
10class Player; // Forward declaration
b6bf4226 11enum type { WEAPON, ARMOR, POTION };
8ad9f659 12
13class 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 50class 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
81class 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
95class 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
108class 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
124class 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