X-Git-Url: https://git.jsancho.org/?p=lugaru.git;a=blobdiff_plain;f=Source%2FGameTick.cpp;h=92a36c992b99881b728470993711c5eb629f69c5;hp=827f82b34957ea793ec5da6b8f02253087a9c7ce;hb=ce51a88a16d2e7af222929546d250eba4acb299d;hpb=88961157fe4a88fb10320b4ce211ca697f639e7e diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index 827f82b..92a36c9 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -148,27 +148,6 @@ float musicvolume[4] = {}; float oldmusicvolume[4] = {}; int musicselected = 0; -const char* rabbitskin[] = { - "Textures/Fur3.jpg", - "Textures/Fur.jpg", - "Textures/Fur2.jpg", - "Textures/Lynx.jpg", - "Textures/Otter.jpg", - "Textures/Opal.jpg", - "Textures/Sable.jpg", - "Textures/Chocolate.jpg", - "Textures/BW2.jpg", - "Textures/WB2.jpg" -}; - -const char* wolfskin[] = { - "Textures/Wolf.jpg", - "Textures/DarkWolf.jpg", - "Textures/SnowWolf.jpg" -}; - -const char** creatureskin[] = { rabbitskin, wolfskin }; - #define STATIC_ASSERT(x) extern int s_a_dummy[2 * (!!(x)) - 1]; STATIC_ASSERT(rabbittype == 0 && wolftype == 1) @@ -851,11 +830,7 @@ bool Game::LoadLevel(const std::string& name, bool tutorial) Person::players[i]->updatedelay = 0; Person::players[i]->normalsupdatedelay = 0; - Person::players[i]->proportionhead = 1.2; - Person::players[i]->proportionbody = 1.05; - Person::players[i]->proportionarms = 1.00; - Person::players[i]->proportionlegs = 1.1; - Person::players[i]->proportionlegs.y = 1.05; + Person::players[i]->setProportions(1, 1, 1, 1); Person::players[i]->headless = 0; Person::players[i]->currentoffset = 0; Person::players[i]->targetoffset = 0; @@ -869,13 +844,6 @@ bool Game::LoadLevel(const std::string& name, bool tutorial) Game::LoadingScreen(); - if (cellophane) { - Person::players[i]->proportionhead.z = 0; - Person::players[i]->proportionbody.z = 0; - Person::players[i]->proportionarms.z = 0; - Person::players[i]->proportionlegs.z = 0; - } - Person::players[i]->tempanimation = Animation("Tempanim", lowheight, neutral); if (i == 0) { @@ -1056,52 +1024,56 @@ void Game::ProcessInput() /* Devtools */ if (devtools && !mainmenu) { - ProcessDevInput(); + /* Console */ + if (Input::isKeyPressed(consolekey)) { + console = !console; + if (console) { + OPENAL_SetFrequency(OPENAL_ALL); + } else { + freeze = 0; + waiting = false; + } + } + + /* Other devtools, disabled when the console is shown */ + if (!console) { + ProcessDevInput(); + } } } void Game::ProcessDevInput() { - if (!devtools || mainmenu) { + if (!devtools || mainmenu || console) { return; } - float headprop, bodyprop, armprop, legprop; - - /* Console */ - if (Input::isKeyPressed(consolekey)) { - console = !console; - if (console) { - OPENAL_SetFrequency(OPENAL_ALL); - } else { - freeze = 0; - waiting = false; - } - } - if (Input::isKeyDown(SDL_SCANCODE_LALT)) { /* Enable editor */ if (Input::isKeyPressed(SDL_SCANCODE_M) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) { editorenabled = !editorenabled; if (editorenabled) { Person::players[0]->damagetolerance = 100000; + Person::players[0]->damage = 0; + Person::players[0]->permanentdamage = 0; + Person::players[0]->superpermanentdamage = 0; + Person::players[0]->burnt = 0; + Person::players[0]->bloodloss = 0; + Person::players[0]->deathbleeding = 0; } else { Person::players[0]->damagetolerance = 200; } - Person::players[0]->damage = 0; // these lines were in both if and else, but I think they would better fit in the if - Person::players[0]->permanentdamage = 0; - Person::players[0]->superpermanentdamage = 0; - Person::players[0]->bloodloss = 0; - Person::players[0]->deathbleeding = 0; } /* Nullify damage and give 200000 health */ if (Input::isKeyPressed(SDL_SCANCODE_H)) { Person::players[0]->damagetolerance = 200000; Person::players[0]->damage = 0; - Person::players[0]->burnt = 0; Person::players[0]->permanentdamage = 0; Person::players[0]->superpermanentdamage = 0; + Person::players[0]->burnt = 0; + Person::players[0]->bloodloss = 0; + Person::players[0]->deathbleeding = 0; } /* Change environment */ @@ -1226,7 +1198,7 @@ void Game::ProcessDevInput() } Person::players[closest]->skeleton.drawmodel.textureptr.load( - creatureskin[Person::players[closest]->creature][Person::players[closest]->whichskin], 1, + PersonType::types[Person::players[closest]->creature].skins[Person::players[closest]->whichskin], 1, &Person::players[closest]->skeleton.skinText[0], &Person::players[closest]->skeleton.skinsize); } @@ -1240,62 +1212,9 @@ void Game::ProcessDevInput() closest = findClosestPlayer(); } - // FIXME: Those proportions are buggy if (closest >= 0) { - if (Person::players[closest]->creature == wolftype) { - headprop = Person::players[closest]->proportionhead.x / 1.1; - bodyprop = Person::players[closest]->proportionbody.x / 1.1; - armprop = Person::players[closest]->proportionarms.x / 1.1; - legprop = Person::players[closest]->proportionlegs.x / 1.1; - } else { // rabbittype - headprop = Person::players[closest]->proportionhead.x / 1.2; - bodyprop = Person::players[closest]->proportionbody.x / 1.05; - armprop = Person::players[closest]->proportionarms.x / 1.00; - legprop = Person::players[closest]->proportionlegs.x / 1.1; - } - - if (Person::players[closest]->creature == rabbittype) { - Person::players[closest]->creature = wolftype; - Person::players[closest]->whichskin = 0; - Person::players[closest]->skeletonLoad(); - - Person::players[closest]->proportionhead = 1.1; - Person::players[closest]->proportionbody = 1.1; - Person::players[closest]->proportionarms = 1.1; - Person::players[closest]->proportionlegs = 1.1; - Person::players[closest]->proportionlegs.y = 1.1; - Person::players[closest]->scale = .23 * 5 * Person::players[0]->scale; - - Person::players[closest]->damagetolerance = 300; - } else { - Person::players[closest]->creature = rabbittype; - Person::players[closest]->whichskin = 0; - Person::players[closest]->skeletonLoad(true); - - Person::players[closest]->proportionhead = 1.2; - Person::players[closest]->proportionbody = 1.05; - Person::players[closest]->proportionarms = 1.00; - Person::players[closest]->proportionlegs = 1.1; - Person::players[closest]->proportionlegs.y = 1.05; - Person::players[closest]->scale = .2 * 5 * Person::players[0]->scale; - - Person::players[closest]->damagetolerance = 200; - } - - if (Person::players[closest]->creature == wolftype) { - Person::players[closest]->proportionhead = 1.1 * headprop; - Person::players[closest]->proportionbody = 1.1 * bodyprop; - Person::players[closest]->proportionarms = 1.1 * armprop; - Person::players[closest]->proportionlegs = 1.1 * legprop; - } - - if (Person::players[closest]->creature == rabbittype) { - Person::players[closest]->proportionhead = 1.2 * headprop; - Person::players[closest]->proportionbody = 1.05 * bodyprop; - Person::players[closest]->proportionarms = 1.00 * armprop; - Person::players[closest]->proportionlegs = 1.1 * legprop; - Person::players[closest]->proportionlegs.y = 1.05 * legprop; - } + person_type nextType = static_cast((Person::players[closest]->creature + 1) % PersonType::types.size()); + Person::players[closest]->changeCreatureType(nextType); } } @@ -1527,40 +1446,7 @@ void Game::ProcessDevInput() Person::players.back()->oldcoords = Person::players.back()->coords; Person::players.back()->realoldcoords = Person::players.back()->coords; - if (Person::players[0]->creature == wolftype) { - headprop = Person::players[0]->proportionhead.x / 1.1; - bodyprop = Person::players[0]->proportionbody.x / 1.1; - armprop = Person::players[0]->proportionarms.x / 1.1; - legprop = Person::players[0]->proportionlegs.x / 1.1; - } else { - // rabbittype - headprop = Person::players[0]->proportionhead.x / 1.2; - bodyprop = Person::players[0]->proportionbody.x / 1.05; - armprop = Person::players[0]->proportionarms.x / 1.00; - legprop = Person::players[0]->proportionlegs.x / 1.1; - } - - if (Person::players.back()->creature == wolftype) { - Person::players.back()->proportionhead = 1.1 * headprop; - Person::players.back()->proportionbody = 1.1 * bodyprop; - Person::players.back()->proportionarms = 1.1 * armprop; - Person::players.back()->proportionlegs = 1.1 * legprop; - } - - if (Person::players.back()->creature == rabbittype) { - Person::players.back()->proportionhead = 1.2 * headprop; - Person::players.back()->proportionbody = 1.05 * bodyprop; - Person::players.back()->proportionarms = 1.00 * armprop; - Person::players.back()->proportionlegs = 1.1 * legprop; - Person::players.back()->proportionlegs.y = 1.05 * legprop; - } - - if (cellophane) { - Person::players.back()->proportionhead.z = 0; - Person::players.back()->proportionbody.z = 0; - Person::players.back()->proportionarms.z = 0; - Person::players.back()->proportionlegs.z = 0; - } + Person::players.back()->setProportions(1, 1, 1, 1); Person::players.back()->tempanimation = Animation("Tempanim", lowheight, neutral);