Subversion Repositories spk

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
11 cycrow 1
#ifndef __DISPLAY_H__
2
#define __DISPLAY_H__
3
 
4
#include <spk.h>
5
#include "../../src/Visualisation/TextureFile.h"
6
#include "../Overlay.h"
7
#include "RenderObject.h"
8
 
9
#include <fmod.hpp>
10
 
11
typedef struct SSound {
12
	struct SSound () { iStart = 0; bStarted = false; }
13
	CyString sFilename;
14
	long	iStart;
15
	bool	bStarted;
16
} SSound;
17
 
18
typedef struct SFunction {
19
	CyString sFunction;
20
	CyString sBlock;
21
	CyStringList lVaribles;
22
	CyStringList lStrings;
23
} SFunction;
24
 
25
typedef struct SCloseOn {
26
	struct SCloseOn () { iStart = 0; iEnd = 0; iMouseCommands = 0; iKeyCommands = 0; }
27
	int iStart;
28
	int iEnd;
29
	long iMouseCommands;
30
	long iKeyCommands;
31
} SCloseOn;
32
 
33
#define COMMAND_LEFTCLICK		1
34
#define COMMAND_RIGHTCLICK		2
35
#define COMMAND_LEFTCLICKIN		4
36
#define COMMAND_RIGHTCLICKIN	8
37
 
38
#define COMMAND_KEY_ENTER		1
39
#define COMMAND_KEY_SPACE		2
40
 
41
 
42
class CDisplay
43
{
44
public:
45
	CDisplay ( COverlay *overlay, MyDirect3DDevice9 *device, CyString name );
46
	~CDisplay ();
47
 
48
	int GetBorderSizeX () { return m_iBorderSizeX; }
49
	int GetBorderSizeY () { return m_iBorderSizeY; }
50
 
51
	int GetMouseX ();
52
	int GetMouseY ();
53
 
54
	static void Log ( CyString str )
55
	{
56
		FILE *id;
57
		fopen_s ( &id, "d:/log.txt", "a" );
58
		fputs ( str.c_str(), id );
59
		fclose ( id );
60
	}
61
 
62
	bool HaltMouse () { return m_bHaltMouse; }
63
	bool IsMouseInGui ();
64
 
65
	void SetMouse ( int *x, int *y )
66
	{
67
		m_pMouseX = x;
68
		m_pMouseY = y;
69
 
70
		if ( m_bContainMouse )
71
		{
72
			*m_pMouseX = m_iWidth / 2;
73
			*m_pMouseY = m_iHeight / 2;
74
		}
75
	}
76
	void CreateSound ( CyString file, long start );
77
	virtual void SetSize ( int width, int height, int maxwidth, int maxheight );
78
 
79
	CyString ParseVaribles ( CyString str, CyStringList *varibles );
80
 
81
	void SetTimeout ( long time ) { m_lTimeout = time; }
82
	long GetTimeout () { return m_lTimeout; }
83
	void AddObject ( CRenderObject *o )	{ m_objects.push_back ( o ); }
84
	void RemoveObject ( CRenderObject *o ) { m_objects.remove ( o ); }
85
	void ClearObjects () 
86
	{
87
		for ( CRenderObject *o = m_objects.First(); o; o = m_objects.Next() )
88
			delete o;
89
		m_objects.clear();
90
	}
91
 
92
	virtual float Update ( DWORD timeNow );
93
	virtual void render ( MyDirect3DDevice9 * );
94
	virtual void RenderBorder ( MyDirect3DDevice9 * );
95
	virtual void RenderCursor ( MyDirect3DDevice9 *device );
96
	virtual void SetBorderTexture ( CyString t );
97
	virtual void SetCursorTexture ( CyString t );
98
	virtual void SetLength(int i) { m_iSizeY = i; }
99
	virtual void SetWidth(int i) { m_iSizeX = i; }
100
	virtual void SetMaxSize(int x, int y) { m_iMaxWidth = x; m_iMaxHeight = y; }
101
 
102
	virtual bool MouseClick ( int b, bool );
103
	virtual bool CheckCloseEventKey ( int key );
104
	bool Closed () { return m_bClosed; }
105
	bool CheckName(const CyString &name) { return m_sGuiName.Compare(name); }
106
	bool CheckTimeout(DWORD tNow)
107
	{
108
		if ( ((m_lTimeout != -1) && (m_lTimeout < (int)tNow)) || (m_bClosed) )
109
			return true;
110
		return false;
111
	}
112
 
113
	void SwitchRender () { m_bRender = !m_bRender; }
114
	virtual void SetPosition(int x, int y);
115
	virtual void SetSize(int width, int height);
116
 
117
protected:
118
	RECT *GetFrame ( int frame );
119
 
120
	CLinkList<CRenderObject> m_objects;
121
	CLinkList<SSound> m_lSounds;
122
	CLinkList<SCloseOn> m_lClose;
123
	CLinkList<SFunction> m_lFunctions;
124
 
125
	int m_iCornerX, m_iCornerY;
126
	int m_iSizeX, m_iSizeY;
127
 
128
	LPDIRECT3DTEXTURE9 m_borderTexture;
129
	LPDIRECT3DTEXTURE9 m_cursorTexture;
130
	LPD3DXSPRITE m_sprite;
131
 
132
	bool  m_bRender;
133
	bool	m_bNoBorder;
134
 
135
	long m_lTimeout;
136
 
137
	int m_iBorderSizeX;
138
	int m_iBorderSizeY;
139
 
140
	MyDirect3DDevice9 *m_pDevice;
141
 
142
	short m_iAlpha;
143
	long  m_iFadeIn;
144
	short m_iFadeState;
145
	long m_iStartDisplay;
146
 
147
	DWORD m_lastUpdate; // time when the world was last updated
148
 
149
	CTextureFile *m_pBorderFile;
150
	CTextureFile *m_pCursorFile;
151
 
152
	int *m_pMouseX, *m_pMouseY;
153
 
154
	bool m_bContainMouse;
155
	bool m_bHaltMouse;
156
 
157
	bool m_bClosed;
158
	bool m_bLongWait;
159
 
160
	int m_iWidth, m_iHeight;
161
	int m_iMaxWidth, m_iMaxHeight;
162
 
163
	COverlay *m_pOverlay;
164
 
165
	CyString m_sGuiName;
166
 
167
	bool m_bLog;
168
};
169
 
170
 
171
#endif //__DISPLAY_H__