#include "openal_wrapper.h"
#include "Settings.h"
#include "Input.h"
-#include "Animation.h"
+#include "Animation/Animation.h"
#include "Awards.h"
#include "Menu.h"
#include "ConsoleCmds.h"
hostiletime = 0;
won = 0;
- animation[bounceidleanim].Load((char *)"Idle", middleheight, neutral);
+ //~ Animation::animations[bounceidleanim].Load("Idle", middleheight, neutral);
Dialog::dialogs.clear();
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();
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 {
- 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", 1);
- Person::players[i]->skeleton.drawmodelclothes.textureptr.load("Textures/Belt.png", 1);
- }
- if (Person::players[i]->creature == wolftype) {
- 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;
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 = Animation("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;
tutorialsuccess = 1;
break;
case 28:
- if (animation[Person::players[0]->animTarget].attack == reversed && Person::players[0]->feint)
+ if (Animation::animations[Person::players[0]->animTarget].attack == reversed && Person::players[0]->feint)
tutorialsuccess = 1;
break;
case 29:
}
break;
case 33:
- if (animation[Person::players[0]->animTarget].attack == reversal)
+ if (Animation::animations[Person::players[0]->animTarget].attack == reversal)
tutorialsuccess = 1;
break;
case 34:
- if (animation[Person::players[0]->animTarget].attack == reversal)
+ if (Animation::animations[Person::players[0]->animTarget].attack == reversal)
tutorialsuccess = 1;
break;
case 35:
- if (animation[Person::players[0]->animTarget].attack == reversal) {
+ if (Animation::animations[Person::players[0]->animTarget].attack == reversal) {
tutorialsuccess = 1;
reversaltrain = 0;
cananger = 0;
tutorialsuccess = 1;
break;
case 44:
- if (animation[Person::players[0]->animTarget].attack == reversal)
+ if (Animation::animations[Person::players[0]->animTarget].attack == reversal)
tutorialsuccess = 1;
break;
case 45:
- if (animation[Person::players[0]->animTarget].attack == reversal)
+ if (Animation::animations[Person::players[0]->animTarget].attack == reversal)
tutorialsuccess = 1;
break;
case 46:
- if (animation[Person::players[0]->animTarget].attack == reversal)
+ if (Animation::animations[Person::players[0]->animTarget].attack == reversal)
tutorialsuccess = 1;
break;
case 49:
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;
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;
if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
Person::players.push_back(shared_ptr<Person>(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;
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;
Person::players.back()->proportionlegs.z = 0;
}
- Person::players.back()->tempanimation.Load((char *)"Tempanim", 0, 0);
+ Person::players.back()->tempanimation = Animation("Tempanim", 0, 0);
Person::players.back()->damagetolerance = 200;
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)) {
if (Person::players[i]->animTarget == jumpupanim &&
Person::players[k]->animTarget != getupfrombackanim &&
Person::players[k]->animTarget != getupfromfrontanim &&
- animation[Person::players[k]->animTarget].height == middleheight &&
+ Animation::animations[Person::players[k]->animTarget].height == middleheight &&
normaldotproduct(Person::players[i]->velocity, Person::players[k]->coords - Person::players[i]->coords) < 0 &&
((Person::players[k]->aitype == playercontrolled && Person::players[k]->attackkeydown) ||
Person::players[k]->aitype != playercontrolled)) {
if (Person::players[k]->animTarget == jumpupanim &&
Person::players[i]->animTarget != getupfrombackanim &&
Person::players[i]->animTarget != getupfromfrontanim &&
- animation[Person::players[i]->animTarget].height == middleheight &&
+ Animation::animations[Person::players[i]->animTarget].height == middleheight &&
normaldotproduct(Person::players[k]->velocity, Person::players[i]->coords - Person::players[k]->coords) < 0 &&
((Person::players[i]->aitype == playercontrolled && Person::players[i]->attackkeydown) ||
Person::players[i]->aitype != playercontrolled)) {
Person::players[k]->animTarget == backhandspringanim ||
Person::players[k]->animTarget == dodgebackanim ||
Person::players[k]->animTarget == rollanim ||
- (animation[Person::players[k]->animTarget].attack &&
+ (Animation::animations[Person::players[k]->animTarget].attack &&
Person::players[k]->animTarget != rabbitkickanim &&
(Person::players[k]->animTarget != crouchstabanim || Person::players[k]->hasvictim) &&
(Person::players[k]->animTarget != swordgroundstabanim || Person::players[k]->hasvictim))) {
if (Person::players[k]->animTarget == jumpdownanim || Person::players[k]->isFlip()) {
//flipped into a rock
- if (Person::players[k]->isFlip() && animation[Person::players[k]->animTarget].label[Person::players[k]->frameTarget] == 7)
+ if (Person::players[k]->isFlip() && Person::players[k]->targetFrame().label == 7)
Person::players[k]->RagDoll(0);
if (Person::players[k]->animTarget == jumpupanim) {
}
}
//attack
- if (!animation[Person::players[k]->animTarget].attack &&
+ if (!Animation::animations[Person::players[k]->animTarget].attack &&
!Person::players[k]->backkeydown &&
(Person::players[k]->isIdle() ||
Person::players[k]->isRun() ||
if (i == k || !(k == 0 || i == 0))
continue;
if (!Person::players[k]->hasvictim)
- if (animation[Person::players[k]->animTarget].attack != reversal) {
+ if (Animation::animations[Person::players[k]->animTarget].attack != reversal) {
//choose an attack
const float distance = distsq(&Person::players[k]->coords, &Person::players[i]->coords);
if (distance < 4.5 &&
Person::players[k]->animTarget != rabbitkickanim &&
Person::players[i]->animTarget != getupfrombackanim &&
(Person::players[i]->animTarget != staggerbackhighanim &&
- (Person::players[i]->animTarget != staggerbackhardanim ||
- animation[staggerbackhardanim].label[Person::players[i]->frameTarget] == 6)) &&
+ (Person::players[i]->animTarget != staggerbackhardanim || Person::players[i]->targetFrame().label == 6)) &&
Person::players[i]->animTarget != jumpdownanim &&
Person::players[i]->animTarget != jumpupanim &&
Person::players[i]->animTarget != getupfromfrontanim) {
//sweep
if (distance < 2.5 * sq(Person::players[k]->scale * 5) &&
Person::players[k]->crouchkeydown &&
- animation[Person::players[i]->animTarget].height != lowheight)
+ Animation::animations[Person::players[i]->animTarget].height != lowheight)
Person::players[k]->animTarget = sweepanim;
//winduppunch
else if (distance < 1.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height != lowheight &&
+ Animation::animations[Person::players[i]->animTarget].height != lowheight &&
!Person::players[k]->forwardkeydown &&
!Person::players[k]->leftkeydown &&
!Person::players[k]->rightkeydown &&
Person::players[k]->animTarget = winduppunchanim;
//upunch
else if (distance < 2.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height != lowheight &&
+ Animation::animations[Person::players[i]->animTarget].height != lowheight &&
!Person::players[k]->forwardkeydown &&
!Person::players[k]->leftkeydown &&
!Person::players[k]->rightkeydown &&
Person::players[k]->animTarget = knifefollowanim;
//knifeslashstart
else if (distance < 2.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height != lowheight &&
+ Animation::animations[Person::players[i]->animTarget].height != lowheight &&
!Person::players[k]->forwardkeydown &&
!Person::players[k]->leftkeydown &&
!Person::players[k]->rightkeydown &&
Person::players[k]->animTarget = knifeslashstartanim;
//swordslash
else if (distance < 4.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height != lowheight &&
+ Animation::animations[Person::players[i]->animTarget].height != lowheight &&
!Person::players[k]->crouchkeydown &&
attackweapon == sword &&
Person::players[k]->weaponmissdelay <= 0)
Person::players[k]->animTarget = swordslashanim;
//staffhit
else if (distance < 4.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height != lowheight &&
+ Animation::animations[Person::players[i]->animTarget].height != lowheight &&
!Person::players[k]->crouchkeydown &&
attackweapon == staff &&
Person::players[k]->weaponmissdelay <= 0 &&
Person::players[k]->animTarget = staffhitanim;
//staffspinhit
else if (distance < 4.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height != lowheight &&
+ Animation::animations[Person::players[i]->animTarget].height != lowheight &&
!Person::players[k]->crouchkeydown &&
attackweapon == staff &&
Person::players[k]->weaponmissdelay <= 0)
Person::players[k]->animTarget = staffspinhitanim;
//spinkick
else if (distance < 2.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height != lowheight)
+ Animation::animations[Person::players[i]->animTarget].height != lowheight)
Person::players[k]->animTarget = spinkickanim;
//lowkick
else if (distance < 2.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height == lowheight &&
- animation[Person::players[k]->animTarget].attack != normalattack)
+ Animation::animations[Person::players[i]->animTarget].height == lowheight &&
+ Animation::animations[Person::players[k]->animTarget].attack != normalattack)
Person::players[k]->animTarget = lowkickanim;
} else { //AI player
if (distance < 4.5 * sq(Person::players[k]->scale * 5)) {
randattack = abs(Random() % 5);
if (!attackweapon && distance < 2.5 * sq(Person::players[k]->scale * 5)) {
//sweep
- if (randattack == 0 && animation[Person::players[i]->animTarget].height != lowheight)
+ if (randattack == 0 && Animation::animations[Person::players[i]->animTarget].height != lowheight)
Person::players[k]->animTarget = sweepanim;
//upunch
- else if (randattack == 1 && animation[Person::players[i]->animTarget].height != lowheight &&
+ else if (randattack == 1 && Animation::animations[Person::players[i]->animTarget].height != lowheight &&
!attackweapon)
Person::players[k]->animTarget = upunchanim;
//spinkick
- else if (randattack == 2 && animation[Person::players[i]->animTarget].height != lowheight)
+ else if (randattack == 2 && Animation::animations[Person::players[i]->animTarget].height != lowheight)
Person::players[k]->animTarget = spinkickanim;
//lowkick
- else if (animation[Person::players[i]->animTarget].height == lowheight)
+ else if (Animation::animations[Person::players[i]->animTarget].height == lowheight)
Person::players[k]->animTarget = lowkickanim;
}
if (attackweapon) {
if ((tutoriallevel != 1 || !attackweapon) &&
distance < 2.5 * sq(Person::players[k]->scale * 5) &&
randattack == 0 &&
- animation[Person::players[i]->animTarget].height != lowheight)
+ Animation::animations[Person::players[i]->animTarget].height != lowheight)
Person::players[k]->animTarget = sweepanim;
//knifeslashstart
else if (distance < 2.5 * sq(Person::players[k]->scale * 5) &&
else if ((tutoriallevel != 1 || !attackweapon) &&
distance < 2.5 * sq(Person::players[k]->scale * 5) &&
randattack == 1 &&
- animation[Person::players[i]->animTarget].height != lowheight)
+ Animation::animations[Person::players[i]->animTarget].height != lowheight)
Person::players[k]->animTarget = spinkickanim;
//lowkick
else if (distance < 2.5 * sq(Person::players[k]->scale * 5) &&
- animation[Person::players[i]->animTarget].height == lowheight &&
- animation[Person::players[k]->animTarget].attack != normalattack)
+ Animation::animations[Person::players[i]->animTarget].height == lowheight &&
+ Animation::animations[Person::players[k]->animTarget].attack != normalattack)
Person::players[k]->animTarget = lowkickanim;
}
}
Person::players[i]->targetyaw = Person::players[i]->yaw;
}
}
- if (animation[Person::players[k]->animTarget].attack == normalattack &&
+ if (Animation::animations[Person::players[k]->animTarget].attack == normalattack &&
Person::players[k]->victim == Person::players[i] &&
(!Person::players[i]->skeleton.free)) {
oldattackkey = 1;
if (i == k)
continue;
if ((playerrealattackkeydown || Person::players[i]->dead || !hasstaff) &&
- animation[Person::players[k]->animTarget].attack == neutral) {
+ Animation::animations[Person::players[k]->animTarget].attack == neutral) {
const float distance = distsq(&Person::players[k]->coords, &Person::players[i]->coords);
if (!Person::players[i]->dead || !realthreat || (!attackweapon && Person::players[k]->crouchkeydown))
if (Person::players[i]->skeleton.free)
}
}
}
- if (animation[Person::players[k]->animTarget].attack == normalattack &&
+ if (Animation::animations[Person::players[k]->animTarget].attack == normalattack &&
Person::players[k]->victim == Person::players[i] &&
(!Person::players[i]->skeleton.free ||
Person::players[k]->animTarget == killanim ||
!Person::players[k]->victim->skeleton.free &&
Person::players[k]->victim->animTarget != getupfrombackanim &&
Person::players[k]->victim->animTarget != getupfromfrontanim &&
- animation[Person::players[k]->victim->animTarget].height != lowheight &&
+ Animation::animations[Person::players[k]->victim->animTarget].height != lowheight &&
Person::players[k]->aitype != playercontrolled && //wat???
normaldotproduct(Person::players[k]->facing, Person::players[k]->victim->coords - Person::players[k]->coords) > 0 &&
Person::players[k]->rabbitkickenabled) ||
Person::players[k]->setAnimation(rabbitkickanim);
}
//update counts
- if (animation[Person::players[k]->animTarget].attack && k == 0) {
+ if (Animation::animations[Person::players[k]->animTarget].attack && k == 0) {
numattacks++;
switch (attackweapon) {
case 0:
for (unsigned k = 0; k < Person::players.size(); k++)
for (unsigned i = k + 1; i < Person::players.size(); i++) {
//neither player is part of a reversal
- if ((animation[Person::players[i]->animTarget].attack != reversed &&
- animation[Person::players[i]->animTarget].attack != reversal &&
- animation[Person::players[k]->animTarget].attack != reversed &&
- animation[Person::players[k]->animTarget].attack != reversal) || (i != 0 && k != 0))
- if ((animation[Person::players[i]->animCurrent].attack != reversed &&
- animation[Person::players[i]->animCurrent].attack != reversal &&
- animation[Person::players[k]->animCurrent].attack != reversed &&
- animation[Person::players[k]->animCurrent].attack != reversal) || (i != 0 && k != 0))
+ if ((Animation::animations[Person::players[i]->animTarget].attack != reversed &&
+ Animation::animations[Person::players[i]->animTarget].attack != reversal &&
+ Animation::animations[Person::players[k]->animTarget].attack != reversed &&
+ Animation::animations[Person::players[k]->animTarget].attack != reversal) || (i != 0 && k != 0))
+ if ((Animation::animations[Person::players[i]->animCurrent].attack != reversed &&
+ Animation::animations[Person::players[i]->animCurrent].attack != reversal &&
+ Animation::animations[Person::players[k]->animCurrent].attack != reversed &&
+ Animation::animations[Person::players[k]->animCurrent].attack != reversal) || (i != 0 && k != 0))
//neither is sleeping
if (Person::players[i]->howactive <= typesleeping && Person::players[k]->howactive <= typesleeping)
if (Person::players[i]->howactive != typesittingwall && Person::players[k]->howactive != typesittingwall)
k == 0 && findLengthfast(&rotatetarget) > 50 && Person::players[0]->rabbitkickragdoll) &&
normaldotproduct(rotatetarget, Person::players[k]->coords - Person::players[i]->coords) > 0) &&
(k == 0 ||
- k != 0 && Person::players[i]->skeleton.oldfree == 1 && animation[Person::players[k]->animCurrent].attack == neutral ||
- /*i!=0&&*/Person::players[k]->skeleton.oldfree == 1 && animation[Person::players[i]->animCurrent].attack == neutral)) ||
+ k != 0 && Person::players[i]->skeleton.oldfree == 1 && Animation::animations[Person::players[k]->animCurrent].attack == neutral ||
+ /*i!=0&&*/Person::players[k]->skeleton.oldfree == 1 && Animation::animations[Person::players[i]->animCurrent].attack == neutral)) ||
(Person::players[i]->animTarget == jumpupanim || Person::players[i]->animTarget == jumpdownanim || Person::players[i]->isFlip()) &&
(Person::players[k]->animTarget == jumpupanim || Person::players[k]->animTarget == jumpdownanim || Person::players[k]->isFlip()) &&
k == 0 && !Person::players[i]->skeleton.oldfree && !Person::players[k]->skeleton.oldfree) {
//If hit by body
if ( (i != 0 || Person::players[i]->skeleton.free) &&
(k != 0 || Person::players[k]->skeleton.free) ||
- (animation[Person::players[i]->animTarget].height == highheight &&
- animation[Person::players[k]->animTarget].height == highheight)) {
+ (Animation::animations[Person::players[i]->animTarget].height == highheight &&
+ Animation::animations[Person::players[k]->animTarget].height == highheight)) {
if (tutoriallevel != 1) {
emit_sound_at(heavyimpactsound, Person::players[i]->coords);
}
}
}
- if ( (animation[Person::players[i]->animTarget].attack == neutral ||
- animation[Person::players[i]->animTarget].attack == normalattack) &&
- (animation[Person::players[k]->animTarget].attack == neutral ||
- animation[Person::players[k]->animTarget].attack == normalattack)) {
+ if ( (Animation::animations[Person::players[i]->animTarget].attack == neutral ||
+ Animation::animations[Person::players[i]->animTarget].attack == normalattack) &&
+ (Animation::animations[Person::players[k]->animTarget].attack == neutral ||
+ Animation::animations[Person::players[k]->animTarget].attack == normalattack)) {
//If bumped
if (Person::players[i]->skeleton.oldfree == 0 && Person::players[k]->skeleton.oldfree == 0) {
if (distsq(&Person::players[k]->coords, &Person::players[i]->coords) < .5 * sq((Person::players[i]->scale + Person::players[k]->scale) * 2.5)) {
distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 400 &&
Person::players[i]->occluded < 25) {
if (distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 12 &&
- animation[Person::players[0]->animTarget].height != lowheight &&
+ Animation::animations[Person::players[0]->animTarget].height != lowheight &&
!editorenabled &&
(Person::players[0]->coords.y < Person::players[i]->coords.y + 5 || Person::players[0]->onterrain))
Person::players[i]->aitype = attacktypecutoff;
if (distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 30 &&
- animation[Person::players[0]->animTarget].height == highheight &&
+ Animation::animations[Person::players[0]->animTarget].height == highheight &&
!editorenabled)
Person::players[i]->aitype = attacktypecutoff;
Person::players[i]->losupdatedelay = .2;
for (unsigned j = 0; j < Person::players.size(); j++)
if (j == 0 || Person::players[j]->skeleton.free || Person::players[j]->aitype != passivetype)
- if (abs(Random() % 2) || animation[Person::players[j]->animTarget].height != lowheight || j != 0)
+ if (abs(Random() % 2) || Animation::animations[Person::players[j]->animTarget].height != lowheight || j != 0)
if (distsq(&Person::players[i]->coords, &Person::players[j]->coords) < 400)
if (normaldotproduct(Person::players[i]->facing, Person::players[j]->coords - Person::players[i]->coords) > 0)
if (Person::players[j]->coords.y < Person::players[i]->coords.y + 5 || Person::players[j]->onterrain)
distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 400 &&
Person::players[i]->occluded < 25) {
if (distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 12 &&
- animation[Person::players[0]->animTarget].height != lowheight && !editorenabled)
+ Animation::animations[Person::players[0]->animTarget].height != lowheight && !editorenabled)
Person::players[i]->aitype = attacktypecutoff;
if (distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 30 &&
- animation[Person::players[0]->animTarget].height == highheight && !editorenabled)
+ Animation::animations[Person::players[0]->animTarget].height == highheight && !editorenabled)
Person::players[i]->aitype = attacktypecutoff;
//wolf smell
Person::players[i]->losupdatedelay = .2;
for (unsigned j = 0; j < Person::players.size(); j++) {
if (j == 0 || Person::players[j]->skeleton.free || Person::players[j]->aitype != passivetype) {
- if (abs(Random() % 2) || animation[Person::players[j]->animTarget].height != lowheight || j != 0)
+ if (abs(Random() % 2) || Animation::animations[Person::players[j]->animTarget].height != lowheight || j != 0)
if (distsq(&Person::players[i]->coords, &Person::players[j]->coords) < 400)
if (normaldotproduct(Person::players[i]->facing, Person::players[j]->coords - Person::players[i]->coords) > 0)
if ((-1 == checkcollide(
(Person::players[j]->animTarget == hanganim &&
normaldotproduct(Person::players[j]->facing, Person::players[i]->coords - Person::players[j]->coords) < 0)) {
Person::players[i]->lastseentime -= .2;
- if (j == 0 && animation[Person::players[j]->animTarget].height == lowheight)
+ if (j == 0 && Animation::animations[Person::players[j]->animTarget].height == lowheight)
Person::players[i]->lastseentime -= .4;
else
Person::players[i]->lastseentime -= .6;
Person::players[i]->occluded < 2 &&
((tutoriallevel != 1 || cananger) && hostile)) {
Person::players[i]->losupdatedelay = .2;
- if (distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 4 && animation[Person::players[i]->animTarget].height != lowheight) {
+ if (distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 4 && Animation::animations[Person::players[i]->animTarget].height != lowheight) {
Person::players[i]->aitype = attacktypecutoff;
Person::players[i]->lastseentime = 1;
}
- if (abs(Random() % 2) || animation[Person::players[i]->animTarget].height != lowheight)
+ if (abs(Random() % 2) || Animation::animations[Person::players[i]->animTarget].height != lowheight)
//TODO: factor out canSeePlayer()
if (distsq(&Person::players[i]->coords, &Person::players[0]->coords) < 400)
if (normaldotproduct(Person::players[i]->facing, Person::players[0]->coords - Person::players[i]->coords) > 0)
}
//dodge/reverse walljump kicks
if (Person::players[i]->damage < Person::players[i]->damagetolerance / 2)
- if (animation[Person::players[i]->animTarget].height != highheight)
+ if (Animation::animations[Person::players[i]->animTarget].height != highheight)
if (Person::players[i]->damage < Person::players[i]->damagetolerance * .5 &&
((Person::players[0]->animTarget == walljumprightkickanim ||
Person::players[0]->animTarget == walljumpleftkickanim) &&
}
//lose sight of player in the air (?)
if (Person::players[0]->coords.y > Person::players[i]->coords.y + 5 &&
- animation[Person::players[0]->animTarget].height != highheight &&
+ Animation::animations[Person::players[0]->animTarget].height != highheight &&
!Person::players[0]->onterrain) {
Person::players[i]->aitype = pathfindtype;
Person::players[i]->finalfinaltarget = Person::players[i]->waypoints[Person::players[i]->waypoint];
}
//it's time to think (?)
if (Person::players[i]->aiupdatedelay < 0 &&
- !animation[Person::players[i]->animTarget].attack &&
+ !Animation::animations[Person::players[i]->animTarget].attack &&
Person::players[i]->animTarget != staggerbackhighanim &&
Person::players[i]->animTarget != staggerbackhardanim &&
Person::players[i]->animTarget != backhandspringanim &&
Person::players[i]->lastseentime = 1;
}
}
- if (animation[Person::players[0]->animTarget].height == highheight &&
+ if (Animation::animations[Person::players[0]->animTarget].height == highheight &&
(Person::players[i]->aitype == attacktypecutoff ||
Person::players[i]->aitype == searchtype))
if (Person::players[0]->coords.y > terrain.getHeight(Person::players[0]->coords.x, Person::players[0]->coords.z) + 10) {
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);
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;
talkdelay = 1;
talkdelay -= multiplier;
- if (talkdelay <= 0 && !Dialog::inDialog() && animation[Person::players[0]->animTarget].height != highheight) {
+ if (talkdelay <= 0 && !Dialog::inDialog() && Animation::animations[Person::players[0]->animTarget].height != highheight) {
for (int i = 0; i < Dialog::dialogs.size(); i++) {
Dialog::dialogs[i].tick(i);
}
oldtargetyaw = Person::players[i]->targetyaw;
if (i == 0 && !Dialog::inDialog()) {
//TODO: refactor repetitive code
- if (!animation[Person::players[0]->animTarget].attack &&
+ if (!Animation::animations[Person::players[0]->animTarget].attack &&
Person::players[0]->animTarget != staggerbackhighanim &&
Person::players[0]->animTarget != staggerbackhardanim &&
Person::players[0]->animTarget != crouchremoveknifeanim &&
Person::players[i]->targetheadpitch = pitch;
}
if (i != 0 && Person::players[i]->aitype == playercontrolled && !Dialog::inDialog()) {
- if (!animation[Person::players[i]->animTarget].attack &&
+ if (!Animation::animations[Person::players[i]->animTarget].attack &&
Person::players[i]->animTarget != staggerbackhighanim &&
Person::players[i]->animTarget != staggerbackhardanim &&
Person::players[i]->animTarget != crouchremoveknifeanim &&
doAI(i);
- if (animation[Person::players[i]->animTarget].attack == reversed) {
+ if (Animation::animations[Person::players[i]->animTarget].attack == reversed) {
//Person::players[i]->targetyaw=Person::players[i]->yaw;
Person::players[i]->forwardkeydown = 0;
Person::players[i]->leftkeydown = 0;
Person::players[i]->aitype == attacktypecutoff &&
!Person::players[i]->dead &&
!Person::players[i]->skeleton.free &&
- animation[Person::players[i]->animTarget].attack == neutral)
+ Animation::animations[Person::players[i]->animTarget].attack == neutral)
numresponded = 1;
if (!Person::players[i]->throwkeydown)
}
movekey = 0;
//Do controls
- if (!animation[Person::players[i]->animTarget].attack &&
+ if (!Animation::animations[Person::players[i]->animTarget].attack &&
Person::players[i]->animTarget != staggerbackhighanim &&
Person::players[i]->animTarget != staggerbackhardanim &&
Person::players[i]->animTarget != backhandspringanim &&
viewerfacing = facing;
if (!cameramode) {
- if ((animation[Person::players[0]->animTarget].attack != 3 && animation[Person::players[0]->animCurrent].attack != 3) || Person::players[0]->skeleton.free)
+ if ((Animation::animations[Person::players[0]->animTarget].attack != 3 && Animation::animations[Person::players[0]->animCurrent].attack != 3) || Person::players[0]->skeleton.free)
target = Person::players[0]->coords + Person::players[0]->currentoffset * (1 - Person::players[0]->target) * Person::players[0]->scale + Person::players[0]->targetoffset * Person::players[0]->target * Person::players[0]->scale - Person::players[0]->facing * .05;
else
target = Person::players[0]->oldcoords + Person::players[0]->currentoffset * (1 - Person::players[0]->target) * Person::players[0]->scale + Person::players[0]->targetoffset * Person::players[0]->target * Person::players[0]->scale - Person::players[0]->facing * .05;