X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGame.cpp;h=debf51a872ea7cf40714da3f7967b693593e4253;hb=8557e339c9a2d10afdf6465e02eca6b87efc961f;hp=5eb661fb99dc12e9fd4205a98ccf988677e18991;hpb=1962783a8b73ff877a6bb2d30f4c6efa7547f811;p=lugaru.git diff --git a/Source/Game.cpp b/Source/Game.cpp index 5eb661f..debf51a 100644 --- a/Source/Game.cpp +++ b/Source/Game.cpp @@ -16,213 +16,123 @@ XYZ dialoguecamera[max_dialogues][max_dialoguelength]; XYZ participantlocation[max_dialogues][10]; int participantfocus[max_dialogues][max_dialoguelength]; int participantaction[max_dialogues][max_dialoguelength]; -float participantrotation[max_dialogues][10]; +float participantyaw[max_dialogues][10]; XYZ participantfacing[max_dialogues][max_dialoguelength][10]; -float dialoguecamerarotation[max_dialogues][max_dialoguelength]; -float dialoguecamerarotation2[max_dialogues][max_dialoguelength]; +float dialoguecamerayaw[max_dialogues][max_dialoguelength]; +float dialoguecamerapitch[max_dialogues][max_dialoguelength]; int indialogue; int whichdialogue; int directing; float dialoguetime; int dialoguegonethrough[20]; -std::vector Game::textures; - -Game::Game() -{ - terraintexture = 0; - terraintexture2 = 0; - terraintexture3 = 0; - screentexture = 0; - screentexture2 = 0; - logotexture = 0; - loadscreentexture = 0; - Maparrowtexture = 0; - Mapboxtexture = 0; - Mapcircletexture = 0; - cursortexture = 0; - - memset(Mainmenuitems, 0, sizeof(Mainmenuitems)); - - nummenuitems = 0; - - memset(startx, 0, sizeof(startx)); - memset(starty, 0, sizeof(starty)); - memset(endx, 0, sizeof(endx)); - memset(endy, 0, sizeof(endy)); - - memset(selectedlong, 0, sizeof(selectedlong)); - memset(offsetx, 0, sizeof(offsetx)); - memset(offsety, 0, sizeof(offsety)); - - selected = 0; - keyselect = 0; - indemo = 0; - - won = 0; - - entername = 0; - - memset(menustring, 0, sizeof(menustring)); - memset(registrationname, 0, sizeof(registrationname)); - registrationnumber = 0; - - newdetail = 0; - newscreenwidth = 0; - newscreenheight = 0; - - gameon = 0; - deltah = 0,deltav = 0; - mousecoordh = 0,mousecoordv = 0; - oldmousecoordh = 0,oldmousecoordv = 0; - rotation = 0,rotation2 = 0; - -// SkyBox skybox; - - cameramode = 0; - olddrawmode = 0; - drawmode = 0; - firstload = 0; - oldbutton = 0; - - leveltime = 0; - loadtime = 0; - -// Model hawk; - -// XYZ hawkcoords; -// XYZ realhawkcoords; - - hawktexture = 0; - hawkrotation = 0; - hawkcalldelay = 0; -/* - Model eye; - Model iris; - Model cornea; -*/ - stealthloading = 0; - - campaignnumlevels = 0; - - memset(campaignmapname, 0, sizeof(campaignmapname)); - memset(campaigndescription, 0, sizeof(campaigndescription)); - memset(campaignchoosenext, 0, sizeof(campaignchoosenext)); - memset(campaignnumnext, 0, sizeof(campaignnumnext)); - memset(campaignnextlevel, 0, sizeof(campaignnextlevel)); - memset(campaignlocationx, 0, sizeof(campaignlocationx)); - memset(campaignlocationy, 0, sizeof(campaignlocationy)); - memset(campaignlocationy, 0, sizeof(campaignlocationy)); - - campaignchoicenum = 0; - - memset(campaignchoicewhich, 0, sizeof(campaignchoicewhich)); - - whichchoice = 0; - - numlevelspassed = 0; - - memset(levelorder, 0, sizeof(levelorder)); - memset(levelvisible, 0, sizeof(levelvisible)); - memset(levelhighlight, 0, sizeof(levelhighlight)); - - minimap = 0; - - musictype = 0,oldmusictype = 0,oldoldmusictype = 0; - realthreat = 0; - -// Model rabbit; -// XYZ rabbitcoords; - -// XYZ mapcenter; - mapradius = 0; - -// Text text; - fps = 0; - -// XYZ cameraloc; - cameradist = 0; - - drawtoggle = 0; - - editorenabled = 0; - editortype = 0; - editorsize = 0; - editorrotation = 0; - editorrotation2 = 0; - - brightness = 0; - - quit = 0; - tryquit = 0; - -// XYZ pathpoint[30]; - numpathpoints = 0; - memset(numpathpointconnect, 0, sizeof(numpathpointconnect)); - memset(pathpointconnect, 0, sizeof(pathpointconnect)); - pathpointselected = 0; - - endgame = 0; - scoreadded = 0; - numchallengelevels = 0; - - console = 0; - archiveselected = 0; - - memset(consoletext, 0, sizeof(consoletext)); - memset(consolechars, 0, sizeof(consolechars)); - chatting = 0; - memset(displaytext, 0, sizeof(displaytext)); - memset(displaychars, 0, sizeof(displaychars)); - memset(displaytime, 0, sizeof(displaytime)); - displayblinkdelay = 0; - displayblink = 0; - displayselected = 0; - consolekeydown = 0; - consoleblinkdelay = 0; - consoleblink = 0; - consoleselected = 0; - autocam = 0; - - crouchkey = 0,jumpkey = 0,forwardkey = 0,chatkey = 0,backkey = 0,leftkey = 0,rightkey = 0,drawkey = 0,throwkey = 0,attackkey = 0; - oldattackkey = 0; - - loading = 0; - talkdelay = 0; - - numboundaries = 0; -// XYZ boundary[360]; - - whichlevel = 0; - oldenvironment = 0; - targetlevel = 0; - changedelay = 0; - - memset(musicvolume, 0, sizeof(musicvolume)); - memset(oldmusicvolume, 0, sizeof(oldmusicvolume)); - musicselected = 0; - change = 0; - -//------------ - - waiting = false; - mainmenu = 0; - - accountactive = NULL; +namespace Game{ + Texture terraintexture; + Texture terraintexture2; + Texture loadscreentexture; + Texture Maparrowtexture; + Texture Mapboxtexture; + Texture Mapcircletexture; + Texture cursortexture; + GLuint screentexture = 0; + GLuint screentexture2 = 0; + Texture Mainmenuitems[10]; + + int selected = 0; + int keyselect = 0; + + int newdetail = 0; + int newscreenwidth = 0; + int newscreenheight = 0; + + bool gameon = 0; + float deltah = 0; + float deltav = 0; + int mousecoordh = 0; + int mousecoordv = 0; + int oldmousecoordh = 0; + int oldmousecoordv = 0; + float yaw = 0; + float pitch = 0; + SkyBox *skybox = NULL; + bool cameramode = 0; + bool firstload = 0; + + Texture hawktexture; + float hawkyaw = 0; + float hawkcalldelay = 0; + float leveltime = 0; + float loadtime = 0; + + Model hawk; + XYZ hawkcoords; + XYZ realhawkcoords; + + Model eye; + Model iris; + Model cornea; + + bool stealthloading = 0; + + int musictype = 0; + + XYZ mapcenter; + float mapradius = 0; + + Text *text = NULL; + float fps = 0; + + bool editorenabled = 0; + int editortype = 0; + float editorsize = 0; + float editoryaw = 0; + float editorpitch = 0; + + int tryquit = 0; + + XYZ pathpoint[30]; + int numpathpoints = 0; + int numpathpointconnect[30] = {}; + int pathpointconnect[30][30] = {}; + int pathpointselected = 0; + + int endgame = 0; + bool scoreadded = 0; + int numchallengelevels = 0; + + bool console = false; + char consoletext[15][256] = {}; + int consolechars[15] = {}; + bool chatting = 0; + char displaytext[15][256] = {}; + int displaychars[15] = {}; + float displaytime[15] = {}; + float displayblinkdelay = 0; + bool displayblink = 0; + int displayselected = 0; + float consoleblinkdelay = 0; + bool consoleblink = 0; + int consoleselected = 0; + + unsigned short crouchkey=0,jumpkey=0,forwardkey=0,chatkey=0,backkey=0,leftkey=0,rightkey=0,drawkey=0,throwkey=0,attackkey=0; + unsigned short consolekey=0; + + int loading = 0; + + int oldenvironment = 0; + int targetlevel = 0; + float changedelay = 0; + + bool waiting = false; + Account* accountactive = NULL; } -typedef struct { - Game* game; - void (Game::*method)(); -} params_thread; - void Game::fireSound(int sound) { emit_sound_at(sound); } void Game::inputText(char* str, int* charselected, int* nb_chars) { SDL_Event evenement; - int i; if(!waiting) { waiting=true; @@ -230,51 +140,52 @@ void Game::inputText(char* str, int* charselected, int* nb_chars) { SDL_EnableUNICODE(true); } - SDL_PollEvent(&evenement); + while(SDL_PollEvent(&evenement)) { - switch(evenement.type) { - case SDL_KEYDOWN: - if(evenement.key.keysym.sym == SDLK_ESCAPE) { - for(i=0;i<255;i++) - str[i]=0; - *nb_chars=0; - *charselected=0; - waiting=false; - } else if(evenement.key.keysym.sym==SDLK_BACKSPACE){ - if((*charselected)!=0) { - for(i=(*charselected)-1;i<255;i++) - str[i]=str[i+1]; - str[255]=0; - (*charselected)--; - (*nb_chars)--; - } - } else if(evenement.key.keysym.sym==SDLK_DELETE){ - if((*charselected)<(*nb_chars)){ - for(i=(*charselected);i<255;i++) - str[i]=str[i+1]; - str[255]=0; - (*nb_chars)--; - } - } else if(evenement.key.keysym.sym==SDLK_HOME){ - (*charselected)=0; - } else if(evenement.key.keysym.sym==SDLK_END){ - (*charselected)=(*nb_chars); - } else if(evenement.key.keysym.sym==SDLK_LEFT){ - if((*charselected)!=0) - (*charselected)--; - } else if(evenement.key.keysym.sym==SDLK_RIGHT){ - if((*charselected)<(*nb_chars)) + switch(evenement.type) { + case SDL_KEYDOWN: + if(evenement.key.keysym.sym == SDLK_ESCAPE) { + for(int i=0;i<255;i++) + str[i]=0; + *nb_chars=0; + *charselected=0; + waiting=false; + } else if(evenement.key.keysym.sym==SDLK_BACKSPACE){ + if((*charselected)!=0) { + for(int i=(*charselected)-1;i<255;i++) + str[i]=str[i+1]; + str[255]=0; + (*charselected)--; + (*nb_chars)--; + } + } else if(evenement.key.keysym.sym==SDLK_DELETE){ + if((*charselected)<(*nb_chars)){ + for(int i=(*charselected);i<255;i++) + str[i]=str[i+1]; + str[255]=0; + (*nb_chars)--; + } + } else if(evenement.key.keysym.sym==SDLK_HOME){ + (*charselected)=0; + } else if(evenement.key.keysym.sym==SDLK_END){ + (*charselected)=(*nb_chars); + } else if(evenement.key.keysym.sym==SDLK_LEFT){ + if((*charselected)!=0) + (*charselected)--; + } else if(evenement.key.keysym.sym==SDLK_RIGHT){ + if((*charselected)<(*nb_chars)) + (*charselected)++; + } else if(evenement.key.keysym.sym==SDLK_RETURN) { + waiting=false; + } else if(evenement.key.keysym.unicode>=32&&evenement.key.keysym.unicode<127&&(*nb_chars)<60){ + for(int i=255;i>=(*charselected)+1;i--) + str[i]=str[i-1]; + str[*charselected]=evenement.key.keysym.unicode; (*charselected)++; - } else if(evenement.key.keysym.sym==SDLK_RETURN) { - waiting=false; - } else if(evenement.key.keysym.unicode>=32&&evenement.key.keysym.unicode<127&&(*nb_chars)<60){ - for(i=255;i>=(*charselected)+1;i--) - str[i]=str[i-1]; - str[*charselected]=evenement.key.keysym.unicode; - (*charselected)++; - (*nb_chars)++; - } - break; + (*nb_chars)++; + } + break; + } } if(!waiting) { @@ -283,21 +194,8 @@ void Game::inputText(char* str, int* charselected, int* nb_chars) { } } -void Game::setKeySelected() { - waiting=true; - params_thread* data = new params_thread; - data->game = this; - data->method = &Game::setKeySelected_thread; - printf("launch thread\n"); - SDL_Thread* thread = SDL_CreateThread(Game::thread, data); - if ( thread == NULL ) { - fprintf(stderr, "Unable to create thread: %s\n", SDL_GetError()); - waiting=false; - return; - } -} - -void Game::setKeySelected_thread() { +int setKeySelected_thread(void* data) { + using namespace Game; int keycode=-1; SDL_Event evenement; while(keycode==-1) { @@ -334,26 +232,25 @@ void Game::setKeySelected_thread() { break; case 8: attackkey=keycode; break; + case 9: consolekey=keycode; + break; default: break; } } keyselect=-1; waiting=false; + LoadMenu(); + return 0; } -int Game::thread(void *data) { - params_thread* pt = (params_thread*)data; - if(pt) { - (pt->game->*(pt->method))(); +void Game::setKeySelected() { + waiting=true; + printf("launch thread\n"); + SDL_Thread* thread = SDL_CreateThread(setKeySelected_thread,NULL); + if ( thread == NULL ) { + fprintf(stderr, "Unable to create thread: %s\n", SDL_GetError()); + waiting=false; + return; } } - -void Game::DrawGL() { - if ( stereomode == stereoNone ) { - DrawGLScene(stereoCenter); - } else { - DrawGLScene(stereoLeft); - DrawGLScene(stereoRight); - } -}