extern GLuint rabbittexture;
+struct TextureInfo;
+
class Game
{
public:
- typedef std::map<std::string, GLuint> TextureList;
- typedef std::map<GLuint, std::string> GLTextureList;
- typedef TextureList::iterator TexIter;
- static TextureList textures;
+ static std::vector<TextureInfo> textures;
GLuint terraintexture;
GLuint terraintexture2;
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;
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;
int campaignchoosenext[50];
int campaignnumnext[50];
int campaignnextlevel[50][10];
- int campaignchoicesmade;
- int campaignchoices[5000];
int campaignlocationx[50];
int campaignlocationy[50];
int campaignchoicenum;
XYZ cameraloc;
float cameradist;
- bool envtogglekeydown;
- bool slomotogglekeydown;
- bool texturesizetogglekeydown;
- bool freezetogglekeydown;
int drawtoggle;
bool editorenabled;
bool displayblink;
int displayselected;
bool consolekeydown;
- bool consoletogglekeydown;
float consoleblinkdelay;
bool consoleblink;
int consoleselected;
- //int togglekey[140];
- //float togglekeydelay[140];
bool autocam;
unsigned short crouchkey,jumpkey,forwardkey,chatkey,backkey,leftkey,rightkey,drawkey,throwkey,attackkey;
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, 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(char *name);
+ void Loadlevel(const char *name);
void Setenvironment(int which);
GLvoid ReSizeGLScene(float fov, float near);
int findPathDist(int start,int end);
void inputText(char* str, int* charselected, int* nb_chars);
void flash();
bool waiting;
- bool mainmenutogglekeydown;
//int mainmenu;
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))