X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameInitDispose.cpp;h=66237151fedea6d9ef029c3e3aedd0c295460fa3;hb=5ab55c3eea543a30fe979f623d4a984935e2a0fb;hp=73673ee9678e0c7cb11ebb194ed19b0d8784343c;hpb=26f2bbdbce0b99c24adb84dd3d5b6a13fe7703e0;p=lugaru.git diff --git a/Source/GameInitDispose.cpp b/Source/GameInitDispose.cpp index 73673ee..6623715 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. @@ -68,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. } @@ -105,15 +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; + delete skybox; + delete text; + delete textmono; glDeleteTextures(1, &screentexture); glDeleteTextures(1, &screentexture2); @@ -121,9 +121,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; @@ -152,8 +150,6 @@ void LoadSave(const std::string& fileName, GLuint *textureid, bool mipmap, GLuby } } - - //***************> ResizeGLScene() <******/ GLvoid Game::ReSizeGLScene(float fov, float pnear) { @@ -179,20 +175,23 @@ void Game::LoadingScreen() } 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 @@ -201,19 +200,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); @@ -265,8 +264,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); @@ -305,8 +304,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); @@ -346,13 +345,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); @@ -403,8 +405,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); @@ -538,6 +540,8 @@ void Game::InitGame() texdetail = 1; text->LoadFontTexture("Textures/Font.png"); text->BuildFont(); + textmono->LoadFontTexture("Textures/FontMono.png"); + textmono->BuildFont(); texdetail = temptexdetail; FadeLoadingScreen(10); @@ -554,39 +558,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); @@ -595,8 +574,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); @@ -609,12 +589,11 @@ void Game::InitGame() FadeLoadingScreen(95); - gameon = 0; mainmenu = 1; stillloading = 0; - firstload = 0; + firstLoadDone = false; newdetail = detail; newscreenwidth = screenwidth; @@ -623,31 +602,33 @@ void Game::InitGame() Menu::Load(); Animation::loadAll(); -} + PersonType::Load(); +} 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,6 +645,8 @@ void Game::LoadStuff() texdetail = 1; text->LoadFontTexture("Textures/Font.png"); text->BuildFont(); + textmono->LoadFontTexture("Textures/FontMono.png"); + textmono->BuildFont(); texdetail = temptexdetail; viewdistdetail = 2; @@ -682,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); @@ -760,7 +710,6 @@ void Game::LoadStuff() SetUpLighting(); - fadestart = .6; gravity = -10; @@ -770,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); @@ -779,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/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; @@ -872,5 +819,5 @@ void Game::LoadStuff() changedelay = 1; visibleloading = false; + firstLoadDone = true; } -