Import from neverball-1.3.1.tar.gz
[neverball-archive.git] / share / state.c
blobfe9498dd5754322dcfb6ed2cf9eab4bbd61b5db5
1 /*
2 * Copyright (C) 2003 Robert Kooima
4 * NEVERBALL is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published
6 * by the Free Software Foundation; either version 2 of the License,
7 * or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
15 #include "glext.h"
16 #include "state.h"
17 #include "config.h"
19 /*---------------------------------------------------------------------------*/
21 static float state_time;
22 static struct state *state;
24 float time_state(void)
26 return state_time;
29 void init_state(struct state *st)
31 state = st;
34 int goto_state(struct state *st)
36 if (state && state->leave)
37 state->leave(state->gui_id);
39 state = st;
40 state_time = 0;
42 if (state && state->enter)
43 state->gui_id = state->enter();
45 return 1;
48 /*---------------------------------------------------------------------------*/
50 void st_paint(void)
52 int stereo = config_get_d(CONFIG_STEREO);
54 if (state && state->paint)
56 if (stereo)
58 glDrawBuffer(GL_BACK_LEFT);
59 config_clear();
60 state->paint(state->gui_id, (float) (+stereo));
62 glDrawBuffer(GL_BACK_RIGHT);
63 config_clear();
64 state->paint(state->gui_id, (float) (-stereo));
66 else
68 config_clear();
69 state->paint(state->gui_id, 0.0f);
74 void st_timer(float dt)
76 state_time += dt;
78 if (state && state->timer)
79 state->timer(state->gui_id, dt);
82 void st_point(int x, int y, int dx, int dy)
84 if (state && state->point)
85 state->point(state->gui_id, x, y, dx, dy);
88 void st_stick(int a, int k)
90 if (state && state->stick)
91 state->stick(state->gui_id, a, k);
94 /*---------------------------------------------------------------------------*/
96 int st_click(int b, int d)
98 return (state && state->click) ? state->click(b, d) : 1;
101 int st_keybd(int c, int d)
103 return (state && state->keybd) ? state->keybd(c, d) : 1;
106 int st_buttn(int b, int d)
108 return (state && state->buttn) ? state->buttn(b, d) : 1;
111 /*---------------------------------------------------------------------------*/