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
|
// * This file is part of the COLOBOT source code
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
// *
// * This program is free software: you can redistribute it and/or modify
// * it under the terms of the GNU General Public License as published by
// * the Free Software Foundation, either version 3 of the License, or
// * (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have received a copy of the GNU General Public License
// * along with this program. If not, see http://www.gnu.org/licenses/.// map.h
#ifndef _MAP_H_
#define _MAP_H_
#include "control.h"
class CD3DEngine;
class CTerrain;
class CWater;
class CObject;
class CRobotMain;
enum ObjectType;
#define MAPMAXOBJECT 100
enum MapColor
{
MAPCOLOR_NULL,
MAPCOLOR_BASE,
MAPCOLOR_FIX,
MAPCOLOR_MOVE,
MAPCOLOR_ALIEN,
MAPCOLOR_WAYPOINTb,
MAPCOLOR_WAYPOINTr,
MAPCOLOR_WAYPOINTg,
MAPCOLOR_WAYPOINTy,
MAPCOLOR_WAYPOINTv,
MAPCOLOR_BBOX,
};
typedef struct
{
char bUsed;
CObject* object;
MapColor color;
ObjectType type;
FPOINT pos;
float dir;
}
MapObject;
class CMap : public CControl
{
public:
CMap(CInstanceManager* iMan);
~CMap();
BOOL Create(FPOINT pos, FPOINT dim, int icon, EventMsg eventMsg);
BOOL EventProcess(const Event &event);
void Draw();
void UpdateTerrain();
void UpdateTerrain(int bx, int by, int ex, int ey);
void SetFixImage(char *filename);
BOOL RetFixImage();
void SetOffset(float ox, float oy);
void SetAngle(float angle);
void SetMode(int mode);
void SetToy(BOOL bToy);
void SetDebug(BOOL bDebug);
void SetZoom(float value);
float RetZoom();
void SetEnable(BOOL bEnable);
BOOL RetEnable();
void SetFloorColor(D3DCOLORVALUE color);
void SetWaterColor(D3DCOLORVALUE color);
void FlushObject();
void UpdateObject(CObject* pObj);
CObject* DetectObject(FPOINT pos, BOOL &bInMap);
void SetHilite(CObject* pObj);
protected:
FPOINT AdjustOffset(FPOINT offset);
void SelectObject(FPOINT pos);
FPOINT MapInter(FPOINT pos, float dir);
void DrawFocus(FPOINT pos, float dir, ObjectType type, MapColor color);
void DrawObject(FPOINT pos, float dir, ObjectType type, MapColor color, BOOL bSelect, BOOL bHilite);
void DrawObjectIcon(FPOINT pos, FPOINT dim, MapColor color, ObjectType type, BOOL bHilite);
void DrawHilite(FPOINT pos);
void DrawTriangle(FPOINT p1, FPOINT p2, FPOINT p3, FPOINT uv1, FPOINT uv2);
void DrawPenta(FPOINT p1, FPOINT p2, FPOINT p3, FPOINT p4, FPOINT p5, FPOINT uv1, FPOINT uv2);
void DrawVertex(FPOINT uv1, FPOINT uv2, float zoom);
protected:
CTerrain* m_terrain;
CWater* m_water;
CRobotMain* m_main;
BOOL m_bEnable;
float m_time;
float m_half;
float m_zoom;
FPOINT m_offset;
float m_angle;
D3DCOLORVALUE m_floorColor;
D3DCOLORVALUE m_waterColor;
MapObject m_map[MAPMAXOBJECT];
int m_totalFix;
int m_totalMove;
int m_hiliteRank;
FPOINT m_mapPos;
FPOINT m_mapDim;
BOOL m_bRadar;
char m_fixImage[100];
int m_mode;
BOOL m_bToy;
BOOL m_bDebug;
};
#endif //_MAP_H_
|