X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameInitDispose.cpp;h=a1e96031da4ccf4d13245e7a971ca721384b8097;hb=77f22d0571ddca7bbfd1d1f621d61785d375c889;hp=fefba877857be0d8a1c4abc12158fcb1aa3ac623;hpb=5dfd07829a5eecc87d100dd8825a81eafbaa86be;p=lugaru.git diff --git a/Source/GameInitDispose.cpp b/Source/GameInitDispose.cpp index fefba87..a1e9603 100644 --- a/Source/GameInitDispose.cpp +++ b/Source/GameInitDispose.cpp @@ -1,6 +1,6 @@ /* Copyright (C) 2003, 2010 - Wolfire Games -Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file) +Copyright (C) 2010-2017 - Lugaru contributors (see AUTHORS file) This file is part of Lugaru. @@ -38,11 +38,8 @@ 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]; -extern GLubyte wolfbloodText[512 * 512 * 3]; extern bool ismotionblur; extern bool trilinear; extern bool musictoggle; @@ -69,7 +66,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 +80,7 @@ void Dispose() Game::endgame = 0; } - Account::saveFile(Folders::getUserDataPath()+"/users"); + Account::saveFile(Folders::getUserSavePath()); //textures.clear(); @@ -106,26 +103,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); @@ -133,9 +119,7 @@ void Game::deleteGame() Dispose(); } - - -void LoadSave(const std::string& fileName, GLuint *textureid, bool mipmap, GLubyte *array, int *skinsize) +void LoadSave(const std::string& fileName, GLubyte* array) { LOGFUNC; @@ -164,8 +148,6 @@ void LoadSave(const std::string& fileName, GLuint *textureid, bool mipmap, GLuby } } - - //***************> ResizeGLScene() <******/ GLvoid Game::ReSizeGLScene(float fov, float pnear) { @@ -186,21 +168,28 @@ GLvoid Game::ReSizeGLScene(float fov, float pnear) void Game::LoadingScreen() { + if (!visibleloading) { + return; + } + static float loadprogress; - static AbsoluteTime frametime = {0, 0}; - AbsoluteTime currTime = UpTime (); - double deltaTime = (float) AbsoluteDeltaToDuration (currTime, frametime); + static AbsoluteTime frametime = { 0, 0 }; + AbsoluteTime currTime = UpTime(); + double deltaTime = (float)AbsoluteDeltaToDuration(currTime, frametime); - if (0 > deltaTime) // if negative microseconds + if (0 > deltaTime) { // if negative microseconds deltaTime /= -1000000.0; - else // else milliseconds + } else { // else milliseconds deltaTime /= 1000.0; + } multiplier = deltaTime; - if (multiplier < .001) + if (multiplier < .001) { multiplier = .001; - if (multiplier > 10) + } + if (multiplier > 10) { multiplier = 10; + } if (multiplier > .05) { frametime = currTime; // reset for next time interval @@ -209,19 +198,19 @@ void Game::LoadingScreen() glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - loadtime += multiplier * 4; loadprogress = loadtime; - if (loadprogress > 100) + if (loadprogress > 100) { loadprogress = 100; + } //Background glEnable(GL_TEXTURE_2D); loadscreentexture.bind(); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); glDisable(GL_LIGHTING); @@ -273,8 +262,8 @@ void Game::LoadingScreen() glEnable(GL_TEXTURE_2D); loadscreentexture.bind(); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); glDisable(GL_LIGHTING); @@ -313,8 +302,8 @@ void Game::LoadingScreen() glEnable(GL_TEXTURE_2D); loadscreentexture.bind(); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); glDisable(GL_LIGHTING); @@ -354,13 +343,16 @@ void Game::LoadingScreen() //Text if (flashamount > 0) { - if (flashamount > 1) + if (flashamount > 1) { flashamount = 1; - if (flashdelay <= 0) + } + if (flashdelay <= 0) { flashamount -= multiplier; + } flashdelay--; - if (flashamount < 0) + if (flashamount < 0) { flashamount = 0; + } glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); glDisable(GL_LIGHTING); @@ -411,8 +403,8 @@ void FadeLoadingScreen(float howmuch) //Background glDisable(GL_TEXTURE_2D); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); glDisable(GL_LIGHTING); @@ -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,39 +556,14 @@ 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(); - if (musictoggle) + if (musictoggle) { emit_stream_np(stream_menutheme); + } cursortexture.load("Textures/Cursor.png", 0); @@ -603,8 +572,9 @@ void Game::InitGame() Maparrowtexture.load("Textures/MapArrow.png", 0); temptexdetail = texdetail; - if (texdetail > 2) + if (texdetail > 2) { texdetail = 2; + } Mainmenuitems[0].load("Textures/Lugaru.png", 0); Mainmenuitems[1].load("Textures/NewGame.png", 0); Mainmenuitems[2].load("Textures/Options.png", 0); @@ -617,12 +587,11 @@ void Game::InitGame() FadeLoadingScreen(95); - gameon = 0; mainmenu = 1; stillloading = 0; - firstload = 0; + firstLoadDone = false; newdetail = detail; newscreenwidth = screenwidth; @@ -631,31 +600,35 @@ void Game::InitGame() Menu::Load(); Animation::loadAll(); -} + PersonType::Load(); + + Person::players.emplace_back(new Person()); +} void Game::LoadScreenTexture() { - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - - if (!Game::screentexture) - glGenTextures( 1, &Game::screentexture ); - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + 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, Game::screentexture); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + 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.hpp +/* Loads models and textures which only needs to be loaded once */ void Game::LoadStuff() { - static float temptexdetail; - static float viewdistdetail; + float temptexdetail; + float viewdistdetail; float megascale = 1; LOGFUNC; @@ -664,18 +637,16 @@ void Game::LoadStuff() stillloading = 1; - for (auto p:Person::players) { - p->skeleton.drawmodel.textureptr.destroy(); - } - - 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; @@ -694,50 +665,17 @@ void Game::LoadStuff() realtexdetail = texdetail; - LOG("Loading weapon data..."); - - Weapon::knifetextureptr.load("Textures/Knife.png", 0); - Weapon::bloodknifetextureptr.load("Textures/BloodKnife.png", 0); - Weapon::lightbloodknifetextureptr.load("Textures/BloodKnifeLight.png", 0); - Weapon::swordtextureptr.load("Textures/Sword.jpg", 1); - Weapon::bloodswordtextureptr.load("Textures/SwordBlood.jpg", 1); - Weapon::lightbloodswordtextureptr.load("Textures/SwordBloodLight.jpg", 1); - Weapon::stafftextureptr.load("Textures/Staff.jpg", 1); - - Weapon::throwingknifemodel.load("Models/ThrowingKnife.solid", 1); - 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.Scale(.001, .001, .001); - Weapon::swordmodel.Rotate(90, 0, 0); - Weapon::swordmodel.Rotate(0, 90, 0); - Weapon::swordmodel.Rotate(0, 0, 90); - Weapon::swordmodel.flat = 1; - Weapon::swordmodel.CalculateNormals(1); - - Weapon::staffmodel.load("Models/Staff.solid", 1); - Weapon::staffmodel.Scale(.005, .005, .005); - Weapon::staffmodel.Rotate(90, 0, 0); - Weapon::staffmodel.Rotate(0, 90, 0); - Weapon::staffmodel.Rotate(0, 0, 90); - Weapon::staffmodel.flat = 1; - Weapon::staffmodel.CalculateNormals(1); + Weapon::Load(); terrain.shadowtexture.load("Textures/Shadow.png", 0); terrain.bloodtexture.load("Textures/Blood.png", 0); terrain.breaktexture.load("Textures/Break.png", 0); terrain.bloodtexture2.load("Textures/Blood.png", 0); - terrain.footprinttexture.load("Textures/Footprint.png", 0); terrain.bodyprinttexture.load("Textures/Bodyprint.png", 0); hawktexture.load("Textures/Hawk.png", 0); - Sprite::cloudtexture.load("Textures/Cloud.png", 1); Sprite::cloudimpacttexture.load("Textures/CloudImpact.png", 1); Sprite::bloodtexture.load("Textures/BloodParticle.png", 1); @@ -772,7 +710,6 @@ void Game::LoadStuff() SetUpLighting(); - fadestart = .6; gravity = -10; @@ -782,7 +719,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); @@ -791,28 +728,26 @@ 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/WolfBloodFur.png", &PersonType::types[wolftype].bloodText[0]); + LoadSave("Textures/BloodFur.png", &PersonType::types[rabbittype].bloodText[0]); oldenvironment = -4; gameon = 1; mainmenu = 0; - firstload = 0; - //Fix knife stab, too lazy to do it manually XYZ moveamount; moveamount = 0; @@ -869,11 +804,6 @@ void Game::LoadStuff() } } - LoadingScreen(); - temptexdetail = texdetail; - texdetail = 1; - texdetail = temptexdetail; - LoadingScreen(); if (!screentexture) { @@ -888,6 +818,6 @@ void Game::LoadStuff() loading = 0; changedelay = 1; - visibleloading = 0; + visibleloading = false; + firstLoadDone = true; } -