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));
47 memset(startx, 0, sizeof(startx));
48 memset(starty, 0, sizeof(starty));
49 memset(endx, 0, sizeof(endx));
50 memset(endy, 0, sizeof(endy));
52 memset(selectedlong, 0, sizeof(selectedlong));
53 memset(offsetx, 0, sizeof(offsetx));
54 memset(offsety, 0, sizeof(offsety));
55 memset(movex, 0, sizeof(movex));
56 memset(movey, 0, sizeof(movey));
57 memset(endy, 0, sizeof(endy));
70 memset(menustring, 0, sizeof(menustring));
71 memset(registrationname, 0, sizeof(registrationname));
72 registrationnumber = 0;
79 deltah = 0,deltav = 0;
80 mousecoordh = 0,mousecoordv = 0;
81 oldmousecoordh = 0,oldmousecoordv = 0;
82 rotation = 0,rotation2 = 0;
87 cameratogglekeydown = 0;
88 chattogglekeydown = 0;
91 drawmodetogglekeydown = 0;
92 explodetogglekeydown = 0;
93 detailtogglekeydown = 0;
103 // XYZ realhawkcoords;
115 campaignnumlevels = 0;
117 memset(campaignmapname, 0, sizeof(campaignmapname));
118 memset(campaigndescription, 0, sizeof(campaigndescription));
119 memset(campaignchoosenext, 0, sizeof(campaignchoosenext));
120 memset(campaignnumnext, 0, sizeof(campaignnumnext));
121 memset(campaignnextlevel, 0, sizeof(campaignnextlevel));
122 int campaignchoicesmade;
123 memset(campaignchoices, 0, sizeof(campaignchoices));
124 memset(campaignlocationx, 0, sizeof(campaignlocationx));
125 memset(campaignlocationy, 0, sizeof(campaignlocationy));
126 memset(campaignlocationy, 0, sizeof(campaignlocationy));
128 campaignchoicenum = 0;
130 memset(campaignchoicewhich, 0, sizeof(campaignchoicewhich));
136 memset(levelorder, 0, sizeof(levelorder));
137 memset(levelvisible, 0, sizeof(levelvisible));
138 memset(levelhighlight, 0, sizeof(levelhighlight));
142 musictype = 0,oldmusictype = 0,oldoldmusictype = 0;
157 envtogglekeydown = 0;
158 slomotogglekeydown = 0;
159 texturesizetogglekeydown = 0;
160 freezetogglekeydown = 0;
174 // XYZ pathpoint[30];
176 memset(numpathpointconnect, 0, sizeof(numpathpointconnect));
177 memset(pathpointconnect, 0, sizeof(pathpointconnect));
178 pathpointselected = 0;
182 numchallengelevels = 0;
187 memset(consoletext, 0, sizeof(consoletext));
188 memset(consolechars, 0, sizeof(consolechars));
190 memset(displaytext, 0, sizeof(displaytext));
191 memset(displaychars, 0, sizeof(displaychars));
192 memset(displaytime, 0, sizeof(displaytime));
193 displayblinkdelay = 0;
197 consoletogglekeydown = 0;
198 consoleblinkdelay = 0;
201 // memset(togglekey, 0, sizeof(togglekey));
202 // memset(togglekeydelay, 0, sizeof(togglekeydelay));
205 crouchkey = 0,jumpkey = 0,forwardkey = 0,chatkey = 0,backkey = 0,leftkey = 0,rightkey = 0,drawkey = 0,throwkey = 0,attackkey = 0;
212 // XYZ boundary[360];
219 memset(musicvolume, 0, sizeof(musicvolume));
220 memset(oldmusicvolume, 0, sizeof(oldmusicvolume));
229 accountactive = NULL;
234 void (Game::*method)();
237 void Game::fireSound(int sound) {
238 emit_sound_at(sound);
241 void Game::inputText(char* str, int* charselected, int* nb_chars) {
247 SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY,SDL_DEFAULT_REPEAT_INTERVAL);
248 SDL_EnableUNICODE(true);
251 SDL_PollEvent(&evenement);
253 switch(evenement.type) {
255 if(evenement.key.keysym.sym == SDLK_ESCAPE) {
262 } else if(evenement.key.keysym.sym==SDLK_BACKSPACE){
263 if((*charselected)!=0) {
264 for(i=(*charselected)-1;i<255;i++){
271 } else if(evenement.key.keysym.sym==SDLK_DELETE){
272 for(i=(*charselected);i<255;i++){
277 } else if(evenement.key.keysym.sym==SDLK_LEFT){
278 if((*charselected)!=0)
280 } else if(evenement.key.keysym.sym==SDLK_RIGHT){
281 if((*charselected)<(*nb_chars))
283 } else if(evenement.key.keysym.sym==SDLK_RETURN) {
285 } else if((evenement.key.keysym.unicode<127)&&((*nb_chars)<60)&&(evenement.key.keysym.sym!=SDLK_LSHIFT)&&(evenement.key.keysym.sym!=SDLK_RSHIFT)) {
286 for(i=255;i>=(*charselected)+1;i--){
289 str[*charselected]=evenement.key.keysym.unicode;
297 SDL_EnableKeyRepeat(0,0); // disable key repeat
298 SDL_EnableUNICODE(false);
302 void Game::setKeySelected() {
304 params_thread* data = new params_thread;
306 data->method = &Game::setKeySelected_thread;
307 printf("launch thread\n");
308 SDL_Thread* thread = SDL_CreateThread(Game::thread, data);
309 if ( thread == NULL ) {
310 fprintf(stderr, "Unable to create thread: %s\n", SDL_GetError());
316 void Game::setKeySelected_thread() {
320 SDL_WaitEvent(&evenement);
321 switch(evenement.type) {
323 keycode = evenement.key.keysym.sym;
325 case SDL_MOUSEBUTTONDOWN:
326 keycode = SDLK_LAST+evenement.button.button;
332 if(keycode != SDLK_ESCAPE) {
335 case 0: forwardkey=keycode;
337 case 1: backkey=keycode;
339 case 2: leftkey=keycode;
341 case 3: rightkey=keycode;
343 case 4: crouchkey=keycode;
345 case 5: jumpkey=keycode;
347 case 6: drawkey=keycode;
349 case 7: throwkey=keycode;
351 case 8: attackkey=keycode;
361 int Game::thread(void *data) {
362 params_thread* pt = (params_thread*)data;
364 (pt->game->*(pt->method))();
368 void Game::DrawGL() {
369 if ( stereomode == stereoNone ) {
370 DrawGLScene(stereoCenter);
372 DrawGLScene(stereoLeft);
373 DrawGLScene(stereoRight);