X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGame.h;h=5c3f80f766d6d4151b3e40e83789478d4e2862a0;hb=cd043e3f9e26c2b3406b40a354c2840941e9db7f;hp=1297fbdc4f6c016076c7bdbe308e563b2a53b5d7;hpb=3f518d0f8cf5f083bc17732e7b8627cec3639940;p=lugaru.git diff --git a/Source/Game.h b/Source/Game.h index 1297fbd..5c3f80f 100644 --- a/Source/Game.h +++ b/Source/Game.h @@ -3,20 +3,18 @@ Copyright (C) 2003, 2010 - Wolfire Games This file is part of Lugaru. -Lugaru is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. +Lugaru is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. -This program is distributed in the hope that it will be useful, +Lugaru is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +along with Lugaru. If not, see . */ #ifndef _GAME_H_ @@ -40,20 +38,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "TGALoader.h" -#if !PLATFORM_MACOSX -#include "WinInput.h" -#else -#include "Macinput.h" -#endif - #include "Terrain.h" #include "Skybox.h" #include "Skeleton.h" #include "Models.h" #include "Lights.h" #include "Person.h" -#include "Constants.h" -#include "Sprites.h" +#include "Sprite.h" //#include #include "Text.h" #include "Objects.h" @@ -63,239 +54,128 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include "gamegl.h" #include "Stereo.h" +#include "Account.h" +#include "Sounds.h" +#include "Texture.h" -extern GLuint rabbittexture; +#define NB_CAMPAIGN_MENU_ITEM 7 -class Game +namespace Game { -public: - - typedef std::map TextureList; - typedef std::map GLTextureList; - typedef TextureList::iterator TexIter; - static TextureList textures; - - GLuint terraintexture; - GLuint terraintexture2; - GLuint terraintexture3; - GLuint screentexture; - GLuint screentexture2; - GLuint logotexture; - GLuint loadscreentexture; - GLuint Maparrowtexture; - GLuint Mapboxtexture; - GLuint Mapcircletexture; - GLuint cursortexture; - GLuint Mainmenuitems[10]; - - int nummenuitems; - int startx[100]; - int starty[100]; - int endx[100]; - int endy[100]; - float selectedlong[100]; - float offsetx[100]; - float offsety[100]; - float movex[100]; - float movey[100]; - float transition; - int anim; - int selected; - int loaddistrib; - int keyselect; - int indemo; - - bool won; - - bool entername; - - char menustring[100][256]; - char registrationname[256]; - float registrationnumber; - - int newdetail; - int newscreenwidth; - int newscreenheight; - - bool gameon; - float deltah,deltav; - int mousecoordh,mousecoordv; - int oldmousecoordh,oldmousecoordv; - float rotation,rotation2; - SkyBox skybox; - bool cameramode; - bool cameratogglekeydown; - bool chattogglekeydown; - int olddrawmode; - int drawmode; - bool drawmodetogglekeydown; - bool explodetogglekeydown; - bool detailtogglekeydown; - bool firstload; - bool oldbutton; - - float leveltime; - float loadtime; - - Model hawk; - XYZ hawkcoords; - XYZ realhawkcoords; - GLuint hawktexture; - float hawkrotation; - float hawkcalldelay; - - Model eye; - Model iris; - Model cornea; - - bool stealthloading; - - int campaignnumlevels; - char campaignmapname[50][256]; - char campaigndescription[50][256]; - int campaignchoosenext[50]; - int campaignnumnext[50]; - int campaignnextlevel[50][10]; - int campaignchoicesmade; - int campaignchoices[5000]; - int campaignlocationx[50]; - int campaignlocationy[50]; - int campaignchoicenum; - int campaignchoicewhich[10]; - int whichchoice; - - int numlevelspassed; - int levelorder[5000]; - int levelvisible[50]; - int levelhighlight[50]; - - bool minimap; - - int musictype,oldmusictype,oldoldmusictype; - bool realthreat; - - Model rabbit; - XYZ rabbitcoords; - - XYZ mapcenter; - float mapradius; - - Text text; - float fps; - - XYZ cameraloc; - float cameradist; - - bool envtogglekeydown; - bool slomotogglekeydown; - bool texturesizetogglekeydown; - bool freezetogglekeydown; - int drawtoggle; - - bool editorenabled; - int editortype; - float editorsize; - float editorrotation; - float editorrotation2; - - float brightness; - - int quit; - int tryquit; - - XYZ pathpoint[30]; - int numpathpoints; - int numpathpointconnect[30]; - int pathpointconnect[30][30]; - int pathpointselected; - - int endgame; - bool scoreadded; - int numchallengelevels; - - bool console; - int archiveselected; - char consoletext[15][256]; - int consolechars[15]; - bool chatting; - char displaytext[15][256]; - int displaychars[15]; - float displaytime[15]; - float displayblinkdelay; - bool displayblink; - int displayselected; - bool consolekeydown; - bool consoletogglekeydown; - float consoleblinkdelay; - bool consoleblink; - int consoleselected; - int togglekey[140]; - float togglekeydelay[140]; - bool registernow; - bool autocam; - - unsigned short crouchkey,jumpkey,forwardkey,chatkey,backkey,leftkey,rightkey,drawkey,throwkey,attackkey; - bool oldattackkey; - - long long MD5_string (char *string); - static void LoadTexture(const char *fileName, GLuint *textureid,int mipmap, bool hasalpha); - static void LoadTextureSave(const char *fileName, GLuint *textureid,int mipmap,GLubyte *array, int *skinsize); - void LoadSave(const char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize); - bool AddClothes(const char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize); - void InitGame(); - void LoadStuff(); - void LoadingScreen(); - void FadeLoadingScreen(float howmuch); - void Dispose(); - int DrawGLScene(StereoSide side); - void Tick(); - void TickOnce(); - void TickOnceAfter(); - void SetUpLighting(); - void Loadlevel(int which); - void Loadlevel(char *name); - void LoadSounds(); - void Setenvironment(int which); - GLvoid ReSizeGLScene(float fov, float near); - int findPathDist(int start,int end); - int checkcollide(XYZ startpoint, XYZ endpoint); - int checkcollide(XYZ startpoint, XYZ endpoint, int what); - int loading; - float talkdelay; - - int numboundaries; - XYZ boundary[360]; - - int whichlevel; - int oldenvironment; - int targetlevel; - float changedelay; - - float musicvolume[4]; - float oldmusicvolume[4]; - int musicselected; - int change; - Game(); - ~Game() { - for(int i=0;i<10;i++){ - if(Mainmenuitems[i])glDeleteTextures( 1, &Mainmenuitems[i] ); - } - glDeleteTextures( 1, &cursortexture ); - glDeleteTextures( 1, &Maparrowtexture ); - glDeleteTextures( 1, &Mapboxtexture ); - glDeleteTextures( 1, &Mapcircletexture ); - glDeleteTextures( 1, &terraintexture ); - glDeleteTextures( 1, &terraintexture2 ); - if(screentexture>0)glDeleteTextures( 1, &screentexture ); - if(screentexture2>0)glDeleteTextures( 1, &screentexture2 ); - glDeleteTextures( 1, &hawktexture ); - glDeleteTextures( 1, &logotexture ); - glDeleteTextures( 1, &loadscreentexture ); - - Dispose(); - } - -}; +extern Texture terraintexture; +extern Texture terraintexture2; +extern Texture loadscreentexture; +extern Texture Maparrowtexture; +extern Texture Mapboxtexture; +extern Texture Mapcircletexture; +extern Texture cursortexture; +extern GLuint screentexture; +extern GLuint screentexture2; +extern Texture Mainmenuitems[10]; + +extern int selected; +extern int keyselect; + +extern int newdetail; +extern int newscreenwidth; +extern int newscreenheight; + +extern bool gameon; +extern float deltah, deltav; +extern int mousecoordh, mousecoordv; +extern int oldmousecoordh, oldmousecoordv; +extern float yaw, pitch; +extern SkyBox *skybox; +extern bool cameramode; +extern bool firstload; + +extern float leveltime; +extern float loadtime; + +extern Model hawk; +extern XYZ hawkcoords; +extern XYZ realhawkcoords; +extern Texture hawktexture; +extern float hawkyaw; +extern float hawkcalldelay; + +extern Model eye; +extern Model iris; +extern Model cornea; + +extern bool stealthloading; +extern int loading; + +extern int musictype; + +extern XYZ mapcenter; +extern float mapradius; + +extern Text *text; +extern float fps; + +extern bool editorenabled; +extern int editortype; +extern float editorsize; +extern float editoryaw; +extern float editorpitch; + +extern int tryquit; + +extern XYZ pathpoint[30]; +extern int numpathpoints; +extern int numpathpointconnect[30]; +extern int pathpointconnect[30][30]; +extern int pathpointselected; + +extern int endgame; +extern bool scoreadded; +extern int numchallengelevels; + +extern bool console; +extern std::string consoletext[15]; +extern std::string displaytext[15]; +extern float displaytime[15]; +extern float displayblinkdelay; +extern bool displayblink; +extern unsigned displayselected; +extern float consoleblinkdelay; +extern bool consoleblink; +extern unsigned consoleselected; + +extern int oldenvironment; +extern int targetlevel; +extern float changedelay; + +extern bool waiting; +extern Account* accountactive; + +extern unsigned short crouchkey, jumpkey, forwardkey, backkey, leftkey, rightkey, drawkey, throwkey, attackkey; +extern unsigned short consolekey; + +void newGame(); +void deleteGame(); + +void InitGame(); +void LoadStuff(); +void LoadScreenTexture(); +void LoadingScreen(); +int DrawGLScene(StereoSide side); +void LoadMenu(); +void Tick(); +void TickOnce(); +void TickOnceAfter(); +void SetUpLighting(); +GLvoid ReSizeGLScene(float fov, float near); +int checkcollide(XYZ startpoint, XYZ endpoint); +int checkcollide(XYZ startpoint, XYZ endpoint, int what); + +void fireSound(int sound = fireendsound); +void setKeySelected(); + +void inputText(std::string& str, unsigned* charselected); +void flash(); +} #ifndef __forceinline # ifdef __GNUC__ @@ -305,20 +185,61 @@ public: static __forceinline void swap_gl_buffers(void) { - - SDL_GL_SwapBuffers(); - + extern SDL_Window *sdlwindow; + SDL_GL_SwapWindow(sdlwindow); + + // try to limit this to 60fps, even if vsync fails. + Uint32 now; + static Uint32 frameticks = 0; + const Uint32 endticks = (frameticks + 16); + while ((now = SDL_GetTicks()) < endticks) { /* spin. */ } + frameticks = now; } -#ifdef __GNUC__ -#define LONGLONGCONST(x) (x##ll) -#else -#define LONGLONGCONST(x) (x) -#endif - -extern "C" { void UndefinedSymbolToExposeStubbedCode(void); } +extern "C" { + void UndefinedSymbolToExposeStubbedCode(void); +} //#define STUBBED(x) UndefinedSymbolToExposeStubbedCode(); #define STUBBED(x) { static bool seen = false; if (!seen) { seen = true; fprintf(stderr, "STUBBED: %s at %s:%d\n", x, __FILE__, __LINE__); } } //#define STUBBED(x) +extern int numdialogues; +const int max_dialogues = 20; +const int max_dialoguelength = 20; +extern int numdialogueboxes[max_dialogues]; +extern int dialoguetype[max_dialogues]; +extern int dialogueboxlocation[max_dialogues][max_dialoguelength]; +extern float dialogueboxcolor[max_dialogues][max_dialoguelength][3]; +extern int dialogueboxsound[max_dialogues][max_dialoguelength]; +extern char dialoguetext[max_dialogues][max_dialoguelength][128]; +extern char dialoguename[max_dialogues][max_dialoguelength][64]; +extern XYZ dialoguecamera[max_dialogues][max_dialoguelength]; +extern XYZ participantlocation[max_dialogues][10]; +extern int participantfocus[max_dialogues][max_dialoguelength]; +extern int participantaction[max_dialogues][max_dialoguelength]; +extern float participantyaw[max_dialogues][10]; +extern XYZ participantfacing[max_dialogues][max_dialoguelength][10]; +extern float dialoguecamerayaw[max_dialogues][max_dialoguelength]; +extern float dialoguecamerapitch[max_dialogues][max_dialoguelength]; +extern int indialogue; +extern int whichdialogue; +extern int directing; +extern float dialoguetime; +extern int dialoguegonethrough[20]; + +enum maptypes { + mapkilleveryone, mapgosomewhere, + mapkillsomeone, mapkillmost // These two are unused +}; + +enum pathtypes {wpkeepwalking, wppause}; + +extern const char *pathtypenames[2]; + +enum editortypes {typeactive, typesitting, typesittingwall, typesleeping, + typedead1, typedead2, typedead3, typedead4 + }; + +extern const char *editortypenames[8]; + #endif