author | terom |
Sat, 06 Dec 2008 23:29:06 +0000 | |
changeset 235 | 0a0c729365ee |
parent 233 | ff4ecea83cf5 |
child 248 | e40ef56dc62c |
permissions | -rw-r--r-- |
25 | 1 |
|
2 |
#include "Graphics.hh" |
|
86 | 3 |
#include "GameState.hh" |
108 | 4 |
#include <cmath> |
25 | 5 |
|
6 |
Graphics::Graphics (Engine &engine, GameState &state) : |
|
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
7 |
CL_DisplayWindow(GRAPHICS_WINDOW_TITLE, GRAPHICS_RESOLUTION_WIDTH, GRAPHICS_RESOLUTION_HEIGHT), |
25 | 8 |
engine(engine), |
9 |
state(state), |
|
10 |
update_timer(GRAPHICS_UPDATE_INTERVAL_MS), |
|
235 | 11 |
input(get_ic()->get_keyboard()), |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
12 |
simple_font("Font2", engine.getResourceManager()) |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
13 |
{ |
86 | 14 |
|
25 | 15 |
// connect timer signal |
205 | 16 |
slots.connect(update_timer.sig_tick(), this, &Graphics::on_update); |
25 | 17 |
|
18 |
// enable |
|
205 | 19 |
update_timer.start(); |
25 | 20 |
} |
21 |
||
22 |
void Graphics::check_input (void) { |
|
23 |
LocalPlayer *player; |
|
221 | 24 |
PlayerInput input_mask = 0; |
25 | 25 |
|
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
26 |
// update gui flags |
235 | 27 |
this->flags = input.readGuiInput(); |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
28 |
|
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
29 |
// quit? |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
30 |
if (flags & GUI_INPUT_QUIT) { |
108 | 31 |
engine.stop(); |
25 | 32 |
|
108 | 33 |
return; |
25 | 34 |
} |
35 |
||
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
36 |
// stop here if we don't have a local player |
25 | 37 |
if ((player = state.getLocalPlayer()) == NULL) |
38 |
return; |
|
39 |
||
221 | 40 |
// dump debug info on stderr |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
41 |
if (flags & GUI_INPUT_DEBUG_PLAYER) |
221 | 42 |
player->printDebugInfo(); |
180 | 43 |
|
230 | 44 |
// build input_mask |
235 | 45 |
input_mask = input.readPlayerInput(); |
221 | 46 |
|
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
47 |
// apply input if there was any |
221 | 48 |
if (input_mask) |
49 |
player->handleInput(input_mask); |
|
25 | 50 |
} |
51 |
||
52 |
void Graphics::do_redraw (void) { |
|
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
53 |
CL_GraphicContext *gc = get_gc(); |
25 | 54 |
|
162
f760591b7481
Removed unnecessary variables (factoFoo) from do_redraw. Renamed
saiam
parents:
161
diff
changeset
|
55 |
// White background |
25 | 56 |
gc->clear(CL_Color::white); |
57 |
||
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
58 |
// Draw the game |
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
59 |
state.draw(this, flags & GUI_INPUT_DISPLAY_WEAPON); |
180 | 60 |
|
184 | 61 |
// Flip window buffer, sync |
233
ff4ecea83cf5
start using CL_ResourceManager, change most draw methods to take a Graphics*, implment even better input handling, and draw weapon names
terom
parents:
230
diff
changeset
|
62 |
flip(1); |
25 | 63 |
} |
64 |
||
205 | 65 |
void Graphics::on_update (TimeMS tick_length) { |
25 | 66 |
// check keyboard input |
67 |
check_input(); |
|
68 |
||
69 |
// redraw display |
|
70 |
do_redraw(); |
|
71 |
} |