-
Notifications
You must be signed in to change notification settings - Fork 1
/
DungeonLevel.h
170 lines (137 loc) · 3.99 KB
/
DungeonLevel.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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
// --------------------------------------------------------------------------------------------------------------------------------
// DEMISERL
// Copyright 2014 Corremn
//
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
// $HeadURL: $
// --------------------------------------------------------------------------------------------------------------------------------
#if !defined(AFX_DUNGEONLEVEL_H__764234F8_4887_42E3_812F_FD367433372A__INCLUDED_)
#define AFX_DUNGEONLEVEL_H__764234F8_4887_42E3_812F_FD367433372A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#pragma warning(disable : 4786)
#include "GeneratorMap.h"
#include "terrain.h"
#include "monster.h"
#include "Item.h"
#include "LOS/LineOfSight.h"
#include "Coord.h"
enum eLevelType
{
lNormal = 0,
lRiver,
lEnd,
lOutside,
lSwamp,
lMaze,
lUndead,
lSpecial,
lCavern
};
enum eSpecialLevelType
{
slTrollCave = 10,
slBarracks,
slPrison,
slBoatHouse,
slShop,
slVampire,
slTreasure,
slSpiderCave,
slUndead,
slEncounter = 20,
slRandom
};
enum ePath
{
none,
clear,
blocked
};
struct Symbol
{
Symbol(char symbol, unsigned char c1, unsigned char c2, unsigned char c3):
mSymbol(symbol), mColour1(c1), mColour2(c2), mColour3(c3)
{}
char mSymbol;
unsigned char mColour1;
unsigned char mColour2;
unsigned char mColour3;
};
class cell
{
public:
cell() :
extra(0), show_target(0), show_path(none), monster(NULL), item(NULL), mSymbol(NULL)
{};
~cell(){};
Terrain terrain;
int extra;
int show_target;
ePath show_path;
Monster * GetMonster() { return monster; };
void RemoveMonsterRef() { monster = NULL; };
void RemoveItemRef() { item = NULL; };
void AssignMonster(Monster * new_monster) { monster = new_monster; };
void AssignItem(Item * new_item) { item = new_item; };
Monster * getMonster() { return monster; };
Item * getItem() { return item; };
bool monsterExists() { return (monster == NULL ? false : true); };
bool itemExists() { return (item == NULL ? false : true); };
void setSymbol(Symbol & symbol)
{
mSymbol = &symbol;
};
void clearSymbol() { mSymbol = 0; };
Symbol * getSymbol() { return mSymbol; };
private:
Monster * monster;
Item * item;
Symbol * mSymbol;
};
typedef std::vector<Coord> COORDLIST1;
class DungeonLevel : public LineOfSight
{
public:
DungeonLevel();
virtual ~DungeonLevel();
int Initialise(int special = 0);
int Delete();
int ClearMonsters();
void LightDungeon(int x, int y, int range);
int ClearPath();
int LOS(int x, int y, int x2, int y2, int range);
int MakeLevelMap();
Coord * getStartPos();
Coord * GetEndPosition();
Coord * NewBridgePosition();
Coord * NewItemPosition(bool space = false);
int getAdjacentFreeSpaces(int x, int y);
Coord * NewSpecialItemPosition();
Coord * FreeTerrainPosition(eTerrainType type);
Coord * FreeTerrainPosition(const std::string & name);
bool IsCellTransparent(int x, int y);
bool HighLightPath(int x, int y, int w, int h);
int isNearWall(int x, int y);
COORDLIST show_path;
int _type;
Coord tempPos;
int initialised;
enum EMapLight
{
eNormal, // show lit tiles, and show found tiles
eShowAll, // show lit tiles and all tiles
eLightAll, // show all tiles as lit tiles.
eNoFound, // show lit tiles
};
EMapLight getMapLight();
void setMapLight(EMapLight mapLighting);
cell & getCell(int x, int y);
private:
GeneratorMap<cell> map;
EMapLight mapLighting;
};
#endif // !defined(AFX_DUNGEONLEVEL_H__764234F8_4887_42E3_812F_FD367433372A__INCLUDED_)