extern float viewdistance;
extern XYZ viewer;
extern XYZ lightlocation;
-extern float lightambient[3],lightbrightness[3];
extern float fadestart;
extern float texscale;
extern float gravity;
extern short vRefNum;
extern long dirID;
extern int mainmenu;
-extern int oldmainmenu;
extern bool visibleloading;
extern float flashamount,flashr,flashg,flashb;
extern int flashdelay;
extern char dialoguetext[20][20][128];
extern char dialoguename[20][20][64];
extern XYZ dialoguecamera[20][20];
-extern float dialoguecamerarotation[20][20];
-extern float dialoguecamerarotation2[20][20];
+extern float dialoguecamerayaw[20][20];
+extern float dialoguecamerapitch[20][20];
extern int indialogue;
extern int whichdialogue;
extern float dialoguetime;
// !!! FIXME: write me.
}
-void Game::Dispose()
+void Dispose()
{
LOGFUNC;
- if(endgame==2){
- accountactive->endGame();
- endgame=0;
+ if(Game::endgame==2){
+ Game::accountactive->endGame();
+ Game::endgame=0;
}
- Account::saveFile(":Data:Users", accountactive);
+ Account::saveFile(":Data:Users", Game::accountactive);
//textures.clear();
#endif
}
-
-void Game::LoadTexture(const string fileName, GLuint *textureid,int mipmap, bool hasalpha) {
- *textureid = Texture::Load(fileName,mipmap,hasalpha);
+void Game::newGame(){
+ text = new Text();
+ skybox = new SkyBox();
}
-void Game::LoadTextureSave(const string fileName, GLuint *textureid,int mipmap,GLubyte *array, int *skinsize) {
- *textureid = Texture::Load(fileName,mipmap,false,array,skinsize);
+void Game::deleteGame(){
+ if(skybox) delete skybox;
+ if(text) delete text;
+ terraintexture.destroy();
+ terraintexture2.destroy();
+ cursortexture.destroy();
+ Maparrowtexture.destroy();
+ Mapboxtexture.destroy();
+ Mapcircletexture.destroy();
+ hawktexture.destroy();
+ loadscreentexture.destroy();
+
+ for(int i=0;i<10;i++)
+ Mainmenuitems[i].destroy();
+
+ glDeleteTextures(1,&screentexture);
+ glDeleteTextures(1,&screentexture2);
+
+ Dispose();
}
-void Game::LoadSave(const char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize)
+
+
+void LoadSave(const char *fileName, GLuint *textureid,bool mipmap,GLubyte *array, int *skinsize)
{
int i;
int bytesPerPixel;
}
}
-bool Game::AddClothes(const char *fileName, GLubyte *array)
-{
- int i;
- int bytesPerPixel;
-
- LOGFUNC;
-
- //upload_image( fileName );
- //LoadTGA( fileName );
- //Load Image
- unsigned char fileNamep[256];
- CopyCStringToPascal(fileName,fileNamep);
- //Load Image
- bool opened;
- opened=upload_image( fileNamep ,1);
-
- float alphanum;
- //Is it valid?
- if(opened){
- if(tintr>1)tintr=1;
- if(tintg>1)tintg=1;
- if(tintb>1)tintb=1;
-
- if(tintr<0)tintr=0;
- if(tintg<0)tintg=0;
- if(tintb<0)tintb=0;
-
- bytesPerPixel=texture.bpp/8;
-
- int tempnum=0;
- alphanum=255;
- for(i=0;i<(int)(texture.sizeY*texture.sizeX*bytesPerPixel);i++){
- if(bytesPerPixel==3)alphanum=255;
- else if((i+1)%4==0)alphanum=texture.data[i];
- //alphanum/=2;
- if((i+1)%4||bytesPerPixel==3){
- if((i%4)==0)texture.data[i]*=tintr;
- if((i%4)==1)texture.data[i]*=tintg;
- if((i%4)==2)texture.data[i]*=tintb;
- array[tempnum]=(float)array[tempnum]*(1-alphanum/255)+(float)texture.data[i]*(alphanum/255);
- tempnum++;
- }
- }
- }
- else return 0;
- return 1;
-}
//***************> ResizeGLScene() <******/
//Background
glEnable(GL_TEXTURE_2D);
- glBindTexture( GL_TEXTURE_2D, loadscreentexture);
+ loadscreentexture.bind();
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glDisable(GL_DEPTH_TEST); // Disables Depth Testing
glDepthMask(1);
glEnable(GL_TEXTURE_2D);
- glBindTexture( GL_TEXTURE_2D, loadscreentexture);
+ loadscreentexture.bind();
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glDisable(GL_DEPTH_TEST); // Disables Depth Testing
glDepthMask(1);
glEnable(GL_TEXTURE_2D);
- glBindTexture( GL_TEXTURE_2D, loadscreentexture);
+ loadscreentexture.bind();
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
glDisable(GL_DEPTH_TEST); // Disables Depth Testing
}
}
-void Game::FadeLoadingScreen(float howmuch)
+void FadeLoadingScreen(float howmuch)
{
static float loadprogress;
}
+extern bool cmdline(const char *cmd);
+
void Game::InitGame()
{
#if PLATFORM_MACOSX
LOGFUNC;
- autocam=0;
-
numchallengelevels=14;
accountactive=Account::loadFile(":Data:Users");
#if PLATFORM_LINUX
int output = -1;
- extern bool cmdline(const char *cmd);
unsigned char rc = 0;
output = OPENAL_OUTPUT_ALSA; // Try alsa first...
if (cmdline("forceoss")) // ...but let user override that.
if(musictoggle)
emit_stream_np(stream_menutheme);
- LoadTexture(":Data:Textures:Cursor.png",&cursortexture,0,1);
+ cursortexture.load(":Data:Textures:Cursor.png",0,1);
- LoadTexture(":Data:Textures:MapCircle.png",&Mapcircletexture,0,1);
- LoadTexture(":Data:Textures:MapBox.png",&Mapboxtexture,0,1);
- LoadTexture(":Data:Textures:MapArrow.png",&Maparrowtexture,0,1);
+ Mapcircletexture.load(":Data:Textures:MapCircle.png",0,1);
+ Mapboxtexture.load(":Data:Textures:MapBox.png",0,1);
+ Maparrowtexture.load(":Data:Textures:MapArrow.png",0,1);
temptexdetail=texdetail;
if(texdetail>2)texdetail=2;
- LoadTexture(":Data:Textures:Lugaru.png",&Mainmenuitems[0],0,0);
- LoadTexture(":Data:Textures:Newgame.png",&Mainmenuitems[1],0,0);
- LoadTexture(":Data:Textures:Options.png",&Mainmenuitems[2],0,0);
- LoadTexture(":Data:Textures:Quit.png",&Mainmenuitems[3],0,0);
- LoadTexture(":Data:Textures:Eyelid.png",&Mainmenuitems[4],0,1);
- LoadTexture(":Data:Textures:Resume.png",&Mainmenuitems[5],0,0);
- LoadTexture(":Data:Textures:Endgame.png",&Mainmenuitems[6],0,0);
+ Mainmenuitems[0].load(":Data:Textures:Lugaru.png",0,0);
+ Mainmenuitems[1].load(":Data:Textures:Newgame.png",0,0);
+ Mainmenuitems[2].load(":Data:Textures:Options.png",0,0);
+ Mainmenuitems[3].load(":Data:Textures:Quit.png",0,0);
+ Mainmenuitems[4].load(":Data:Textures:Eyelid.png",0,1);
+ Mainmenuitems[5].load(":Data:Textures:Resume.png",0,0);
+ Mainmenuitems[6].load(":Data:Textures:Endgame.png",0,0);
//LoadTexture(":Data:Textures:Eye.jpg",&Mainmenuitems[5],0,1);
//~ LoadTexture(":Data:Textures:World.png",&Mainmenuitems[7],0,0); // LoadCampaign will take care of that
stillloading=0;
firstload=0;
- oldmainmenu=0;
newdetail=detail;
newscreenwidth=screenwidth;
newscreenheight=screenheight;
+
+ LoadMenu();
}
void Game::LoadScreenTexture() {
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
- if(!screentexture)
- glGenTextures( 1, &screentexture );
+ if(!Game::screentexture)
+ glGenTextures( 1, &Game::screentexture );
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
glEnable(GL_TEXTURE_2D);
- glBindTexture( GL_TEXTURE_2D, screentexture);
+ glBindTexture( GL_TEXTURE_2D, Game::screentexture);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, kTextureSize, kTextureSize, 0);
}
+//TODO: move LoadStuff() closer to GameTick.cpp to get rid of various vars shared in Game.h
void Game::LoadStuff()
{
static float temptexdetail;
LOGFUNC;
- visibleloading=1;
-
loadtime=0;
stillloading=1;
for(i=0;i<maxplayers;i++)
- {
- if (glIsTexture(player[i].skeleton.drawmodel.textureptr))
- {
- glDeleteTextures(1, &player[i].skeleton.drawmodel.textureptr);
- }
- player[i].skeleton.drawmodel.textureptr=0;;
- }
+ player[i].skeleton.drawmodel.textureptr.destroy();
i=abs(Random()%4);
- LoadTexture(":Data:Textures:fire.jpg",&loadscreentexture,1,0);
+ visibleloading=0; //don't use loadscreentexture yet
+ loadscreentexture.load(":Data:Textures:fire.jpg",1,0);
+ visibleloading=1;
temptexdetail=texdetail;
texdetail=1;
viewdistdetail=2;
viewdistance=50*megascale*viewdistdetail;
- brightness=100;
-
if(detail==2){
texdetail=1;
}
LOG("Loading weapon data...");
- LoadTexture(":Data:Textures:knife.png",&Weapon::knifetextureptr,0,1);
- LoadTexture(":Data:Textures:bloodknife.png",&Weapon::bloodknifetextureptr,0,1);
- LoadTexture(":Data:Textures:lightbloodknife.png",&Weapon::lightbloodknifetextureptr,0,1);
- LoadTexture(":Data:Textures:sword.jpg",&Weapon::swordtextureptr,1,0);
- LoadTexture(":Data:Textures:Swordblood.jpg",&Weapon::bloodswordtextureptr,1,0);
- LoadTexture(":Data:Textures:Swordbloodlight.jpg",&Weapon::lightbloodswordtextureptr,1,0);
- LoadTexture(":Data:Textures:Staff.jpg",&Weapon::stafftextureptr,1,0);
+ Weapon::knifetextureptr.load(":Data:Textures:knife.png",0,1);
+ Weapon::bloodknifetextureptr.load(":Data:Textures:bloodknife.png",0,1);
+ Weapon::lightbloodknifetextureptr.load(":Data:Textures:lightbloodknife.png",0,1);
+ Weapon::swordtextureptr.load(":Data:Textures:sword.jpg",1,0);
+ Weapon::bloodswordtextureptr.load(":Data:Textures:Swordblood.jpg",1,0);
+ Weapon::lightbloodswordtextureptr.load(":Data:Textures:Swordbloodlight.jpg",1,0);
+ Weapon::stafftextureptr.load(":Data:Textures:Staff.jpg",1,0);
Weapon::throwingknifemodel.load((char *)":Data:Models:throwingknife.solid",1);
Weapon::throwingknifemodel.Scale(.001,.001,.001);
Weapon::staffmodel.CalculateNormals(1);
//Weapon::staffmodel.ScaleNormals(-1,-1,-1);
- LoadTexture(":Data:Textures:shadow.png",&terrain.shadowtexture,0,1);
-
- LoadTexture(":Data:Textures:blood.png",&terrain.bloodtexture,0,1);
-
- LoadTexture(":Data:Textures:break.png",&terrain.breaktexture,0,1);
+ terrain.shadowtexture.load(":Data:Textures:shadow.png",0,1);
+ terrain.bloodtexture.load(":Data:Textures:blood.png",0,1);
+ terrain.breaktexture.load(":Data:Textures:break.png",0,1);
+ terrain.bloodtexture2.load(":Data:Textures:blood.png",0,1);
- LoadTexture(":Data:Textures:blood.png",&terrain.bloodtexture2,0,1);
+ terrain.footprinttexture.load(":Data:Textures:footprint.png",0,1);
+ terrain.bodyprinttexture.load(":Data:Textures:bodyprint.png",0,1);
+ hawktexture.load(":Data:Textures:hawk.png",0,1);
- LoadTexture(":Data:Textures:footprint.png",&terrain.footprinttexture,0,1);
- LoadTexture(":Data:Textures:bodyprint.png",&terrain.bodyprinttexture,0,1);
+ Sprite::cloudtexture.load(":Data:Textures:cloud.png",1,1);
+ Sprite::cloudimpacttexture.load(":Data:Textures:cloudimpact.png",1,1);
+ Sprite::bloodtexture.load(":Data:Textures:bloodparticle.png",1,1);
+ Sprite::snowflaketexture.load(":Data:Textures:snowflake.png",1,1);
+ Sprite::flametexture.load(":Data:Textures:flame.png",1,1);
+ Sprite::bloodflametexture.load(":Data:Textures:bloodflame.png",1,1);
+ Sprite::smoketexture.load(":Data:Textures:smoke.png",1,1);
+ Sprite::shinetexture.load(":Data:Textures:shine.png",1,0);
+ Sprite::splintertexture.load(":Data:Textures:splinter.png",1,1);
+ Sprite::leaftexture.load(":Data:Textures:leaf.png",1,1);
+ Sprite::toothtexture.load(":Data:Textures:tooth.png",1,1);
- LoadTexture(":Data:Textures:hawk.png",&hawktexture,0,1);
-
- LoadTexture(":Data:Textures:logo.png",&logotexture,0,1);
-
-
- LoadTexture(":Data:Textures:cloud.png",&Sprite::cloudtexture,1,1);
- LoadTexture(":Data:Textures:cloudimpact.png",&Sprite::cloudimpacttexture,1,1);
- LoadTexture(":Data:Textures:bloodparticle.png",&Sprite::bloodtexture,1,1);
- LoadTexture(":Data:Textures:snowflake.png",&Sprite::snowflaketexture,1,1);
- LoadTexture(":Data:Textures:flame.png",&Sprite::flametexture,1,1);
- LoadTexture(":Data:Textures:bloodflame.png",&Sprite::bloodflametexture,1,1);
- LoadTexture(":Data:Textures:smoke.png",&Sprite::smoketexture,1,1);
- LoadTexture(":Data:Textures:shine.png",&Sprite::shinetexture,1,0);
- LoadTexture(":Data:Textures:splinter.png",&Sprite::splintertexture,1,1);
- LoadTexture(":Data:Textures:leaf.png",&Sprite::leaftexture,1,1);
- LoadTexture(":Data:Textures:tooth.png",&Sprite::toothtexture,1,1);
-
- rotation=0;
- rotation2=0;
+ yaw=0;
+ pitch=0;
ReSizeGLScene(90,.01);
viewer=0;
firstload=0;
- rabbitcoords=player[0].coords;
- rabbitcoords.y=terrain.getHeight(rabbitcoords.x,rabbitcoords.z);
-
loadAllAnimations();
//Fix knife stab, too lazy to do it manually
XYZ moveamount;