summaryrefslogtreecommitdiffstats
path: root/src/map.h
blob: f5c9b31d43d5d715af6b6bb25a04cdb5df661bb1 (plain)
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
// 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_