2 #include "openal_wrapper.h"
3 #include "SDL_thread.h"
8 int numdialogueboxes[max_dialogues];
9 int dialoguetype[max_dialogues];
10 int dialogueboxlocation[max_dialogues][max_dialoguelength];
11 float dialogueboxcolor[max_dialogues][max_dialoguelength][3];
12 int dialogueboxsound[max_dialogues][max_dialoguelength];
13 char dialoguetext[max_dialogues][max_dialoguelength][128];
14 char dialoguename[max_dialogues][max_dialoguelength][64];
15 XYZ dialoguecamera[max_dialogues][max_dialoguelength];
16 XYZ participantlocation[max_dialogues][10];
17 int participantfocus[max_dialogues][max_dialoguelength];
18 int participantaction[max_dialogues][max_dialoguelength];
19 float participantrotation[max_dialogues][10];
20 XYZ participantfacing[max_dialogues][max_dialoguelength][10];
21 float dialoguecamerarotation[max_dialogues][max_dialoguelength];
22 float dialoguecamerarotation2[max_dialogues][max_dialoguelength];
27 int dialoguegonethrough[20];
37 loadscreentexture = 0;
43 memset(Mainmenuitems, 0, sizeof(Mainmenuitems));
53 memset(menustring, 0, sizeof(menustring));
54 memset(registrationname, 0, sizeof(registrationname));
55 registrationnumber = 0;
62 deltah = 0,deltav = 0;
63 mousecoordh = 0,mousecoordv = 0;
64 oldmousecoordh = 0,oldmousecoordv = 0;
65 rotation = 0,rotation2 = 0;
81 // XYZ realhawkcoords;
100 musictype = 0,oldmusictype = 0,oldoldmusictype = 0;
128 // XYZ pathpoint[30];
130 memset(numpathpointconnect, 0, sizeof(numpathpointconnect));
131 memset(pathpointconnect, 0, sizeof(pathpointconnect));
132 pathpointselected = 0;
136 numchallengelevels = 0;
141 memset(consoletext, 0, sizeof(consoletext));
142 memset(consolechars, 0, sizeof(consolechars));
144 memset(displaytext, 0, sizeof(displaytext));
145 memset(displaychars, 0, sizeof(displaychars));
146 memset(displaytime, 0, sizeof(displaytime));
147 displayblinkdelay = 0;
151 consoleblinkdelay = 0;
156 crouchkey = 0,jumpkey = 0,forwardkey = 0,chatkey = 0,backkey = 0,leftkey = 0,rightkey = 0,drawkey = 0,throwkey = 0,attackkey = 0;
164 // XYZ boundary[360];
171 memset(musicvolume, 0, sizeof(musicvolume));
172 memset(oldmusicvolume, 0, sizeof(oldmusicvolume));
181 accountactive = NULL;
186 void (Game::*method)();
189 void Game::fireSound(int sound) {
190 emit_sound_at(sound);
193 void Game::inputText(char* str, int* charselected, int* nb_chars) {
198 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_DEFAULT_REPEAT_INTERVAL);
199 SDL_EnableUNICODE(true);
202 while(SDL_PollEvent(&evenement)) {
204 switch(evenement.type) {
206 if(evenement.key.keysym.sym == SDLK_ESCAPE) {
207 for(int i=0;i<255;i++)
212 } else if(evenement.key.keysym.sym==SDLK_BACKSPACE){
213 if((*charselected)!=0) {
214 for(int i=(*charselected)-1;i<255;i++)
220 } else if(evenement.key.keysym.sym==SDLK_DELETE){
221 if((*charselected)<(*nb_chars)){
222 for(int i=(*charselected);i<255;i++)
227 } else if(evenement.key.keysym.sym==SDLK_HOME){
229 } else if(evenement.key.keysym.sym==SDLK_END){
230 (*charselected)=(*nb_chars);
231 } else if(evenement.key.keysym.sym==SDLK_LEFT){
232 if((*charselected)!=0)
234 } else if(evenement.key.keysym.sym==SDLK_RIGHT){
235 if((*charselected)<(*nb_chars))
237 } else if(evenement.key.keysym.sym==SDLK_RETURN) {
239 } else if(evenement.key.keysym.unicode>=32&&evenement.key.keysym.unicode<127&&(*nb_chars)<60){
240 for(int i=255;i>=(*charselected)+1;i--)
242 str[*charselected]=evenement.key.keysym.unicode;
251 SDL_EnableKeyRepeat(0,0); // disable key repeat
252 SDL_EnableUNICODE(false);
256 void Game::setKeySelected() {
258 params_thread* data = new params_thread;
260 data->method = &Game::setKeySelected_thread;
261 printf("launch thread\n");
262 SDL_Thread* thread = SDL_CreateThread(Game::thread, data);
263 if ( thread == NULL ) {
264 fprintf(stderr, "Unable to create thread: %s\n", SDL_GetError());
270 void Game::setKeySelected_thread() {
274 SDL_WaitEvent(&evenement);
275 switch(evenement.type) {
277 keycode = evenement.key.keysym.sym;
279 case SDL_MOUSEBUTTONDOWN:
280 keycode = SDLK_LAST+evenement.button.button;
286 if(keycode != SDLK_ESCAPE) {
289 case 0: forwardkey=keycode;
291 case 1: backkey=keycode;
293 case 2: leftkey=keycode;
295 case 3: rightkey=keycode;
297 case 4: crouchkey=keycode;
299 case 5: jumpkey=keycode;
301 case 6: drawkey=keycode;
303 case 7: throwkey=keycode;
305 case 8: attackkey=keycode;
307 case 9: consolekey=keycode;
317 int Game::thread(void *data) {
318 params_thread* pt = (params_thread*)data;
320 (pt->game->*(pt->method))();
324 void Game::DrawGL() {
325 if ( stereomode == stereoNone ) {
326 DrawGLScene(stereoCenter);
328 DrawGLScene(stereoLeft);
329 DrawGLScene(stereoRight);