X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameTick.cpp;h=df0bc200ee2a9d762ea0bd38adc287538ebb7eb7;hb=4f4771bb67958d2e9180ba24d422141b9069e363;hp=90786725e4e6c489dcf197fbb1d87a41a9e02bd7;hpb=a85869d3f9d2e627781068acc2595e8fa8a6aad9;p=lugaru.git diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index 9078672..df0bc20 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -827,7 +827,7 @@ void Game::Loadlevel(const std::string& name) hostiletime = 0; won = 0; - animation[bounceidleanim].Load((char *)"Idle", middleheight, neutral); + animation[bounceidleanim].Load("Idle", middleheight, neutral); Dialog::dialogs.clear(); @@ -939,10 +939,12 @@ void Game::Loadlevel(const std::string& name) skyboxlightg = skyboxg; skyboxlightb = skyboxb; } - if (!stealthloading) - funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &Person::players[0]->coords.x, &Person::players[0]->coords.y, &Person::players[0]->coords.z, &Person::players[0]->yaw, &Person::players[0]->targetyaw, &Person::players[0]->num_weapons); - if (stealthloading) + /* TODO - This should be done in an other way so that we can rebuild main player as well (so coords would need to be copied from old ones after rebuilding) */ + if (stealthloading) { funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &lamefloat, &lamefloat, &lamefloat, &lamefloat, &lamefloat, &Person::players[0]->num_weapons); + } else { + funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &Person::players[0]->coords.x, &Person::players[0]->coords.y, &Person::players[0]->coords.z, &Person::players[0]->yaw, &Person::players[0]->targetyaw, &Person::players[0]->num_weapons); + } if (Person::players[0]->num_weapons > 0 && Person::players[0]->num_weapons < 5) for (int j = 0; j < Person::players[0]->num_weapons; j++) { Person::players[0]->weaponids[j] = weapons.size(); @@ -1093,92 +1095,63 @@ void Game::Loadlevel(const std::string& name) for (unsigned i = 0; i < Person::players.size(); i++) { if (visibleloading) LoadingScreen(); - Person::players[i]->burnt = 0; - Person::players[i]->bled = 0; - Person::players[i]->onfire = 0; - if (i == 0 || Person::players[i]->scale < 0) + if (i == 0) { + Person::players[i]->burnt = 0; + Person::players[i]->bled = 0; + Person::players[i]->onfire = 0; Person::players[i]->scale = .2; - Person::players[i]->skeleton.free = 0; - Person::players[i]->skeleton.id = i; - if (i == 0 && mapvers < 9) - Person::players[i]->creature = rabbittype; - if (Person::players[i]->creature != wolftype) { - Person::players[i]->skeleton.Load( - (char *)"Skeleton/BasicFigure", - (char *)"Skeleton/BasicFigureLow", - (char *)"Skeleton/RabbitBelt", - (char *)"Models/Body.solid", - (char *)"Models/Body2.solid", - (char *)"Models/Body3.solid", - (char *)"Models/Body4.solid", - (char *)"Models/Body5.solid", - (char *)"Models/Body6.solid", - (char *)"Models/Body7.solid", - (char *)"Models/BodyLow.solid", - (char *)"Models/Belt.solid", 0); - } else { - Person::players[i]->skeleton.Load( - (char *)"Skeleton/BasicFigureWolf", - (char *)"Skeleton/BasicFigureWolfLow", - (char *)"Skeleton/RabbitBelt", - (char *)"Models/Wolf.solid", - (char *)"Models/Wolf2.solid", - (char *)"Models/Wolf3.solid", - (char *)"Models/Wolf4.solid", - (char *)"Models/Wolf5.solid", - (char *)"Models/Wolf6.solid", - (char *)"Models/Wolf7.solid", - (char *)"Models/WolfLow.solid", - (char *)"Models/Belt.solid", 0); + if (mapvers < 9) { + Person::players[i]->creature = rabbittype; + } } + Person::players[i]->skeleton.free = 0; - Person::players[i]->skeleton.drawmodel.textureptr.load(creatureskin[Person::players[i]->creature][Person::players[i]->whichskin], 1, &Person::players[i]->skeleton.skinText[0], &Person::players[i]->skeleton.skinsize); + Person::players[i]->skeletonLoad(); Person::players[i]->addClothes(); - Person::players[i]->animCurrent = bounceidleanim; - Person::players[i]->animTarget = bounceidleanim; - Person::players[i]->frameCurrent = 0; - Person::players[i]->frameTarget = 1; - Person::players[i]->target = 0; + if (i == 0) { + Person::players[i]->animCurrent = bounceidleanim; + Person::players[i]->animTarget = bounceidleanim; + Person::players[i]->frameCurrent = 0; + Person::players[i]->frameTarget = 1; + Person::players[i]->target = 0; + } Person::players[i]->speed = 1 + (float)(Random() % 100) / 1000; if (difficulty == 0) Person::players[i]->speed -= .2; if (difficulty == 1) Person::players[i]->speed -= .1; - Person::players[i]->velocity = 0; - Person::players[i]->oldcoords = Person::players[i]->coords; - Person::players[i]->realoldcoords = Person::players[i]->coords; - - Person::players[i]->id = i; - Person::players[i]->skeleton.id = i; - Person::players[i]->updatedelay = 0; - Person::players[i]->normalsupdatedelay = 0; + if (i == 0) { + Person::players[i]->velocity = 0; + Person::players[i]->oldcoords = Person::players[i]->coords; + Person::players[i]->realoldcoords = Person::players[i]->coords; - Person::players[i]->aitype = passivetype; + Person::players[i]->id = i; + Person::players[i]->updatedelay = 0; + Person::players[i]->normalsupdatedelay = 0; - if (i == 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]->headless = 0; - Person::players[i]->currentoffset = 0; - Person::players[i]->targetoffset = 0; - - Person::players[i]->damagetolerance = 200; - - if (Person::players[i]->creature == wolftype) { - if (i == 0 || Person::players[i]->scale < 0) + Person::players[i]->headless = 0; + Person::players[i]->currentoffset = 0; + Person::players[i]->targetoffset = 0; + if (Person::players[i]->creature == wolftype) { Person::players[i]->scale = .23; - Person::players[i]->damagetolerance = 300; + Person::players[i]->damagetolerance = 300; + } else { + Person::players[i]->damagetolerance = 200; + } } + if (visibleloading) LoadingScreen(); + if (cellophane) { Person::players[i]->proportionhead.z = 0; Person::players[i]->proportionbody.z = 0; @@ -1186,43 +1159,44 @@ void Game::Loadlevel(const std::string& name) Person::players[i]->proportionlegs.z = 0; } - Person::players[i]->tempanimation.Load((char *)"Tempanim", 0, 0); - - Person::players[i]->headmorphness = 0; - Person::players[i]->targetheadmorphness = 1; - Person::players[i]->headmorphstart = 0; - Person::players[i]->headmorphend = 0; - - Person::players[i]->pausetime = 0; - - Person::players[i]->dead = 0; - Person::players[i]->jumppower = 5; - Person::players[i]->damage = 0; - Person::players[i]->permanentdamage = 0; - Person::players[i]->superpermanentdamage = 0; - - Person::players[i]->forwardkeydown = 0; - Person::players[i]->leftkeydown = 0; - Person::players[i]->backkeydown = 0; - Person::players[i]->rightkeydown = 0; - Person::players[i]->jumpkeydown = 0; - Person::players[i]->crouchkeydown = 0; - Person::players[i]->throwkeydown = 0; - - Person::players[i]->collided = -10; - Person::players[i]->loaded = 1; - Person::players[i]->bloodloss = 0; - Person::players[i]->weaponactive = -1; - Person::players[i]->weaponstuck = -1; - Person::players[i]->bleeding = 0; - Person::players[i]->deathbleeding = 0; - Person::players[i]->stunned = 0; - Person::players[i]->hasvictim = 0; - Person::players[i]->wentforweapon = 0; + Person::players[i]->tempanimation.Load("Tempanim", 0, 0); + + if (i == 0) { + Person::players[i]->headmorphness = 0; + Person::players[i]->targetheadmorphness = 1; + Person::players[i]->headmorphstart = 0; + Person::players[i]->headmorphend = 0; + + Person::players[i]->pausetime = 0; + + Person::players[i]->dead = 0; + Person::players[i]->jumppower = 5; + Person::players[i]->damage = 0; + Person::players[i]->permanentdamage = 0; + Person::players[i]->superpermanentdamage = 0; + + Person::players[i]->forwardkeydown = 0; + Person::players[i]->leftkeydown = 0; + Person::players[i]->backkeydown = 0; + Person::players[i]->rightkeydown = 0; + Person::players[i]->jumpkeydown = 0; + Person::players[i]->crouchkeydown = 0; + Person::players[i]->throwkeydown = 0; + + Person::players[i]->collided = -10; + Person::players[i]->loaded = 1; + Person::players[i]->bloodloss = 0; + Person::players[i]->weaponactive = -1; + Person::players[i]->weaponstuck = -1; + Person::players[i]->bleeding = 0; + Person::players[i]->deathbleeding = 0; + Person::players[i]->stunned = 0; + Person::players[i]->hasvictim = 0; + Person::players[i]->wentforweapon = 0; + } } Person::players[0]->aitype = playercontrolled; - Person::players[0]->weaponactive = -1; if (difficulty == 1) { Person::players[0]->power = 1 / .9; @@ -1900,11 +1874,9 @@ void doDebugKeys() if (Person::players[closest]->creature == rabbittype) { - Person::players[closest]->skeleton.id = closest; - Person::players[closest]->skeleton.Load((char *)"Skeleton/BasicFigureWolf", (char *)"Skeleton/BasicFigureWolfLow", (char *)"Skeleton/RabbitBelt", (char *)"Models/Wolf.solid", (char *)"Models/Wolf2.solid", (char *)"Models/Wolf3.solid", (char *)"Models/Wolf4.solid", (char *)"Models/Wolf5.solid", (char *)"Models/Wolf6.solid", (char *)"Models/Wolf7.solid", (char *)"Models/WolfLow.solid", (char *)"Models/Belt.solid", 0); - Person::players[closest]->skeleton.drawmodel.textureptr.load("Textures/Wolf.jpg", 1, &Person::players[closest]->skeleton.skinText[0], &Person::players[closest]->skeleton.skinsize); - Person::players[closest]->whichskin = 0; 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; @@ -1915,11 +1887,9 @@ void doDebugKeys() Person::players[closest]->damagetolerance = 300; } else { - Person::players[closest]->skeleton.id = closest; - Person::players[closest]->skeleton.Load((char *)"Skeleton/BasicFigure", (char *)"Skeleton/BasicFigureLow", (char *)"Skeleton/RabbitBelt", (char *)"Models/Body.solid", (char *)"Models/Body2.solid", (char *)"Models/Body3.solid", (char *)"Models/Body4.solid", (char *)"Models/Body5.solid", (char *)"Models/Body6.solid", (char *)"Models/Body7.solid", (char *)"Models/BodyLow.solid", (char *)"Models/Belt.solid", 1); - Person::players[closest]->skeleton.drawmodel.textureptr.load("Textures/Fur3.jpg", 1, &Person::players[closest]->skeleton.skinText[0], &Person::players[closest]->skeleton.skinsize); - Person::players[closest]->whichskin = 0; 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; @@ -2205,49 +2175,33 @@ void doDebugKeys() if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) { Person::players.push_back(shared_ptr(new Person())); - Person::players.back()->scale = .2 * 5 * Person::players[0]->scale; + Person::players.back()->id = Person::players.size()-1; + + Person::players.back()->scale = Person::players[0]->scale; Person::players.back()->creature = rabbittype; Person::players.back()->howactive = editoractive; - Person::players.back()->skeleton.id = Person::players.size()-1; - Person::players.back()->skeleton.Load((char *)"Skeleton/BasicFigure", (char *)"Skeleton/BasicFigureLow", (char *)"Skeleton/RabbitBelt", (char *)"Models/Body.solid", (char *)"Models/Body2.solid", (char *)"Models/Body3.solid", (char *)"Models/Body4.solid", (char *)"Models/Body5.solid", (char *)"Models/Body6.solid", (char *)"Models/Body7.solid", (char *)"Models/BodyLow.solid", (char *)"Models/Belt.solid", 1); int k = abs(Random() % 2) + 1; if (k == 0) { - Person::players.back()->skeleton.drawmodel.textureptr.load("Textures/Fur3.jpg", 1, &Person::players.back()->skeleton.skinText[0], &Person::players.back()->skeleton.skinsize); Person::players.back()->whichskin = 0; } else if (k == 1) { - Person::players.back()->skeleton.drawmodel.textureptr.load("Textures/Fur.jpg", 1, &Person::players.back()->skeleton.skinText[0], &Person::players.back()->skeleton.skinsize); Person::players.back()->whichskin = 1; } else { - Person::players.back()->skeleton.drawmodel.textureptr.load("Textures/Fur2.jpg", 1, &Person::players.back()->skeleton.skinText[0], &Person::players.back()->skeleton.skinsize); Person::players.back()->whichskin = 2; } + Person::players.back()->skeletonLoad(true); + Person::players.back()->skeleton.drawmodelclothes.textureptr.load("Textures/Belt.png", 1); - Person::players.back()->power = 1; - Person::players.back()->speedmult = 1; - Person::players.back()->animCurrent = bounceidleanim; - Person::players.back()->animTarget = bounceidleanim; - Person::players.back()->frameCurrent = 0; - Person::players.back()->frameTarget = 1; - Person::players.back()->target = 0; - Person::players.back()->bled = 0; Person::players.back()->speed = 1 + (float)(Random() % 100) / 1000; Person::players.back()->targetyaw = Person::players[0]->targetyaw; Person::players.back()->yaw = Person::players[0]->yaw; - Person::players.back()->velocity = 0; Person::players.back()->coords = Person::players[0]->coords; Person::players.back()->oldcoords = Person::players.back()->coords; Person::players.back()->realoldcoords = Person::players.back()->coords; - Person::players.back()->id = Person::players.size()-1; - Person::players.back()->updatedelay = 0; - Person::players.back()->normalsupdatedelay = 0; - - Person::players.back()->aitype = passivetype; - if (Person::players[0]->creature == wolftype) { headprop = Person::players[0]->proportionhead.x / 1.1; bodyprop = Person::players[0]->proportionbody.x / 1.1; @@ -2277,9 +2231,6 @@ void doDebugKeys() Person::players.back()->proportionlegs.y = 1.05 * legprop; } - Person::players.back()->headless = 0; - Person::players.back()->onfire = 0; - if (cellophane) { Person::players.back()->proportionhead.z = 0; Person::players.back()->proportionbody.z = 0; @@ -2287,7 +2238,7 @@ void doDebugKeys() Person::players.back()->proportionlegs.z = 0; } - Person::players.back()->tempanimation.Load((char *)"Tempanim", 0, 0); + Person::players.back()->tempanimation.Load("Tempanim", 0, 0); Person::players.back()->damagetolerance = 200; @@ -2315,20 +2266,7 @@ void doDebugKeys() Person::players.back()->power = Person::players[0]->power; Person::players.back()->speedmult = Person::players[0]->speedmult; - Person::players.back()->damage = 0; - Person::players.back()->permanentdamage = 0; - Person::players.back()->superpermanentdamage = 0; - Person::players.back()->deathbleeding = 0; - Person::players.back()->bleeding = 0; - Person::players.back()->numwaypoints = 0; - Person::players.back()->waypoint = 0; - Person::players.back()->weaponstuck = -1; - Person::players.back()->weaponactive = -1; - Person::players.back()->num_weapons = 0; - Person::players.back()->bloodloss = 0; - Person::players.back()->dead = 0; - - Person::players.back()->loaded = 1; + Person::players.back()->loaded = true; } if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) { @@ -4706,7 +4644,7 @@ void updateSettingsMenu() void updateStereoConfigMenu() { char sbuf[256]; - sprintf(sbuf, "Stereo mode: %s", StereoModeName(newstereomode)); + sprintf(sbuf, "Stereo mode: %s", StereoModeName(newstereomode).c_str()); Menu::setText(0, sbuf); sprintf(sbuf, "Stereo separation: %.3f", stereoseparation); Menu::setText(1, sbuf); @@ -5214,7 +5152,7 @@ void MenuTick() if (selected == 0) { newstereomode = (StereoMode)(newstereomode + 1); while (!CanInitStereo(newstereomode)) { - printf("Failed to initialize mode %s (%i)\n", StereoModeName(newstereomode), newstereomode); + printf("Failed to initialize mode %s (%i)\n", StereoModeName(newstereomode).c_str(), newstereomode); newstereomode = (StereoMode)(newstereomode + 1); if (newstereomode >= stereoCount) newstereomode = stereoNone;