X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameTick.cpp;h=85514c32be90e4b7bedfa6af0a74dbc85edf77ad;hb=794f89c25569a9bf50f167689ca0faa3dcffc577;hp=893a50ebb9b6961b6581023b10481ce82794c5bc;hpb=8adc09e313ab2cec1ba28ac9a929b90880d9b2b1;p=lugaru.git diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index 893a50e..85514c3 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -85,8 +85,6 @@ extern bool ambientsound; extern bool mousejump; extern float viewdistance; extern bool freeze; -extern bool keyboardfrozen; -extern bool loadingstuff; extern XYZ windvector; extern bool debugmode; static int leveltheme; @@ -602,18 +600,18 @@ void Setenvironment(int which) if (ambientsound) emit_stream_np(stream_wind); - objects.treetextureptr.load(":Data:Textures:snowtree.png", 0, 1); - objects.bushtextureptr.load(":Data:Textures:bushsnow.png", 0, 1); - objects.rocktextureptr.load(":Data:Textures:bouldersnow.jpg", 1, 0); - objects.boxtextureptr.load(":Data:Textures:snowbox.jpg", 1, 0); + objects.treetextureptr.load(":Data:Textures:snowtree.png", 0); + objects.bushtextureptr.load(":Data:Textures:bushsnow.png", 0); + objects.rocktextureptr.load(":Data:Textures:bouldersnow.jpg", 1); + objects.boxtextureptr.load(":Data:Textures:snowbox.jpg", 1); footstepsound = footstepsn1; footstepsound2 = footstepsn2; footstepsound3 = footstepst1; footstepsound4 = footstepst2; - terraintexture.load(":Data:Textures:snow.jpg", 1, 0); - terraintexture2.load(":Data:Textures:rock.jpg", 1, 0); + terraintexture.load(":Data:Textures:snow.jpg", 1); + terraintexture2.load(":Data:Textures:rock.jpg", 1); temptexdetail = texdetail; @@ -633,10 +631,10 @@ void Setenvironment(int which) } else if (environment == desertenvironment) { windvector = 0; windvector.z = 2; - objects.treetextureptr.load(":Data:Textures:deserttree.png", 0, 1); - objects.bushtextureptr.load(":Data:Textures:bushdesert.png", 0, 1); - objects.rocktextureptr.load(":Data:Textures:boulderdesert.jpg", 1, 0); - objects.boxtextureptr.load(":Data:Textures:desertbox.jpg", 1, 0); + objects.treetextureptr.load(":Data:Textures:deserttree.png", 0); + objects.bushtextureptr.load(":Data:Textures:bushdesert.png", 0); + objects.rocktextureptr.load(":Data:Textures:boulderdesert.jpg", 1); + objects.boxtextureptr.load(":Data:Textures:desertbox.jpg", 1); if (ambientsound) @@ -647,8 +645,8 @@ void Setenvironment(int which) footstepsound3 = footstepsn1; footstepsound4 = footstepsn2; - terraintexture.load(":Data:Textures:sand.jpg", 1, 0); - terraintexture2.load(":Data:Textures:sandslope.jpg", 1, 0); + terraintexture.load(":Data:Textures:sand.jpg", 1); + terraintexture2.load(":Data:Textures:sandslope.jpg", 1); temptexdetail = texdetail; @@ -668,10 +666,10 @@ void Setenvironment(int which) } else if (environment == grassyenvironment) { windvector = 0; windvector.z = 2; - objects.treetextureptr.load(":Data:Textures:tree.png", 0, 1); - objects.bushtextureptr.load(":Data:Textures:bush.png", 0, 1); - objects.rocktextureptr.load(":Data:Textures:boulder.jpg", 1, 0); - objects.boxtextureptr.load(":Data:Textures:grassbox.jpg", 1, 0); + objects.treetextureptr.load(":Data:Textures:tree.png", 0); + objects.bushtextureptr.load(":Data:Textures:bush.png", 0); + objects.rocktextureptr.load(":Data:Textures:boulder.jpg", 1); + objects.boxtextureptr.load(":Data:Textures:grassbox.jpg", 1); if (ambientsound) emit_stream_np(stream_wind, 100.); @@ -681,8 +679,8 @@ void Setenvironment(int which) footstepsound3 = footstepst1; footstepsound4 = footstepst2; - terraintexture.load(":Data:Textures:grassdirt.jpg", 1, 0); - terraintexture2.load(":Data:Textures:mossrock.jpg", 1, 0); + terraintexture.load(":Data:Textures:grassdirt.jpg", 1); + terraintexture2.load(":Data:Textures:mossrock.jpg", 1); temptexdetail = texdetail; @@ -733,9 +731,9 @@ void LoadCampaign() ifstream test(ConvertFileName((":Data:Textures:" + accountactive->getCurrentCampaign() + ":World.png").c_str())); if (test.good()) { - Mainmenuitems[7].load((":Data:Textures:" + accountactive->getCurrentCampaign() + ":World.png").c_str(), 0, 0); + Mainmenuitems[7].load((":Data:Textures:" + accountactive->getCurrentCampaign() + ":World.png").c_str(), 0); } else { - Mainmenuitems[7].load(":Data:Textures:World.png", 0, 0); + Mainmenuitems[7].load(":Data:Textures:World.png", 0); } if (accountactive->getCampaignChoicesMade() == 0) { @@ -790,8 +788,6 @@ void Game::Loadlevel(const char *name) static const char *pfx = ":Data:Maps:"; char *buf; - float headprop, legprop, armprop, bodyprop; - LOGFUNC; LOG(std::string("Loading level...") + name); @@ -817,7 +813,6 @@ void Game::Loadlevel(const char *name) tutorialstagetime = 0; tutorialmaxtime = 1; } - loadingstuff = 1; pause_sound(whooshsound); pause_sound(stream_firesound); @@ -915,6 +910,7 @@ void Game::Loadlevel(const char *name) } weapons.clear(); + Person::players.resize(1); funpackf(tfile, "Bi", &mapvers); if (mapvers >= 15) @@ -1030,8 +1026,9 @@ void Game::Loadlevel(const char *name) funpackf(tfile, "Bf Bf", &dialoguecamerayaw[k][l], &dialoguecamerapitch[k][l]); } } - } else + } else { numdialogues = 0; + } for (int k = 0; k < Person::players[0]->numclothes; k++) { funpackf(tfile, "Bi", &templength); @@ -1094,112 +1091,20 @@ void Game::Loadlevel(const char *name) int numplayers; funpackf(tfile, "Bi", &numplayers); - int howmanyremoved = 0; - bool removeanother = 0; if (numplayers > maxplayers) { cout << "Warning: this level contains more players than allowed" << endl; } - if (numplayers > 1) { - for (int i = 1; i < numplayers; i++) { - Person::players.push_back(shared_ptr(new Person())); - if (visibleloading) - LoadingScreen(); - removeanother = 0; - - funpackf(tfile, "Bi Bi Bf Bf Bf Bi", &Person::players[i - howmanyremoved]->whichskin, &Person::players[i - howmanyremoved]->creature, &Person::players[i - howmanyremoved]->coords.x, &Person::players[i - howmanyremoved]->coords.y, &Person::players[i - howmanyremoved]->coords.z, &Person::players[i - howmanyremoved]->num_weapons); - if (mapvers >= 5) - funpackf(tfile, "Bi", &Person::players[i - howmanyremoved]->howactive); - else - Person::players[i - howmanyremoved]->howactive = typeactive; - if (mapvers >= 3) - funpackf(tfile, "Bf", &Person::players[i - howmanyremoved]->scale); - else - Person::players[i - howmanyremoved]->scale = -1; - if (mapvers >= 11) - funpackf(tfile, "Bb", &Person::players[i - howmanyremoved]->immobile); - else - Person::players[i - howmanyremoved]->immobile = 0; - if (mapvers >= 12) - funpackf(tfile, "Bf", &Person::players[i - howmanyremoved]->yaw); - else - Person::players[i - howmanyremoved]->yaw = 0; - Person::players[i - howmanyremoved]->targetyaw = Person::players[i - howmanyremoved]->yaw; - if (Person::players[i - howmanyremoved]->num_weapons < 0 || Person::players[i - howmanyremoved]->num_weapons > 5) { - removeanother = 1; - howmanyremoved++; - } - if (!removeanother) { - if (Person::players[i - howmanyremoved]->num_weapons > 0 && Person::players[i - howmanyremoved]->num_weapons < 5) { - for (int j = 0; j < Person::players[i - howmanyremoved]->num_weapons; j++) { - Person::players[i - howmanyremoved]->weaponids[j] = weapons.size(); - int type; - funpackf(tfile, "Bi", &type); - weapons.push_back(Weapon(type, i)); - } - } - funpackf(tfile, "Bi", &Person::players[i - howmanyremoved]->numwaypoints); - for (int j = 0; j < Person::players[i - howmanyremoved]->numwaypoints; j++) { - funpackf(tfile, "Bf", &Person::players[i - howmanyremoved]->waypoints[j].x); - funpackf(tfile, "Bf", &Person::players[i - howmanyremoved]->waypoints[j].y); - funpackf(tfile, "Bf", &Person::players[i - howmanyremoved]->waypoints[j].z); - if (mapvers >= 5) - funpackf(tfile, "Bi", &Person::players[i - howmanyremoved]->waypointtype[j]); - else - Person::players[i - howmanyremoved]->waypointtype[j] = wpkeepwalking; - } - - funpackf(tfile, "Bi", &Person::players[i - howmanyremoved]->waypoint); - if (Person::players[i - howmanyremoved]->waypoint > Person::players[i - howmanyremoved]->numwaypoints - 1) - Person::players[i - howmanyremoved]->waypoint = 0; - - funpackf(tfile, "Bf Bf Bf", &Person::players[i - howmanyremoved]->armorhead, &Person::players[i - howmanyremoved]->armorhigh, &Person::players[i - howmanyremoved]->armorlow); - funpackf(tfile, "Bf Bf Bf", &Person::players[i - howmanyremoved]->protectionhead, &Person::players[i - howmanyremoved]->protectionhigh, &Person::players[i - howmanyremoved]->protectionlow); - funpackf(tfile, "Bf Bf Bf", &Person::players[i - howmanyremoved]->metalhead, &Person::players[i - howmanyremoved]->metalhigh, &Person::players[i - howmanyremoved]->metallow); - funpackf(tfile, "Bf Bf", &Person::players[i - howmanyremoved]->power, &Person::players[i - howmanyremoved]->speedmult); - - if (mapvers >= 4) - funpackf(tfile, "Bf Bf Bf Bf", &headprop, &bodyprop, &armprop, &legprop); - else { - headprop = 1; - bodyprop = 1; - armprop = 1; - legprop = 1; - } - if (Person::players[i - howmanyremoved]->creature == wolftype) { - Person::players[i - howmanyremoved]->proportionhead = 1.1 * headprop; - Person::players[i - howmanyremoved]->proportionbody = 1.1 * bodyprop; - Person::players[i - howmanyremoved]->proportionarms = 1.1 * armprop; - Person::players[i - howmanyremoved]->proportionlegs = 1.1 * legprop; - } - - if (Person::players[i - howmanyremoved]->creature == rabbittype) { - Person::players[i - howmanyremoved]->proportionhead = 1.2 * headprop; - Person::players[i - howmanyremoved]->proportionbody = 1.05 * bodyprop; - Person::players[i - howmanyremoved]->proportionarms = 1.00 * armprop; - Person::players[i - howmanyremoved]->proportionlegs = 1.1 * legprop; - Person::players[i - howmanyremoved]->proportionlegs.y = 1.05 * legprop; - } - - funpackf(tfile, "Bi", &Person::players[i - howmanyremoved]->numclothes); - if (Person::players[i - howmanyremoved]->numclothes) { - for (int k = 0; k < Person::players[i - howmanyremoved]->numclothes; k++) { - int templength; - funpackf(tfile, "Bi", &templength); - for (int l = 0; l < templength; l++) - funpackf(tfile, "Bb", &Person::players[i - howmanyremoved]->clothes[k][l]); - Person::players[i - howmanyremoved]->clothes[k][templength] = '\0'; - funpackf(tfile, "Bf Bf Bf", &Person::players[i - howmanyremoved]->clothestintr[k], &Person::players[i - howmanyremoved]->clothestintg[k], &Person::players[i - howmanyremoved]->clothestintb[k]); - } - } - } + for (int i = 1; i < numplayers; i++) { + unsigned j = 1; + try { + Person::players.push_back(shared_ptr(new Person(tfile, mapvers, j))); + j++; + } catch (InvalidPersonException e) { } } if (visibleloading) LoadingScreen(); - numplayers -= howmanyremoved; - Person::players.resize(numplayers); - funpackf(tfile, "Bi", &numpathpoints); if (numpathpoints > 30 || numpathpoints < 0) numpathpoints = 0; @@ -1279,7 +1184,7 @@ void Game::Loadlevel(const char *name) (char *)":Data:Models:Body7.solid", (char *)":Data:Models:Bodylow.solid", (char *)":Data:Models:Belt.solid", 1); - Person::players[i]->skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png", 1, 1); + Person::players[i]->skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png", 1); } if (Person::players[i]->creature == wolftype) { Person::players[i]->skeleton.Load( @@ -1434,7 +1339,6 @@ void Game::Loadlevel(const char *name) perror("Problem"); } leveltime = 0; - loadingstuff = 0; visibleloading = 0; } @@ -2392,7 +2296,7 @@ void doDebugKeys() Person::players.back()->whichskin = 2; } - Person::players.back()->skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png", 1, 1); + Person::players.back()->skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png", 1); Person::players.back()->power = 1; Person::players.back()->speedmult = 1; Person::players.back()->animCurrent = bounceidleanim; @@ -2936,12 +2840,8 @@ void doAerialAcrobatics() Person::players[k]->animTarget = Person::players[k]->getLanding(); emit_sound_at(landsound, Person::players[k]->coords, 128.); if (k == 0) { - envsound[numenvsounds] = Person::players[k]->coords; - envsoundvol[numenvsounds] = 16; - envsoundlife[numenvsounds] = .4; - numenvsounds++; + addEnvSound(Person::players[k]->coords); } - } } } @@ -5456,7 +5356,6 @@ void Game::Tick() displaytime[i] += multiplier; } - keyboardfrozen = false; Input::Tick(); if (Input::isKeyPressed(SDL_SCANCODE_F6)) {