My Project
 
Loading...
Searching...
No Matches
item.h
Go to the documentation of this file.
1#pragma once
2
3#include "bundlable.h"
4//#include "hero.h"
5#include "itemsprite.h"
6#include "cellselector.h"
7#include <string>
8#include <vector>
9#include "typedefine.h"
10
11class Bag;
12class Hero;
13class Char;
14
15class Item :public Bundlable, public Object{
16private:
17 static const char* TXT_PACK_FULL;
18
19 static const char* TXT_BROKEN;
20 static const char* TXT_GONNA_BREAK;
21
22 static const char* TXT_TO_STRING;
23 static const char* TXT_TO_STRING_X;
24 static const char* TXT_TO_STRING_LVL;
25 static const char* TXT_TO_STRING_LVL_X;
26
27 static const float DURABILITY_WARNING_LEVEL;
28
29protected:
30 static const float TIME_TO_THROW;
31 static const float TIME_TO_PICK_UP;
32 static const float TIME_TO_DROP;
33
34 static const std::string AC_DROP;
35 static const std::string AC_THROW;
36
38
39 virtual void onThrow(int cell);
40 virtual void onDetach() {
41 }
42public:
43 static Hero* curUser;
44 static Item* curItem;
45
46 std::string defaultAction;
47
48 std::string name = "smth";
49 int image = 0;
50
53
54public:
55 bool stackable = false;
56 bool levelKnown = false;
57 bool cursed;
59
60 bool unique = false;
61
63
64private:
65 int level = 0;
66 int durability;// = maxDurability();
67
68public:
69 Item();
70 virtual void actions(Hero* hero, std::vector<std::string>& actions);
71 virtual bool doPickUp(Hero* hero);
72 virtual void doDrop(Hero* hero);
73 virtual void doThrow(Hero* hero);
74
75 static void evoke(Hero* hero);
76 virtual std::string toString();
77 virtual std::string Name();
78 std::string trueName() { return name; }
79 int Image();
80 Item* detach(Bag* container);
81 Item* detachAll(Bag* container);
82
83 virtual ItemSprite::Glowing* glowing() { return NULL; }
84
85 virtual void storeInBundle(Bundle* bundle);
86 virtual void restoreFromBundle(Bundle* bundle);
87 virtual bool isUpgradable() { return true; }
88 virtual bool isIdentified() { return levelKnown && cursedKnown; }
89 virtual bool isEquipped(Hero* hero) { return false; }
90 virtual int effectiveLevel();
91
92 virtual std::string info() { return desc(); }
93 virtual std::string desc() { return ""; }
94 virtual int price() { return 0; }
95 int Quantity() {
96 return quantity;
97 }
98
99 void Quantity(int value) {
100 quantity = value;
101 }
102
103 virtual void execute(Hero* hero, std::string action);
104 virtual void cast(Hero* user, int dst);
105 virtual void getBroken() { }
106 bool isBroken() {
107 return durability <= 0;
108 }
109 virtual void fix();
110 virtual int maxDurability(int lvl) { return 1; }
111 int maxDurability() { return maxDurability(level); }
112
114 return levelKnown ? level : 0;
115 }
116 virtual Item* identify();
117 virtual Item* random() { return this; }
118 virtual void Level(int value) { level = value; }
119 int Level() { return level; }
120 virtual boolean collect(Bag* container);
121 void use();
122
123 void updateQuickslot();
124 virtual Item* upgrade() {
125
126 cursed = false;
127 cursedKnown = true;
128
129 level++;
130 fix();
131
132 return this;
133 }
134 virtual Item* degrade() {
135 this->level--;
136 fix();
137
138 return this;
139 }
140 Item* degrade(int n){
141 for (int i = 0; i < n; i++) {
142 degrade();
143 }
144
145 return this;
146 }
147 int considerState(int price);
148 void polish() {
149 if (durability < maxDurability()) {
150 durability++;
151 }
152 }
153 std::string status();
154
155 static Item* Virtual(const std::string& cl);
156};
157
Definition bag.h:9
Definition cellselector.h:9
Definition char.h:9
Definition hero.h:18
Definition item.h:15
static const std::string AC_DROP
Definition item.h:34
int Level()
Definition item.h:119
virtual Item * upgrade()
Definition item.h:124
virtual ItemSprite::Glowing * glowing()
Definition item.h:83
CLASSOBJECT(Item)
Item * detachAll(Bag *container)
Definition item.cpp:172
virtual void execute(Hero *hero, std::string action)
Definition item.cpp:236
void polish()
Definition item.h:148
static void evoke(Hero *hero)
Definition item.cpp:103
int visiblyUpgraded()
Definition item.h:113
void Quantity(int value)
Definition item.h:99
std::string status()
Definition item.cpp:417
bool cursed
Definition item.h:57
bool cursedKnown
Definition item.h:58
Item * degrade(int n)
Definition item.h:140
Item()
Definition item.cpp:65
virtual int price()
Definition item.h:94
int considerState(int price)
Definition item.cpp:394
std::string name
Definition item.h:48
int Quantity()
Definition item.h:95
virtual void doThrow(Hero *hero)
Definition item.cpp:98
bool isBroken()
Definition item.h:106
virtual std::string info()
Definition item.h:92
virtual Item * identify()
Definition item.cpp:293
virtual std::string toString()
Definition item.cpp:108
int maxDurability()
Definition item.h:111
virtual Item * degrade()
Definition item.h:134
virtual Item * random()
Definition item.h:117
void updateQuickslot()
Definition item.cpp:381
static const float TIME_TO_DROP
Definition item.h:32
virtual void storeInBundle(Bundle *bundle)
Definition item.cpp:195
virtual bool isIdentified()
Definition item.h:88
std::string trueName()
Definition item.h:78
virtual std::string Name()
Definition item.cpp:134
std::string defaultAction
Definition item.h:46
static Hero * curUser
Definition item.h:43
virtual void doDrop(Hero *hero)
Definition item.cpp:92
virtual void getBroken()
Definition item.h:105
static const std::string AC_THROW
Definition item.h:35
int quantity
Definition item.h:62
virtual void cast(Hero *user, int dst)
Definition item.cpp:251
virtual void onThrow(int cell)
Definition item.cpp:35
static const float TIME_TO_PICK_UP
Definition item.h:31
bool levelKnown
Definition item.h:56
virtual std::string desc()
Definition item.h:93
virtual void fix()
Definition item.cpp:288
virtual void actions(Hero *hero, std::vector< std::string > &actions)
Definition item.cpp:70
static Item * curItem
Definition item.h:44
int image
Definition item.h:49
CLASSNAME(Item)
virtual void onDetach()
Definition item.h:40
Item * detach(Bag *container)
Definition item.cpp:144
void use()
Definition item.cpp:348
virtual void Level(int value)
Definition item.h:118
bool stackable
Definition item.h:55
int Image()
Definition item.cpp:139
bool unique
Definition item.h:60
virtual bool isEquipped(Hero *hero)
Definition item.h:89
static CellSelector::Listener * thrower
Definition item.h:37
virtual bool isUpgradable()
Definition item.h:87
virtual int effectiveLevel()
Definition item.cpp:231
static Item * Virtual(const std::string &cl)
Definition item.cpp:424
virtual int maxDurability(int lvl)
Definition item.h:110
virtual void restoreFromBundle(Bundle *bundle)
Definition item.cpp:208
static const float TIME_TO_THROW
Definition item.h:30
virtual boolean collect(Bag *container)
Definition item.cpp:301
virtual bool doPickUp(Hero *hero)
Definition item.cpp:76
Definition itemsprite.h:10
Definition typedefine.h:69
#define FACTORY(name)
Definition typedefine.h:89