X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameInitDispose.cpp;h=a1e96031da4ccf4d13245e7a971ca721384b8097;hb=77f22d0571ddca7bbfd1d1f621d61785d375c889;hp=37593a1ab524adfe2eae7ac6ec6ef4bafdf4df37;hpb=cd451341c5ee01374268559885871ca9d454cbd0;p=lugaru.git diff --git a/Source/GameInitDispose.cpp b/Source/GameInitDispose.cpp index 37593a1..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. @@ -40,8 +40,6 @@ extern float realtexdetail; extern float volume; 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; @@ -68,7 +66,7 @@ extern float accountcampaigntime[10]; extern int accountcampaignchoicesmade[10]; extern int accountcampaignchoices[10][5000]; -void LOG(const std::string &, ...) +void LOG(const std::string&, ...) { // !!! FIXME: write me. } @@ -105,15 +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; + delete skybox; + delete text; + delete textmono; glDeleteTextures(1, &screentexture); glDeleteTextures(1, &screentexture2); @@ -121,9 +119,7 @@ void Game::deleteGame() Dispose(); } - - -void LoadSave(const std::string& fileName, GLubyte *array) +void LoadSave(const std::string& fileName, GLubyte* array) { LOGFUNC; @@ -152,8 +148,6 @@ void LoadSave(const std::string& fileName, GLubyte *array) } } - - //***************> ResizeGLScene() <******/ GLvoid Game::ReSizeGLScene(float fov, float pnear) { @@ -179,20 +173,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 +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); @@ -265,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); @@ -305,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); @@ -346,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); @@ -403,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); @@ -538,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); @@ -559,8 +561,9 @@ void Game::InitGame() OPENAL_SetSFXMasterVolume((int)(volume * 255)); loadAllSounds(); - if (musictoggle) + if (musictoggle) { emit_stream_np(stream_menutheme); + } cursortexture.load("Textures/Cursor.png", 0); @@ -569,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); @@ -583,12 +587,11 @@ void Game::InitGame() FadeLoadingScreen(95); - gameon = 0; mainmenu = 1; stillloading = 0; - firstload = 0; + firstLoadDone = false; newdetail = detail; newscreenwidth = screenwidth; @@ -597,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; @@ -638,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; @@ -656,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"); - 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"); - 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"); - 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); @@ -734,7 +710,6 @@ void Game::LoadStuff() SetUpLighting(); - fadestart = .6; gravity = -10; @@ -765,16 +740,14 @@ void Game::LoadStuff() iris.Scale(.03, .03, .03); iris.CalculateNormals(0); - LoadSave("Textures/BloodFur.png", &bloodText[0]); - LoadSave("Textures/WolfBloodFur.png", &wolfbloodText[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; @@ -846,5 +819,5 @@ void Game::LoadStuff() changedelay = 1; visibleloading = false; + firstLoadDone = true; } -