-
Notifications
You must be signed in to change notification settings - Fork 4
/
Item.h
124 lines (116 loc) · 2.71 KB
/
Item.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#ifndef __ITEM_H__
#define __ITEM_H__
#include "JMDefs.h"
#include "JLinkList.h"
class CEffect
{
public:
CEffect():m_dwEffect(-1),m_szAmount(NULL){};
~CEffect(){};
int m_dwEffect;
char *m_szAmount;
};
class CItemDef
{
// Member Variables
public:
CItemDef():
m_szName(NULL),
m_szPlural(NULL),
m_fSpeed(0.0f),
m_fACBonus(0.0f),
m_fBaseAC(0.0f),
m_szBaseDamage(NULL),
m_fBonusToHit(0.0f),
m_fBonusToDamage(0.0f),
m_dwLevel(0),
m_fValue(0.0f),
m_dwFlags(0),
m_dwIndex(ITEM_IDX_INVALID),
m_dwBaseHP(0.0f)
{
m_Colors = new JLinkList<JColor>;
m_llEffects = new JLinkList<CEffect>;
}
~CItemDef()
{
if(m_szName)
{
delete [] m_szName;
m_szName = NULL;
}
if(m_szPlural)
{
delete [] m_szPlural;
m_szPlural = NULL;
}
if(m_szBaseDamage)
{
delete [] m_szBaseDamage;
m_szBaseDamage = NULL;
}
if(m_Colors)
{
m_Colors->Terminate();
m_Colors = NULL;
}
if(m_llEffects)
{
m_llEffects->Terminate();
m_llEffects = NULL;
}
}
char *m_szName; // what item is this?
char *m_szPlural;
float m_fSpeed;
float m_fACBonus;
float m_fBaseAC;
char *m_szBaseDamage;
float m_fBonusToHit;
float m_fBonusToDamage;
int m_dwLevel;
float m_fValue;
int m_dwFlags;
int m_dwIndex; // ITEM_IDX_SWORD, ITEM_IDX_WAND, etc.
int m_dwBaseHP; // for busting down walls, disarming traps, etc.
JLinkList<JColor> *m_Colors;
JLinkList<CEffect> *m_llEffects;
JColor m_Color;
protected:
private:
// Member Functions
public:
// virtual int HandleModify(/*cmd?*/); // how do you deal with a modify cmd?
// ... need one of these per state (virt in base, defined in subclasses)?
protected:
private:
};
class CItem
{
// Member Variables
public:
JVector m_vPos;
CItemDef *m_id;
CLink<CItem> *m_pllLink;
int m_dwFlags; // item cursed, or other specific to this instance, rather than in the general CItemDef
protected:
float m_fColorChangeInterval;
JColor m_Color;
private:
// Member Functions
public:
void Init( CItemDef *pid );
char *GetName() { return m_id->m_szName; }
bool IsOpenable() { return false; } // for chests, etc.
bool IsCloseable() { return false; } // closeable pickup?
bool IsTunnelable() { return false; } // Tunnelable pickup? unlikely.
static JResult CreateItem( CItemDef *pid );
JResult SpawnItem();
void PreDraw();
void Draw();
void PostDraw();
protected:
void SetColor();
private:
};
#endif // __ITEMTILE_H__