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
|
// * This file is part of the COLOBOT source code
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
// *
// * 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/.
// app.h
#pragma once
#include "common/misc.h"
#include "graphics/common/device.h"
#include "graphics/common/engine.h"
#include <string>
class CInstanceManager;
class CEvent;
class CRobotMain;
class CSound;
struct ApplicationPrivate;
/**
* \class CApplication
* \brief Main application
*
* This class is responsible for creating and handling main application window,
* receiving events, etc.
*
* ...
*/
class CApplication
{
public:
//! Constructor (can only be called once!)
CApplication();
//! Destructor
~CApplication();
public:
//! Parses commandline arguments
Error ParseArguments(int argc, char *argv[]);
//! Initializes the application
bool Create();
//! Main event loop
int Run();
protected:
//! Cleans up before exit
void Destroy();
//! Processes an SDL event to Event struct
void ParseEvent();
//! Handles some incoming events
void ProcessEvent(Event event);
//! Renders the image in window
bool Render();
public:
void Pause(bool pause);
void StepSimulation(float rTime);
void SetMousePos(Math::Point pos);
void SetShowStat(bool show);
bool RetShowStat();
void SetDebugMode(bool mode);
bool RetDebugMode();
bool RetSetupMode();
void FlushPressKey();
void ResetKey();
void SetKey(int keyRank, int option, int key);
int RetKey(int keyRank, int option);
void SetJoystick(bool enable);
bool RetJoystick();
void SetMouseType(Gfx::MouseType type);
void SetNiceMouse(bool nice);
bool RetNiceMouse();
bool RetNiceMouseCap();
bool WriteScreenShot(char *filename, int width, int height);
protected:
//HRESULT ConfirmDevice( DDCAPS* pddDriverCaps, D3DDEVICEDESC7* pd3dDeviceDesc );
//HRESULT Initialize3DEnvironment();
//HRESULT Change3DEnvironment();
//HRESULT CreateZBuffer(GUID* pDeviceGUID);
//HRESULT Render3DEnvironment();
//VOID Cleanup3DEnvironment();
//VOID DeleteDeviceObjects();
//VOID DisplayFrameworkError( HRESULT, DWORD );
void InitText();
void DrawSuppl();
void ShowStats();
void OutputText(long x, long y, char* str);
protected:
//! Private (SDL-dependent data)
ApplicationPrivate* m_private;
CInstanceManager* m_iMan;
Gfx::DeviceConfig m_deviceConfig;
Gfx::CEngine* m_engine;
CEvent* m_event;
CRobotMain* m_robotMain;
CSound* m_sound;
//! Code to return at exit
int m_exitCode;
bool m_active;
bool m_activateApp;
bool m_ready;
bool m_joystick;
std::string m_windowTitle;
long m_vidMemTotal;
bool m_appUseZBuffer;
bool m_appUseStereo;
bool m_showStats;
bool m_debugMode;
bool m_audioState;
bool m_audioTrack;
bool m_niceMouse;
bool m_setupMode;
int m_keyState;
Math::Vector m_axeKey;
Math::Vector m_axeJoy;
bool m_joyButton[32];
Math::Point m_mousePos;
long m_mouseWheel;
float m_time;
long m_key[50][2];
};
|