X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameTick.cpp;h=685b4730ab952c17cf72bd8016d159777e558c1d;hb=cd043e3f9e26c2b3406b40a354c2840941e9db7f;hp=cf93da3d33f3dec49f422e46fe38dd3313011fc2;hpb=3f82bb3e804d1a6950bf71be8fe2ac008d1cb954;p=lugaru.git
diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp
index cf93da3..685b473 100644
--- a/Source/GameTick.cpp
+++ b/Source/GameTick.cpp
@@ -3,20 +3,18 @@ Copyright (C) 2003, 2010 - Wolfire Games
This file is part of Lugaru.
-Lugaru is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
+Lugaru is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
-This program is distributed in the hope that it will be useful,
+Lugaru is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-See the GNU General Public License for more details.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+along with Lugaru. If not, see .
*/
// Enable full math definitions
@@ -582,7 +580,7 @@ static void ch_save(const char *args)
if (Person::players.size() > maxplayers) {
cout << "Warning: this level contains more players than allowed" << endl;
}
- for (int j = 1; j < Person::players.size(); j++) {
+ for (unsigned j = 1; j < Person::players.size(); j++) {
fpackf(tfile, "Bi Bi Bf Bf Bf Bi Bi Bf Bb Bf", Person::players[j]->whichskin, Person::players[j]->creature,
Person::players[j]->coords.x, Person::players[j]->coords.y, Person::players[j]->coords.z,
Person::players[j]->num_weapons, Person::players[j]->howactive, Person::players[j]->scale, Person::players[j]->immobile, Person::players[j]->yaw);
@@ -698,7 +696,7 @@ static int findClosestPlayer()
int closest = -1;
float closestdist = std::numeric_limits::max();
- for (int i = 1; i < Person::players.size(); i++) {
+ for (unsigned i = 1; i < Person::players.size(); i++) {
float distance = distsq(&Person::players[i]->coords, &Person::players[0]->coords);
if (distance < closestdist) {
closestdist = distance;
@@ -969,7 +967,7 @@ static void ch_black(const char *args)
static void ch_sizemin(const char *args)
{
- for (int i = 1; i < Person::players.size(); i++)
+ for (unsigned i = 1; i < Person::players.size(); i++)
if (Person::players[i]->scale < 0.8 * 0.2)
Person::players[i]->scale = 0.8 * 0.2;
}
@@ -1076,7 +1074,7 @@ static void ch_dialogue(const char *args)
}
for (int i = 0; i < numdialogueboxes[numdialogues]; i++) {
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
participantfacing[numdialogues][i][j] = Person::players[j]->facing;
}
}
@@ -1159,7 +1157,7 @@ static void ch_immobile(const char *args)
static void ch_allimmobile(const char *args)
{
- for (int i = 1; i < Person::players.size(); i++)
+ for (unsigned i = 1; i < Person::players.size(); i++)
Person::players[i]->immobile = 1;
}
@@ -2148,7 +2146,7 @@ void Loadlevel(const char *name)
fclose(tfile);
- for (int i = 0; i < Person::players.size(); i++) {
+ for (unsigned i = 0; i < Person::players.size(); i++) {
if (visibleloading)
LoadingScreen();
Person::players[i]->burnt = 0;
@@ -3056,7 +3054,7 @@ void doDebugKeys()
int closest = -1;
float closestdist = std::numeric_limits::max();
- for (int i = 1; i < Person::players.size(); i++) {
+ for (unsigned i = 1; i < Person::players.size(); i++) {
float distance = distsq(&Person::players[i]->coords, &Person::players[0]->coords);
if (!Person::players[i]->headless)
if (distance < closestdist) {
@@ -3181,8 +3179,8 @@ void doDebugKeys()
}
XYZ temppos;
- for (int j = 0; j < Person::players.size(); j++) {
- if (j != closest) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
+ if (int(j) != closest) {
if (distsq(&Person::players[j]->coords, &Person::players[closest]->coords) < 25) {
Person::players[j]->DoDamage((25 - distsq(&Person::players[j]->coords, &Person::players[closest]->coords)) * 60);
if (Person::players[j]->skeleton.free == 2)
@@ -3578,8 +3576,8 @@ void doDebugKeys()
void doJumpReversals()
{
- for (int k = 0; k < Person::players.size(); k++)
- for (int i = k; i < Person::players.size(); i++) {
+ for (unsigned k = 0; k < Person::players.size(); k++)
+ for (unsigned i = k; i < Person::players.size(); i++) {
if (i == k)
continue;
if ( Person::players[k]->skeleton.free == 0 &&
@@ -3588,8 +3586,8 @@ void doJumpReversals()
Person::players[k]->animTarget == jumpupanim) &&
(Person::players[i]->aitype == playercontrolled ||
Person::players[k]->aitype == playercontrolled) &&
- (Person::players[i]->aitype == attacktypecutoff && Person::players[i]->stunned <= 0 ||
- Person::players[k]->aitype == attacktypecutoff && Person::players[k]->stunned <= 0)) {
+ ((Person::players[i]->aitype == attacktypecutoff && Person::players[i]->stunned <= 0) ||
+ (Person::players[k]->aitype == attacktypecutoff && Person::players[k]->stunned <= 0))) {
if ( distsq(&Person::players[i]->coords, &Person::players[k]->coords) < 10 * sq((Person::players[i]->scale + Person::players[k]->scale) * 2.5) &&
distsqflat(&Person::players[i]->coords, &Person::players[k]->coords) < 2 * sq((Person::players[i]->scale + Person::players[k]->scale) * 2.5)) {
//TODO: refactor two huge similar ifs
@@ -3598,7 +3596,7 @@ void doJumpReversals()
Person::players[k]->animTarget != getupfromfrontanim &&
animation[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 && Person::players[k]->attackkeydown) ||
Person::players[k]->aitype != playercontrolled)) {
Person::players[i]->victim = Person::players[k];
Person::players[i]->velocity = 0;
@@ -3679,7 +3677,7 @@ void doJumpReversals()
void doAerialAcrobatics()
{
static XYZ facing, flatfacing;
- for (int k = 0; k < Person::players.size(); k++) {
+ for (unsigned k = 0; k < Person::players.size(); k++) {
Person::players[k]->turnspeed = 500;
if ((Person::players[k]->isRun() &&
@@ -4080,7 +4078,7 @@ void doAttacks()
if (Input::isKeyDown(attackkey) &&
!oldattackkey &&
!Person::players[0]->backkeydown) {
- for (int k = 0; k < Person::players.size(); k++) {
+ for (unsigned k = 0; k < Person::players.size(); k++) {
if ((Person::players[k]->animTarget == swordslashanim ||
Person::players[k]->animTarget == staffhitanim ||
Person::players[k]->animTarget == staffspinhitanim) &&
@@ -4093,7 +4091,7 @@ void doAttacks()
if (!hostile || indialogue != -1)
Person::players[0]->attackkeydown = 0;
- for (int k = 0; k < Person::players.size(); k++) {
+ for (unsigned k = 0; k < Person::players.size(); k++) {
if (indialogue != -1)
Person::players[k]->attackkeydown = 0;
if (Person::players[k]->animTarget != rabbitrunninganim && Person::players[k]->animTarget != wolfrunninganim) {
@@ -4111,7 +4109,7 @@ void doAttacks()
if (Person::players[k]->jumppower <= 1) {
Person::players[k]->jumppower -= 2;
} else {
- for (int i = 0; i < Person::players.size(); i++) {
+ for (unsigned i = 0; i < Person::players.size(); i++) {
if (i == k)
continue;
if (Person::players[i]->animTarget == swordslashanim ||
@@ -4150,7 +4148,7 @@ void doAttacks()
//normal attacks (?)
Person::players[k]->hasvictim = 0;
if (Person::players.size() > 1)
- for (int i = 0; i < Person::players.size(); i++) {
+ for (unsigned i = 0; i < Person::players.size(); i++) {
if (i == k || !(k == 0 || i == 0))
continue;
if (!Person::players[k]->hasvictim)
@@ -4421,7 +4419,7 @@ void doAttacks()
}
const bool hasstaff = attackweapon == staff;
if (k == 0 && Person::players.size() > 1)
- for (int i = 0; i < Person::players.size(); i++) {
+ for (unsigned i = 0; i < Person::players.size(); i++) {
if (i == k)
continue;
if ((playerrealattackkeydown || Person::players[i]->dead || !hasstaff) &&
@@ -4546,7 +4544,7 @@ void doAttacks()
}
if (!Person::players[k]->hasvictim) {
//find victim
- for (int i = 0; i < Person::players.size(); i++) {
+ for (unsigned i = 0; i < Person::players.size(); i++) {
if (i == k || !(i == 0 || k == 0))
continue;
if (!Person::players[i]->skeleton.free) {
@@ -4609,8 +4607,8 @@ void doPlayerCollisions()
static XYZ rotatetarget;
static float collisionradius;
if (Person::players.size() > 1)
- for (int k = 0; k < Person::players.size(); k++)
- for (int i = k + 1; i < Person::players.size(); i++) {
+ 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 &&
@@ -4808,7 +4806,7 @@ void doPlayerCollisions()
}
}
-void doAI(int i)
+void doAI(unsigned i)
{
static bool connected;
if (Person::players[i]->aitype != playercontrolled && indialogue == -1) {
@@ -4968,7 +4966,7 @@ void doAI(int i)
if (Person::players[i]->losupdatedelay < 0 && !editorenabled && Person::players[i]->occluded < 2) {
Person::players[i]->losupdatedelay = .2;
- for (int j = 0; j < Person::players.size(); j++)
+ 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 (distsq(&Person::players[i]->coords, &Person::players[j]->coords) < 400)
@@ -5089,7 +5087,7 @@ void doAI(int i)
//wolf smell
if (Person::players[i]->creature == wolftype) {
XYZ windsmell;
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
if (j == 0 || (Person::players[j]->dead && Person::players[j]->bloodloss > 0)) {
float smelldistance = 50;
if (j == 0 && Person::players[j]->num_weapons > 0) {
@@ -5112,7 +5110,7 @@ void doAI(int i)
if (Person::players[i]->howactive < typesleeping && Person::players[i]->losupdatedelay < 0 && !editorenabled && Person::players[i]->occluded < 2) {
Person::players[i]->losupdatedelay = .2;
- for (int j = 0; j < Person::players.size(); j++) {
+ 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 (distsq(&Person::players[i]->coords, &Person::players[j]->coords) < 400)
@@ -5302,7 +5300,7 @@ void doAI(int i)
if (!Person::players[i]->ally) {
int closest = -1;
float closestdist = -1;
- for (int k = 0; k < Person::players.size(); k++) {
+ for (unsigned k = 0; k < Person::players.size(); k++) {
if (k != i && k != 0 && !Person::players[k]->dead &&
Person::players[k]->howactive < typedead1 &&
!Person::players[k]->skeleton.free &&
@@ -5402,7 +5400,7 @@ void doAI(int i)
if (Person::players[i]->ally < 0) {
int closest = -1;
float closestdist = -1;
- for (int k = 0; k < weapons.size(); k++)
+ for (unsigned k = 0; k < weapons.size(); k++)
if (weapons[k].owner == -1) {
float distance = distsq(&Person::players[i]->coords, &weapons[k].position);
if (closestdist == -1 || distance < closestdist) {
@@ -5514,7 +5512,7 @@ void doAI(int i)
}
//go for weapon on the ground
if (Person::players[i]->wentforweapon < 3)
- for (int k = 0; k < weapons.size(); k++)
+ for (unsigned k = 0; k < weapons.size(); k++)
if (Person::players[i]->creature != wolftype)
if (Person::players[i]->num_weapons == 0 &&
weapons[k].owner == -1 &&
@@ -5651,7 +5649,7 @@ void doAI(int i)
Person::players[i]->isCrouch() ||
Person::players[i]->isRun())) {
int target = -2;
- for (int j = 0; j < Person::players.size(); j++)
+ for (unsigned j = 0; j < Person::players.size(); j++)
if (j != i && !Person::players[j]->skeleton.free &&
Person::players[j]->hasvictim &&
(tutoriallevel == 1 && reversaltrain ||
@@ -6033,8 +6031,6 @@ void MenuTick()
static int oldmainmenu = mainmenu;
- char sbuf[256];
-
if (Input::MouseClicked() && (selected >= 0)) { // handling of the left mouse clic in menus
set>::iterator newscreenresolution;
switch (mainmenu) {
@@ -6628,8 +6624,9 @@ void Game::Tick()
if (talkdelay <= 0 && indialogue == -1 && animation[Person::players[0]->animTarget].height != highheight)
for (int i = 0; i < numdialogues; i++) {
- int realdialoguetype;
+ unsigned realdialoguetype;
bool special;
+ /* FIXME - Seems like modulo done with ifs */
if (dialoguetype[i] > 49) {
realdialoguetype = dialoguetype[i] - 50;
special = 1;
@@ -6865,7 +6862,7 @@ void Game::Tick()
}
}
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
participantfacing[whichdialogue][indialogue][j] = participantfacing[whichdialogue][indialogue - 1][j];
}
}
@@ -6953,7 +6950,7 @@ void Game::Tick()
}
if (dialoguetype[whichdialogue] > 49 && dialoguetype[whichdialogue] < 60) {
hostile = 1;
- for (int i = 1; i < Person::players.size(); i++) {
+ for (unsigned i = 1; i < Person::players.size(); i++) {
Person::players[i]->aitype = attacktypecutoff;
}
}
@@ -6992,11 +6989,11 @@ void Game::Tick()
doJumpReversals();
- for (int k = 0; k < Person::players.size(); k++)
+ for (unsigned k = 0; k < Person::players.size(); k++)
if (k != 0 && Person::players[k]->immobile)
Person::players[k]->coords = Person::players[k]->realoldcoords;
- for (int k = 0; k < Person::players.size(); k++) {
+ for (unsigned k = 0; k < Person::players.size(); k++) {
if (!isnormal(Person::players[k]->coords.x) || !isnormal(Person::players[k]->coords.y) || !isnormal(Person::players[k]->coords.z)) {
if (!isnormal(Person::players[k]->coords.x) || !isnormal(Person::players[k]->coords.y) || !isnormal(Person::players[k]->coords.z)) {
Person::players[k]->DoDamage(1000);
@@ -7030,7 +7027,7 @@ void Game::Tick()
static bool movekey;
//?
- for (int i = 0; i < Person::players.size(); i++) {
+ for (unsigned i = 0; i < Person::players.size(); i++) {
static float oldtargetyaw;
if (!Person::players[i]->skeleton.free) {
oldtargetyaw = Person::players[i]->targetyaw;
@@ -7118,7 +7115,7 @@ void Game::Tick()
}
//avoid flaming players
- for (int j = 0; j < Person::players.size(); j++)
+ for (unsigned j = 0; j < Person::players.size(); j++)
if (Person::players[j]->onfire)
if (distsq(&Person::players[j]->coords, &Person::players[i]->coords) < sq(0.3) * 200)
if ( distsq(&Person::players[i]->coords, &Person::players[j]->coords) <
@@ -7201,7 +7198,7 @@ void Game::Tick()
Person::players[i]->isFlip() ||
Person::players[i]->isFlip() ||
Person::players[i]->aitype != playercontrolled)) {
- for (int j = 0; j < weapons.size(); j++) {
+ for (unsigned j = 0; j < weapons.size(); j++) {
if ((weapons[j].velocity.x == 0 && weapons[j].velocity.y == 0 && weapons[j].velocity.z == 0 ||
Person::players[i]->aitype == playercontrolled) &&
weapons[j].owner == -1 &&
@@ -7226,7 +7223,7 @@ void Game::Tick()
Person::players[i]->aitype == playercontrolled) &&
weapons[j].owner == -1 ||
Person::players[i]->victim &&
- weapons[j].owner == Person::players[i]->victim->id)
+ weapons[j].owner == int(Person::players[i]->victim->id))
if (distsqflat(&Person::players[i]->coords, &weapons[j].position) < 2 && Person::players[i]->weaponactive == -1)
if (distsq(&Person::players[i]->coords, &weapons[j].position) < 1 || Person::players[i]->victim) {
if (weapons[j].getType() != staff)
@@ -7254,13 +7251,13 @@ void Game::Tick()
Person::players[i]->throwtogglekeydown = 1;
Person::players[i]->hasvictim = 0;
- for (int k = 0; k < weapons.size(); k++) {
+ for (unsigned k = 0; k < weapons.size(); k++) {
if (Person::players[i]->weaponactive == -1)
if ((weapons[k].velocity.x == 0 && weapons[k].velocity.y == 0 && weapons[k].velocity.z == 0 ||
Person::players[i]->aitype == playercontrolled) &&
weapons[k].owner == -1 ||
Person::players[i]->victim &&
- weapons[k].owner == Person::players[i]->victim->id)
+ weapons[k].owner == int(Person::players[i]->victim->id))
if (distsqflat(&Person::players[i]->coords, &weapons[k].position) < 3 &&
Person::players[i]->weaponactive == -1) {
if (weapons[k].getType() != staff)
@@ -7284,7 +7281,7 @@ void Game::Tick()
Person::players[i]->isIdle() || Person::players[i]->animTarget == rollanim ||
Person::players[i]->animTarget == backhandspringanim) {
if (Person::players.size() > 1)
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
if (Person::players[i]->weaponactive == -1)
if (j != i)
if (Person::players[j]->num_weapons &&
@@ -7391,7 +7388,7 @@ void Game::Tick()
Person::players[i]->animTarget == sneakanim ||
Person::players[i]->isFlip())
if (Person::players.size() > 1)
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
if (i != j)
if (tutoriallevel != 1 || tutorialstage == 49)
if (hostile)
@@ -7455,7 +7452,7 @@ void Game::Tick()
}
Person::players[i]->weaponactive = -1;
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
Person::players[j]->wentforweapon = 0;
}
}
@@ -7552,14 +7549,14 @@ void Game::Tick()
if (i == 0) {
Person::players[i]->superruntoggle = 1;
if (Person::players.size() > 1)
- for (int j = 0; j < Person::players.size(); j++)
+ for (unsigned j = 0; j < Person::players.size(); j++)
if (j != i && !Person::players[j]->skeleton.free && Person::players[j]->aitype == passivetype)
if (distsq(&Person::players[j]->coords, &Person::players[i]->coords) < 16)
Person::players[i]->superruntoggle = 0;
}
if (Person::players.size() > 1)
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
if (j != i && !Person::players[j]->skeleton.free && Person::players[j]->victim && Person::players[i]->lowreversaldelay <= 0) {
if (distsq(&Person::players[j]->coords, &Person::players[j]->victim->coords) < 3 &&
Person::players[j]->victim == Person::players[i] &&
@@ -7603,7 +7600,7 @@ void Game::Tick()
target = -2;
if (Person::players[i]->isCrouch()) {
if (Person::players.size() > 1)
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
if (j != i &&
!Person::players[j]->skeleton.free &&
Person::players[j]->victim &&
@@ -7793,7 +7790,7 @@ void Game::Tick()
//Dodge sweep?
target = -2;
if (Person::players.size() > 1)
- for (int j = 0; j < Person::players.size(); j++) {
+ for (unsigned j = 0; j < Person::players.size(); j++) {
if (j != i && !Person::players[j]->skeleton.free && Person::players[j]->victim) {
if (distsq(&Person::players[j]->coords, &Person::players[j]->victim->coords) < 3 &&
(Person::players[j]->victim == Person::players[i]) &&
@@ -7878,7 +7875,7 @@ void Game::Tick()
}
//Rotation
- for (int k = 0; k < Person::players.size(); k++) {
+ for (unsigned k = 0; k < Person::players.size(); k++) {
if (fabs(Person::players[k]->yaw - Person::players[k]->targetyaw) > 180) {
if (Person::players[k]->yaw > Person::players[k]->targetyaw)
Person::players[k]->yaw -= 360;
@@ -7915,7 +7912,7 @@ void Game::Tick()
}
//do animations
- for (int k = 0; k < Person::players.size(); k++) {
+ for (unsigned k = 0; k < Person::players.size(); k++) {
Person::players[k]->DoAnimations();
Person::players[k]->whichpatchx = Person::players[k]->coords.x / (terrain.size / subdivision * terrain.scale);
Person::players[k]->whichpatchz = Person::players[k]->coords.z / (terrain.size / subdivision * terrain.scale);
@@ -8099,7 +8096,7 @@ void Game::TickOnceAfter()
realthreat = 0;
musictype = leveltheme;
- for (int i = 0; i < Person::players.size(); i++) {
+ for (unsigned i = 0; i < Person::players.size(); i++) {
if ((Person::players[i]->aitype == attacktypecutoff ||
Person::players[i]->aitype == getweapontype ||
Person::players[i]->aitype == gethelptype ||
@@ -8216,7 +8213,7 @@ void Game::TickOnceAfter()
winhotspot = true;
int numalarmed = 0;
- for (int i = 1; i < Person::players.size(); i++)
+ for (unsigned i = 1; i < Person::players.size(); i++)
if (!Person::players[i]->dead && Person::players[i]->aitype == attacktypecutoff && Person::players[i]->surprised <= 0)
numalarmed++;
if (numalarmed > maxalarmed)
@@ -8228,7 +8225,7 @@ void Game::TickOnceAfter()
targetlevel = whichlevel;
}
alldead = true;
- for (int i = 1; i < Person::players.size(); i++) {
+ for (unsigned i = 1; i < Person::players.size(); i++) {
if (!Person::players[i]->dead && Person::players[i]->howactive < typedead1) {
alldead = false;
break;