X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGame.h;h=32dbced0608aa583e3838209a9faf6241fc2a7b7;hb=cfdbe0ad0521045b27a60dbb1c963ea6dfdcda5a;hp=5243716ac2e890dcac5062c184d86cafff13d586;hpb=2edee4153ff2829f28ca0136520eb9cc37d49dbe;p=lugaru.git diff --git a/Source/Game.h b/Source/Game.h index 5243716..32dbced 100644 --- a/Source/Game.h +++ b/Source/Game.h @@ -59,273 +59,291 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "Account.h" #include "Sounds.h" +#define NB_CAMPAIGN_MENU_ITEM 7 + extern GLuint rabbittexture; struct TextureInfo; -class Game +class CampaignLevel { - public: - static std::vector 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 keyselect; - int loaddistrib; - 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; - int olddrawmode; - int drawmode; - 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 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; - - 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; - float consoleblinkdelay; - bool consoleblink; - int consoleselected; - bool autocam; - - unsigned short crouchkey,jumpkey,forwardkey,chatkey,backkey,leftkey,rightkey,drawkey,throwkey,attackkey; - bool oldattackkey; - - 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); - static void LoadTextureData(const char *fileName, GLuint *textureid,int mipmap, bool hasalpha); - static void LoadTextureSaveData(const char *fileName, GLuint *textureid,int mipmap,GLubyte *array, int *skinsize, bool reload); - void LoadSave(const char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize); - bool AddClothes(const char *fileName, GLubyte *array); - void InitGame(); - void LoadScreenTexture(); - void LoadStuff(); - void LoadingScreen(); - void LoadCampaign(); - void FadeLoadingScreen(float howmuch); - void Dispose(); - int DrawGLScene(StereoSide side); - void DrawMenu(); - void DrawGL(); - //factored from Tick() -sf17k - void MenuTick(); - void doTutorial(); - void doDebugKeys(); - void doJumpReversals(); - void doAerialAcrobatics(); - void doAttacks(); - void doPlayerCollisions(); - void doAI(int i); - //end factored - void Tick(); - void TickOnce(); - void TickOnceAfter(); - void SetUpLighting(); - void Loadlevel(int which); - void Loadlevel(const char *name); - 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; - - void fireSound(int sound=fireendsound); - void setKeySelected(); - - 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(); +private: + int width; + struct Position + { + int x; + int y; + }; +public: + std::string mapname; + std::string description; + int choosenext; + /* + 0 = Immediately load next level at the end of this one. + 1 = Go back to the world map. + 2 = Don't bring up the Fiery loading screen. Maybe other things, I've not investigated. + */ + //int numnext; // 0 on final level. As David said: he meant to add story branching, but he eventually hadn't. + std::vector nextlevel; + Position location; + + CampaignLevel() : width(10) { + choosenext = 1; + location.x = 0; + location.y = 0; + } + + int getStartX() { + return 30+120+location.x*400/512; + } + + int getStartY() { + return 30+30+(512-location.y)*400/512; + } + + int getEndX() { + return getStartX()+width; + } + + int getEndY() { + return getStartY()+width; + } + + XYZ getCenter() { + XYZ center; + center.x=getStartX()+width/2; + center.y=getStartY()+width/2; + return center; + } + + int getWidth() { + return width; + } + + istream& operator<< (istream& is) { + is.ignore(256,':'); + is.ignore(256,':'); + is.ignore(256,' '); + is >> mapname; + is.ignore(256,':'); + is >> description; + for(int pos = description.find('_');pos!=string::npos;pos = description.find('_',pos)) { + description.replace(pos,1,1,' '); + } + is.ignore(256,':'); + is >> choosenext; + is.ignore(256,':'); + int numnext,next; + is >> numnext; + for(int j=0;j> next; + nextlevel.push_back(next-1); } - bool isWaiting() { return waiting; }; - private: - void setKeySelected_thread(); - static int thread(void *data); - void inputText(char* str, int* charselected, int* nb_chars); - void flash(); - bool waiting; - //int mainmenu; - Account* accountactive; + is.ignore(256,':'); + is >> location.x; + is.ignore(256,':'); + is >> location.y; + return is; + } + + friend istream& operator>> (istream& is, CampaignLevel& cl) { + return cl << is; + } }; -//keeps track of which textures are loaded -//TODO: delete them properly -struct TextureInfo{ - bool isLoaded; - bool isSkin; - const char* fileName; - GLuint* ptextureid; - int mipmap; - bool hasalpha; - GLubyte* array; - int* skinsize; - - void load(){ - if(isSkin) - Game::LoadTextureSaveData(fileName,ptextureid,mipmap,array,skinsize,isLoaded); - else - Game::LoadTextureData(fileName,ptextureid,mipmap,hasalpha); - isLoaded=true; - } - TextureInfo(const char *_fileName, GLuint *_ptextureid,int _mipmap, bool _hasalpha): - isLoaded(false), isSkin(false), array(NULL), skinsize(NULL), - fileName(_fileName), ptextureid(_ptextureid), mipmap(_mipmap), hasalpha(_hasalpha) { } - TextureInfo(const char *_fileName, GLuint *_ptextureid, int _mipmap, GLubyte *_array, int *_skinsize): - isLoaded(false), isSkin(true), hasalpha(false), - fileName(_fileName), ptextureid(_ptextureid), mipmap(_mipmap), array(_array), skinsize(_skinsize) { } -}; +namespace Game +{ + //public: + extern GLuint terraintexture; + extern GLuint terraintexture2; + extern GLuint terraintexture3; + extern GLuint screentexture; + extern GLuint screentexture2; + extern GLuint logotexture; + extern GLuint loadscreentexture; + extern GLuint Maparrowtexture; + extern GLuint Mapboxtexture; + extern GLuint Mapcircletexture; + extern GLuint cursortexture; + extern GLuint Mainmenuitems[10]; + + extern int selected; + extern int keyselect; + extern int indemo; + + extern bool won; + + extern bool entername; + + extern char registrationname[256]; + extern float registrationnumber; + + 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 rotation,rotation2; + extern SkyBox skybox; + extern bool cameramode; + extern int olddrawmode; + extern int drawmode; + extern bool firstload; + extern bool oldbutton; + + extern float leveltime; + extern float loadtime; + + extern Model hawk; + extern XYZ hawkcoords; + extern XYZ realhawkcoords; + extern GLuint hawktexture; + extern float hawkrotation; + extern float hawkcalldelay; + + extern Model eye; + extern Model iris; + extern Model cornea; + + extern bool stealthloading; + + extern std::vector campaignlevels; + extern int whichchoice; + extern int actuallevel; + extern bool winhotspot; + extern bool windialogue; + + extern bool minimap; + + extern int musictype,oldmusictype,oldoldmusictype; + extern bool realthreat; + + extern Model rabbit; + extern XYZ rabbitcoords; + + extern XYZ mapcenter; + extern float mapradius; + + extern Text* text; + extern float fps; + + extern XYZ cameraloc; + extern float cameradist; + + extern int drawtoggle; + + extern bool editorenabled; + extern int editortype; + extern float editorsize; + extern float editorrotation; + extern float editorrotation2; + + extern float brightness; + + extern int quit; + 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 int archiveselected; + extern char consoletext[15][256]; + extern int consolechars[15]; + extern bool chatting; + extern char displaytext[15][256]; + extern int displaychars[15]; + extern float displaytime[15]; + extern float displayblinkdelay; + extern bool displayblink; + extern int displayselected; + extern bool consolekeydown; + extern float consoleblinkdelay; + extern bool consoleblink; + extern int consoleselected; + extern bool autocam; + + extern unsigned short crouchkey,jumpkey,forwardkey,chatkey,backkey,leftkey,rightkey,drawkey,throwkey,attackkey; + extern unsigned short consolekey; + extern bool oldattackkey; + + void LoadTexture(const string fileName, GLuint *textureid,int mipmap, bool hasalpha); + void LoadTextureSave(const string 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, GLubyte *array); + void InitGame(); + void LoadScreenTexture(); + void LoadStuff(); + void LoadingScreen(); + void LoadCampaign(); + std::vector ListCampaigns(); + void FadeLoadingScreen(float howmuch); + void Dispose(); + int DrawGLScene(StereoSide side); + void DrawMenu(); + void DrawGL(); + void LoadMenu(); + //factored from Tick() -sf17k + void MenuTick(); + void doTutorial(); + void doDebugKeys(); + void doJumpReversals(); + void doAerialAcrobatics(); + void doAttacks(); + void doPlayerCollisions(); + void doAI(int i); + //end factored + void Tick(); + void TickOnce(); + void TickOnceAfter(); + void SetUpLighting(); + void Loadlevel(int which); + void Loadlevel(const char *name); + 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); + extern int loading; + extern float talkdelay; + + void fireSound(int sound=fireendsound); + void setKeySelected(); + + extern int numboundaries; + extern XYZ boundary[360]; + + extern int whichlevel; + extern int oldenvironment; + extern int targetlevel; + extern float changedelay; + + extern float musicvolume[4]; + extern float oldmusicvolume[4]; + extern int musicselected; + extern int change; + void newGame(); + void deleteGame(); + extern bool waiting; + //private: + int setKeySelected_thread(void*); + int thread(void *data); + void inputText(char* str, int* charselected, int* nb_chars); + void flash(); + //bool waiting; + extern Account* accountactive; +} #ifndef __forceinline # ifdef __GNUC__