X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameInitDispose.cpp;h=2922eaf29e312c4b989eb3580d522f1790cb4397;hb=8b8230c564e1f0063b381e77bf6222af9f2e678d;hp=d950c2ebb9d52bd9a228131f19c5a4c65cd509e0;hpb=ed3662c0852c4312a612b4fc35bd03aba8d13db7;p=lugaru.git diff --git a/Source/GameInitDispose.cpp b/Source/GameInitDispose.cpp index d950c2e..2922eaf 100644 --- a/Source/GameInitDispose.cpp +++ b/Source/GameInitDispose.cpp @@ -38,7 +38,6 @@ extern int kTextureSize; extern float texdetail; extern float realtexdetail; extern float volume; -extern Objects objects; extern int detail; extern bool cellophane; extern GLubyte bloodText[512 * 512 * 3]; @@ -69,7 +68,7 @@ extern float accountcampaigntime[10]; extern int accountcampaignchoicesmade[10]; extern int accountcampaignchoices[10][5000]; -void LOG(const std::string &fmt, ...) +void LOG(const std::string &, ...) { // !!! FIXME: write me. } @@ -83,7 +82,7 @@ void Dispose() Game::endgame = 0; } - Account::saveFile(Folders::getUserDataPath()+"/users"); + Account::saveFile(Folders::getUserSavePath()); //textures.clear(); @@ -106,26 +105,15 @@ void Dispose() void Game::newGame() { text = new Text(); + textmono = new Text(); skybox = new SkyBox(); } 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(); + delete skybox; + delete text; + delete textmono; glDeleteTextures(1, &screentexture); glDeleteTextures(1, &screentexture2); @@ -135,7 +123,7 @@ void Game::deleteGame() -void LoadSave(const std::string& fileName, GLuint *textureid, bool mipmap, GLubyte *array, int *skinsize) +void LoadSave(const std::string& fileName, GLubyte *array) { LOGFUNC; @@ -186,6 +174,10 @@ GLvoid Game::ReSizeGLScene(float fov, float pnear) void Game::LoadingScreen() { + if (!visibleloading) { + return; + } + static float loadprogress; static AbsoluteTime frametime = {0, 0}; AbsoluteTime currTime = UpTime (); @@ -458,7 +450,7 @@ void Game::InitGame() numchallengelevels = 14; - Account::loadFile(Folders::getUserDataPath()+"/users"); + Account::loadFile(Folders::getUserSavePath()); whichjointstartarray[0] = righthip; whichjointendarray[0] = rightfoot; @@ -546,6 +538,8 @@ void Game::InitGame() texdetail = 1; text->LoadFontTexture("Textures/Font.png"); text->BuildFont(); + textmono->LoadFontTexture("Textures/FontMono.png"); + textmono->BuildFont(); texdetail = temptexdetail; FadeLoadingScreen(10); @@ -562,33 +556,7 @@ void Game::InitGame() LOG("Initializing sound system..."); -#if PLATFORM_LINUX - unsigned char rc = 0; - int output = OPENAL_OUTPUT_ALSA; // Try alsa first... - if (commandLineOptions[SOUND]) { - output = commandLineOptions[SOUND].last()->type(); // ...but let user override that. - } - - OPENAL_SetOutput(output); - if ((rc = OPENAL_Init(44100, 32, 0)) == false) { - // if we tried ALSA and failed, fall back to OSS. - if ( (output == OPENAL_OUTPUT_ALSA) && (commandLineOptions[SOUND].last()->type() != OPENAL_OUTPUT_ALSA) ) { - OPENAL_Close(); - output = OPENAL_OUTPUT_OSS; - OPENAL_SetOutput(output); - rc = OPENAL_Init(44100, 32, 0); - } - } - - if (rc == false) { - OPENAL_Close(); - output = OPENAL_OUTPUT_NOSOUND; // we tried! just do silence. - OPENAL_SetOutput(output); - rc = OPENAL_Init(44100, 32, 0); - } -#else OPENAL_Init(44100, 32, 0); -#endif OPENAL_SetSFXMasterVolume((int)(volume * 255)); loadAllSounds(); @@ -622,7 +590,7 @@ void Game::InitGame() mainmenu = 1; stillloading = 0; - firstload = 0; + firstLoadDone = false; newdetail = detail; newscreenwidth = screenwidth; @@ -652,11 +620,11 @@ void Game::LoadScreenTexture() } //TODO: move LoadStuff() closer to GameTick.cpp to get rid of various vars shared in Game.hpp +/* Loads models and textures which only needs to be loaded once */ void Game::LoadStuff() { - static float temptexdetail; - static float viewdistdetail; - static int i, j; + float temptexdetail; + float viewdistdetail; float megascale = 1; LOGFUNC; @@ -665,19 +633,16 @@ void Game::LoadStuff() stillloading = 1; - for (auto p:Person::players) { - p->skeleton.drawmodel.textureptr.destroy(); - } - - i = abs(Random() % 4); - visibleloading = 0; //don't use loadscreentexture yet + visibleloading = false; //don't use loadscreentexture yet loadscreentexture.load("Textures/Fire.jpg", 1); - visibleloading = 1; + visibleloading = true; temptexdetail = texdetail; texdetail = 1; text->LoadFontTexture("Textures/Font.png"); text->BuildFont(); + textmono->LoadFontTexture("Textures/FontMono.png"); + textmono->BuildFont(); texdetail = temptexdetail; viewdistdetail = 2; @@ -685,12 +650,13 @@ void Game::LoadStuff() if (detail == 2) { texdetail = 1; - } - if (detail == 1) { + kTextureSize = 1024; + } else if (detail == 1) { texdetail = 2; - } - if (detail == 0) { + kTextureSize = 512; + } else { texdetail = 4; + kTextureSize = 256; } realtexdetail = texdetail; @@ -705,14 +671,14 @@ void Game::LoadStuff() Weapon::lightbloodswordtextureptr.load("Textures/SwordBloodLight.jpg", 1); Weapon::stafftextureptr.load("Textures/Staff.jpg", 1); - Weapon::throwingknifemodel.load("Models/ThrowingKnife.solid", 1); + Weapon::throwingknifemodel.load("Models/ThrowingKnife.solid"); Weapon::throwingknifemodel.Scale(.001, .001, .001); Weapon::throwingknifemodel.Rotate(90, 0, 0); Weapon::throwingknifemodel.Rotate(0, 90, 0); Weapon::throwingknifemodel.flat = 0; Weapon::throwingknifemodel.CalculateNormals(1); - Weapon::swordmodel.load("Models/Sword.solid", 1); + Weapon::swordmodel.load("Models/Sword.solid"); Weapon::swordmodel.Scale(.001, .001, .001); Weapon::swordmodel.Rotate(90, 0, 0); Weapon::swordmodel.Rotate(0, 90, 0); @@ -720,7 +686,7 @@ void Game::LoadStuff() Weapon::swordmodel.flat = 1; Weapon::swordmodel.CalculateNormals(1); - Weapon::staffmodel.load("Models/Staff.solid", 1); + Weapon::staffmodel.load("Models/Staff.solid"); Weapon::staffmodel.Scale(.005, .005, .005); Weapon::staffmodel.Rotate(90, 0, 0); Weapon::staffmodel.Rotate(0, 90, 0); @@ -757,14 +723,6 @@ void Game::LoadStuff() viewer = 0; - - if (detail) - kTextureSize = 1024; - if (detail == 1) - kTextureSize = 512; - if (detail == 0) - kTextureSize = 256; - //Set up distant light light.color[0] = .95; light.color[1] = .95; @@ -791,7 +749,7 @@ void Game::LoadStuff() viewer.x = terrain.size / 2 * terrain.scale; viewer.z = terrain.size / 2 * terrain.scale; - hawk.load("Models/Hawk.solid", 1); + hawk.load("Models/Hawk.solid"); hawk.Scale(.03, .03, .03); hawk.Rotate(90, 1, 1); hawk.CalculateNormals(0); @@ -800,51 +758,49 @@ void Game::LoadStuff() hawkcoords.z = terrain.size / 2 * terrain.scale - 5 - 7; hawkcoords.y = terrain.getHeight(hawkcoords.x, hawkcoords.z) + 25; - eye.load("Models/Eye.solid", 1); + eye.load("Models/Eye.solid"); eye.Scale(.03, .03, .03); eye.CalculateNormals(0); - cornea.load("Models/Cornea.solid", 1); + cornea.load("Models/Cornea.solid"); cornea.Scale(.03, .03, .03); cornea.CalculateNormals(0); - iris.load("Models/Iris.solid", 1); + iris.load("Models/Iris.solid"); iris.Scale(.03, .03, .03); iris.CalculateNormals(0); - LoadSave("Textures/BloodFur.png", 0, 1, &bloodText[0], 0); - LoadSave("Textures/WolfBloodFur.png", 0, 1, &wolfbloodText[0], 0); + LoadSave("Textures/BloodFur.png", &bloodText[0]); + LoadSave("Textures/WolfBloodFur.png", &wolfbloodText[0]); oldenvironment = -4; gameon = 1; mainmenu = 0; - firstload = 0; - //Fix knife stab, too lazy to do it manually XYZ moveamount; moveamount = 0; moveamount.z = 2; // FIXME - Why this uses skeleton.joints.size() and not Animation::numjoints? (are they equal?) // It seems skeleton.joints.size() is 0 at this point, so this is useless. - for (i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { - for (j = 0; j < Animation::animations[knifesneakattackanim].frames.size(); j++) { + for (unsigned i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { + for (unsigned j = 0; j < Animation::animations[knifesneakattackanim].frames.size(); j++) { Animation::animations[knifesneakattackanim].frames[j].joints[i].position += moveamount; } } LoadingScreen(); - for (i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { - for (j = 0; j < Animation::animations[knifesneakattackedanim].frames.size(); j++) { + for (unsigned i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { + for (unsigned j = 0; j < Animation::animations[knifesneakattackedanim].frames.size(); j++) { Animation::animations[knifesneakattackedanim].frames[j].joints[i].position += moveamount; } } LoadingScreen(); - for (i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { + for (unsigned i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { Animation::animations[dead1anim].frames[1].joints[i].position = Animation::animations[dead1anim].frames[0].joints[i].position; Animation::animations[dead2anim].frames[1].joints[i].position = Animation::animations[dead2anim].frames[0].joints[i].position; Animation::animations[dead3anim].frames[1].joints[i].position = Animation::animations[dead3anim].frames[0].joints[i].position; @@ -860,29 +816,24 @@ void Game::LoadStuff() Animation::animations[dead3anim].frames[1].speed = 0.001; Animation::animations[dead4anim].frames[1].speed = 0.001; - for (i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { - for (j = 0; j < Animation::animations[swordsneakattackanim].frames.size(); j++) { + for (unsigned i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { + for (unsigned j = 0; j < Animation::animations[swordsneakattackanim].frames.size(); j++) { Animation::animations[swordsneakattackanim].frames[j].joints[i].position += moveamount; } } LoadingScreen(); - for (j = 0; j < Animation::animations[swordsneakattackanim].frames.size(); j++) { + for (unsigned j = 0; j < Animation::animations[swordsneakattackanim].frames.size(); j++) { Animation::animations[swordsneakattackanim].frames[j].weapontarget += moveamount; } LoadingScreen(); - for (i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { - for (j = 0; j < Animation::animations[swordsneakattackedanim].frames.size(); j++) { + for (unsigned i = 0; i < Person::players[0]->skeleton.joints.size(); i++) { + for (unsigned j = 0; j < Animation::animations[swordsneakattackedanim].frames.size(); j++) { Animation::animations[swordsneakattackedanim].frames[j].joints[i].position += moveamount; } } - LoadingScreen(); - temptexdetail = texdetail; - texdetail = 1; - texdetail = temptexdetail; - LoadingScreen(); if (!screentexture) { @@ -897,6 +848,7 @@ void Game::LoadStuff() loading = 0; changedelay = 1; - visibleloading = 0; + visibleloading = false; + firstLoadDone = true; }