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 <http://www.gnu.org/licenses/>.
*/
// Enable full math definitions
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);
int closest = -1;
float closestdist = std::numeric_limits<float>::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;
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;
}
}
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;
}
}
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;
}
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;
int closest = -1;
float closestdist = std::numeric_limits<float>::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) {
}
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)
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 &&
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
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;
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() &&
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) &&
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) {
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 ||
//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)
}
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) &&
}
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) {
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 &&
}
}
-void doAI(int i)
+void doAI(unsigned i)
{
static bool connected;
if (Person::players[i]->aitype != playercontrolled && indialogue == -1) {
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)
//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) {
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)
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 &&
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) {
}
//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 &&
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 ||
static int oldmainmenu = mainmenu;
- char sbuf[256];
-
if (Input::MouseClicked() && (selected >= 0)) { // handling of the left mouse clic in menus
set<pair<int,int>>::iterator newscreenresolution;
switch (mainmenu) {
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;
}
}
- 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];
}
}
}
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;
}
}
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);
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;
}
//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) <
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 &&
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)
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)
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 &&
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)
}
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;
}
}
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] &&
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 &&
//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]) &&
}
//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;
}
//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);
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 ||
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)
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;