]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/item.h
removed c_store.cpp
[irc/gameservirc.git] / gameserv / item.h
index 69719c453c149db80706d19b770a91e575cb61f3..4290e62b875e39917ee8f0b1888dfe0f652b0f42 100644 (file)
 #define ITEM_H
 
 
-#include <string.h>
-#include "player.h"
+#include <string>
+#include "level.h"
+
+using namespace std;
+
+class Player; // Forward declaration
+enum type { WEAPON, ARMOR, POTION };
 
 class item
 {
  public:
-  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);
+  item();
+  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);
+  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);
+
   virtual ~item();
   
   int uses() { return myuses; };
   long int price() { return myprice; };
+
+  string getName () { return myname; };
   
   virtual bool use(Player *p) = 0;
-  virtual void undo() = 0;
+  virtual void undo(Player *p) = 0;
+  virtual bool setData(char *datastr) = 0;
+
+  type getType() {return mytype;};
+  void setType(type);
+  long int getID() {return id;};
 
   bool operator<(const item &right) const;
   bool operator>(const item &right) const;
   bool operator==(const item &right) const;
   bool operator!=(const item &right) const;
+  item &operator=(const item &right);
   
  protected:
-  string myname;         // Name to use in game & sorting
+  string myname;         // Name to use in game
   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
+  int myuses;            // How many times this item can be used by default
+  long int id;           // Unique identifier for the item
+  type mytype;
+};
+
+class itemContainer
+{
+ public:
+  itemContainer();
+  itemContainer(item *);
+  itemContainer(const itemContainer &);
+  ~itemContainer();
+
+  itemContainer &operator ++();
+  itemContainer operator ++(int);
+
+  itemContainer &operator --();
+  itemContainer operator --(int);
+
+  bool operator <(const itemContainer &right) const;
+  bool operator >(const itemContainer &right) const;
+  bool operator ==(const itemContainer &right) const;
+  bool operator !=(const itemContainer &right) const;
+
+  item *getItem() {return myitem;};
+  void setItem(item *);
+
+  int getUses() { return myuses; };
+  void setUses(int);
+  void use(Player *p);
+
+ private:
+  int myuses;              // How many times this item can be used
+  item *myitem; 
 };
 
 class weapon : public item
 {
   public:
-  weapon(char *name, int p=0, int uses = -1, int strength=0, int defense=0, int maxhp=0) : item(name, p, uses, strength, defense, maxhp){};
-  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){};
-  virtual ~weapon();
+  weapon() : item() {myname = "New Weapon";};
+  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){};
+  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){};
+  ~weapon();
+
+  bool setData(char *datastr);
+  bool use(Player *p);
+  void undo(Player *p);
 
-  virtual bool use(Player *p);
-  virtual void undo(Player *p);
 };
 
 class armor : public item
 {
   public:
-  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();
+  armor() : item(){};
+  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){};
+  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){};
+  ~armor();
 
-  virtual bool use(Player *p);
-  virtual void undo(Player *p);
+  bool setData(char *datastr);
+  bool use(Player *p);
+  void undo(Player *p);
 };
 
 class potion : public item
 {
   public:
-  potion(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){};
-  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){};
-  virtual ~potion();
+  potion() : item(){};
+  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){};
+  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){};
+  ~potion();
+
+  bool setData(char *datastr);
+  bool use(Player *p);
+  void undo(Player *p);
+
+ protected:
+  range myranges[8];
+};
+
+class tavernItem
+{
+ public:
+  tavernItem();
+  tavernItem(item *, int);
+
+
+  void setItem(item*);
+  item *getItem() { return myItem; };
+
+  void setLevel(int);
+  int getLevel() { return myLevel; };
+
+  bool visible(Player *);
+
+
+ private:
 
-  virtual bool use(Player *p);
-  virtual void undo(Player *p) { return; }; // You can't undo a potion
+  item *myItem; // The item this actually points to
+  int myLevel;    // The level the item shows up
 };
 #endif