]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Game.h
major refactor of menu system, part 1
[lugaru.git] / Source / Game.h
index 19604e1d5047931b3aeecb09407d358aab8d9e40..bc7ac539fc62b39b1c5fb650cdc489c1dd7a4e72 100644 (file)
@@ -68,6 +68,7 @@ struct TextureInfo;
 class CampaignLevel
 {
 private:
+       int width;
        struct Position
        {
                int x;
@@ -86,12 +87,39 @@ public:
        std::vector<int> nextlevel;
        Position location;
        
-       CampaignLevel() {
+       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,':');
@@ -127,8 +155,6 @@ public:
 class Game
 {
        public:
-               static std::vector<TextureInfo> textures;
-
                GLuint terraintexture;
                GLuint terraintexture2;
                GLuint terraintexture3;
@@ -142,14 +168,6 @@ class Game
                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];
                int selected;
                int keyselect;
                int indemo;
@@ -197,6 +215,8 @@ class Game
                std::vector<CampaignLevel> campaignlevels;
                int whichchoice;
                int actuallevel;
+               bool winhotspot;
+               bool windialogue;
 
                bool minimap;
 
@@ -256,12 +276,11 @@ class Game
                bool autocam;
 
                unsigned short crouchkey,jumpkey,forwardkey,chatkey,backkey,leftkey,rightkey,drawkey,throwkey,attackkey;
+               unsigned short consolekey;
                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);
+               static void LoadTexture(const string fileName, GLuint *textureid,int mipmap, bool hasalpha);
+               static 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();
@@ -344,33 +363,6 @@ class Game
                Account* accountactive;
 };
 
-//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) { }
-};
-
 #ifndef __forceinline
 #  ifdef __GNUC__
 #    define __forceinline inline __attribute__((always_inline))