Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+// Enable full math definitions
+#define _USE_MATH_DEFINES
+
#if PLATFORM_UNIX
#include <sys/stat.h>
#include <sys/types.h>
#include <direct.h>
#endif
+
#include <limits>
#include <ctime>
+#include <cmath>
#include <dirent.h>
#include "Game.h"
#include "openal_wrapper.h"
is >> mapname;
is.ignore(256, ':');
is >> description;
- for (unsigned pos = description.find('_'); pos != string::npos; pos = description.find('_', pos)) {
+ for (size_t pos = description.find('_'); pos != string::npos; pos = description.find('_', pos)) {
description.replace(pos, 1, 1, ' ');
}
is.ignore(256, ':');
fpackf(tfile, "Bb", hotspottext[i][l]);
}
- fpackf(tfile, "Bi", numplayers);
- if (numplayers < maxplayers)
- for (int j = 1; j < numplayers; 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);
- if (Person::players[j]->num_weapons < 5)
- for (int k = 0; k < Person::players[j]->num_weapons; k++)
- fpackf(tfile, "Bi", weapons[Person::players[j]->weaponids[k]].getType());
- if (Person::players[j]->numwaypoints < 30) {
- fpackf(tfile, "Bi", Person::players[j]->numwaypoints);
- for (int k = 0; k < Person::players[j]->numwaypoints; k++) {
- fpackf(tfile, "Bf", Person::players[j]->waypoints[k].x);
- fpackf(tfile, "Bf", Person::players[j]->waypoints[k].y);
- fpackf(tfile, "Bf", Person::players[j]->waypoints[k].z);
- fpackf(tfile, "Bi", Person::players[j]->waypointtype[k]);
- }
- fpackf(tfile, "Bi", Person::players[j]->waypoint);
- } else {
- Person::players[j]->numwaypoints = 0;
- Person::players[j]->waypoint = 0;
- fpackf(tfile, "Bi Bi Bi", Person::players[j]->numwaypoints, Person::players[j]->waypoint, Person::players[j]->waypoint);
- }
-
- fpackf(tfile, "Bf Bf Bf", Person::players[j]->armorhead, Person::players[j]->armorhigh, Person::players[j]->armorlow);
- fpackf(tfile, "Bf Bf Bf", Person::players[j]->protectionhead, Person::players[j]->protectionhigh, Person::players[j]->protectionlow);
- fpackf(tfile, "Bf Bf Bf", Person::players[j]->metalhead, Person::players[j]->metalhigh, Person::players[j]->metallow);
- fpackf(tfile, "Bf Bf", Person::players[j]->power, Person::players[j]->speedmult);
-
- float headprop, bodyprop, armprop, legprop;
- if (Person::players[j]->creature == wolftype) {
- headprop = Person::players[j]->proportionhead.x / 1.1;
- bodyprop = Person::players[j]->proportionbody.x / 1.1;
- armprop = Person::players[j]->proportionarms.x / 1.1;
- legprop = Person::players[j]->proportionlegs.x / 1.1;
- } else if (Person::players[j]->creature == rabbittype) {
- headprop = Person::players[j]->proportionhead.x / 1.2;
- bodyprop = Person::players[j]->proportionbody.x / 1.05;
- armprop = Person::players[j]->proportionarms.x / 1.00;
- legprop = Person::players[j]->proportionlegs.x / 1.1;
- }
-
- fpackf(tfile, "Bf Bf Bf Bf", headprop, bodyprop, armprop, legprop);
-
- fpackf(tfile, "Bi", Person::players[j]->numclothes);
- if (Person::players[j]->numclothes)
- for (int k = 0; k < Person::players[j]->numclothes; k++) {
- int templength;
- templength = strlen(Person::players[j]->clothes[k]);
- fpackf(tfile, "Bi", templength);
- for (int l = 0; l < templength; l++)
- fpackf(tfile, "Bb", Person::players[j]->clothes[k][l]);
- fpackf(tfile, "Bf Bf Bf", Person::players[j]->clothestintr[k], Person::players[j]->clothestintg[k], Person::players[j]->clothestintb[k]);
- }
+ fpackf(tfile, "Bi", Person::players.size());
+ if (Person::players.size() > maxplayers) {
+ cout << "Warning: this level contains more players than allowed" << endl;
+ }
+ for (int 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);
+ if (Person::players[j]->num_weapons < 5)
+ for (int k = 0; k < Person::players[j]->num_weapons; k++)
+ fpackf(tfile, "Bi", weapons[Person::players[j]->weaponids[k]].getType());
+ if (Person::players[j]->numwaypoints < 30) {
+ fpackf(tfile, "Bi", Person::players[j]->numwaypoints);
+ for (int k = 0; k < Person::players[j]->numwaypoints; k++) {
+ fpackf(tfile, "Bf", Person::players[j]->waypoints[k].x);
+ fpackf(tfile, "Bf", Person::players[j]->waypoints[k].y);
+ fpackf(tfile, "Bf", Person::players[j]->waypoints[k].z);
+ fpackf(tfile, "Bi", Person::players[j]->waypointtype[k]);
+ }
+ fpackf(tfile, "Bi", Person::players[j]->waypoint);
+ } else {
+ Person::players[j]->numwaypoints = 0;
+ Person::players[j]->waypoint = 0;
+ fpackf(tfile, "Bi Bi Bi", Person::players[j]->numwaypoints, Person::players[j]->waypoint, Person::players[j]->waypoint);
+ }
+
+ fpackf(tfile, "Bf Bf Bf", Person::players[j]->armorhead, Person::players[j]->armorhigh, Person::players[j]->armorlow);
+ fpackf(tfile, "Bf Bf Bf", Person::players[j]->protectionhead, Person::players[j]->protectionhigh, Person::players[j]->protectionlow);
+ fpackf(tfile, "Bf Bf Bf", Person::players[j]->metalhead, Person::players[j]->metalhigh, Person::players[j]->metallow);
+ fpackf(tfile, "Bf Bf", Person::players[j]->power, Person::players[j]->speedmult);
+
+ float headprop, bodyprop, armprop, legprop;
+ if (Person::players[j]->creature == wolftype) {
+ headprop = Person::players[j]->proportionhead.x / 1.1;
+ bodyprop = Person::players[j]->proportionbody.x / 1.1;
+ armprop = Person::players[j]->proportionarms.x / 1.1;
+ legprop = Person::players[j]->proportionlegs.x / 1.1;
+ } else if (Person::players[j]->creature == rabbittype) {
+ headprop = Person::players[j]->proportionhead.x / 1.2;
+ bodyprop = Person::players[j]->proportionbody.x / 1.05;
+ armprop = Person::players[j]->proportionarms.x / 1.00;
+ legprop = Person::players[j]->proportionlegs.x / 1.1;
}
+ fpackf(tfile, "Bf Bf Bf Bf", headprop, bodyprop, armprop, legprop);
+
+ fpackf(tfile, "Bi", Person::players[j]->numclothes);
+ if (Person::players[j]->numclothes)
+ for (int k = 0; k < Person::players[j]->numclothes; k++) {
+ int templength;
+ templength = strlen(Person::players[j]->clothes[k]);
+ fpackf(tfile, "Bi", templength);
+ for (int l = 0; l < templength; l++)
+ fpackf(tfile, "Bb", Person::players[j]->clothes[k][l]);
+ fpackf(tfile, "Bf Bf Bf", Person::players[j]->clothestintr[k], Person::players[j]->clothestintg[k], Person::players[j]->clothestintb[k]);
+ }
+ }
+
fpackf(tfile, "Bi", numpathpoints);
for (int j = 0; j < numpathpoints; j++) {
fpackf(tfile, "Bf Bf Bf Bi", pathpoint[j].x, pathpoint[j].y, pathpoint[j].z, numpathpointconnect[j]);
int closest = -1;
float closestdist = std::numeric_limits<float>::max();
- for (int i = 1; i < numplayers; i++) {
+ for (int 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_cellophane(const char *args)
{
cellophane = !cellophane;
- float mul = cellophane ? 0 : 1;
+ float mul = (cellophane ? 0 : 1);
- for (int i = 0; i < numplayers; i++) {
- Person::players[i]->proportionhead.z = Person::players[i]->proportionhead.x * mul;
- Person::players[i]->proportionbody.z = Person::players[i]->proportionbody.x * mul;
- Person::players[i]->proportionarms.z = Person::players[i]->proportionarms.x * mul;
- Person::players[i]->proportionlegs.z = Person::players[i]->proportionlegs.x * mul;
+ for (auto player : Person::players) {
+ player->proportionhead.z = player->proportionhead.x * mul;
+ player->proportionbody.z = player->proportionbody.x * mul;
+ player->proportionarms.z = player->proportionarms.x * mul;
+ player->proportionlegs.z = player->proportionlegs.x * mul;
}
}
static void ch_sizemin(const char *args)
{
- for (int i = 1; i < numplayers; i++)
+ for (int 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 < numplayers; j++) {
+ for (int 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 < numplayers; i++)
+ for (int i = 1; i < Person::players.size(); i++)
Person::players[i]->immobile = 1;
}
if (!accountactive)
return;
ifstream ipstream(ConvertFileName((":Data:Campaigns:" + accountactive->getCurrentCampaign() + ".txt").c_str()));
+ if (!ipstream.good()) {
+ if (accountactive->getCurrentCampaign() == "main") {
+ cerr << "Could not found main campaign!" << endl;
+ return;
+ }
+ cerr << "Could not found campaign \"" << accountactive->getCurrentCampaign() << "\", falling back to main." << endl;
+ accountactive->setCurrentCampaign("main");
+ return LoadCampaign();
+ }
ipstream.ignore(256, ':');
int numlevels;
ipstream >> numlevels;
if (visibleloading)
LoadingScreen();
- //mapcenter=objects.center;
- //mapradius=objects.radius;
+ int numplayers;
funpackf(tfile, "Bi", &numplayers);
int howmanyremoved = 0;
bool removeanother = 0;
- if (numplayers > 1 && numplayers < maxplayers) {
+ 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<Person>(new Person()));
if (visibleloading)
LoadingScreen();
numplayers -= howmanyremoved;
+ Person::players.resize(numplayers);
+
funpackf(tfile, "Bi", &numpathpoints);
if (numpathpoints > 30 || numpathpoints < 0)
numpathpoints = 0;
fclose(tfile);
- if (numplayers > maxplayers - 1)
- numplayers = maxplayers - 1;
- for (int i = 0; i < numplayers; i++) {
+ for (int i = 0; i < Person::players.size(); i++) {
if (visibleloading)
LoadingScreen();
Person::players[i]->burnt = 0;
Person::players[0]->aitype = playercontrolled;
Person::players[0]->weaponactive = -1;
- if (difficulty == 1)
+ if (difficulty == 1) {
Person::players[0]->power = 1 / .9;
-
- if (difficulty == 0)
- Person::players[0]->power = 1 / .8;
-
- if (difficulty == 1)
Person::players[0]->damagetolerance = 250;
- if (difficulty == 0)
+ } else if (difficulty == 0) {
+ Person::players[0]->power = 1 / .8;
Person::players[0]->damagetolerance = 300;
- if (difficulty == 0)
Person::players[0]->armorhead *= 1.5;
- if (difficulty == 0)
Person::players[0]->armorhigh *= 1.5;
- if (difficulty == 0)
Person::players[0]->armorlow *= 1.5;
+ }
+
cameraloc = Person::players[0]->coords;
cameraloc.y += 5;
yaw = Person::players[0]->yaw;
LOG("Starting background music...");
OPENAL_StopSound(OPENAL_ALL);
- if (environment == snowyenvironment) {
- if (ambientsound)
+ if (ambientsound) {
+ if (environment == snowyenvironment) {
emit_stream_np(stream_wind);
- } else if (environment == desertenvironment) {
- if (ambientsound)
+ } else if (environment == desertenvironment) {
emit_stream_np(stream_desertambient);
- } else if (environment == grassyenvironment) {
- if (ambientsound)
+ } else if (environment == grassyenvironment) {
emit_stream_np(stream_wind, 100.);
+ }
}
oldmusicvolume[0] = 0;
oldmusicvolume[1] = 0;
{
float headprop, bodyprop, armprop, legprop;
if (debugmode) {
- if (Input::isKeyPressed(SDLK_h)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_H)) {
Person::players[0]->damagetolerance = 200000;
Person::players[0]->damage = 0;
Person::players[0]->burnt = 0;
Person::players[0]->superpermanentdamage = 0;
}
- if (Input::isKeyPressed(SDLK_j)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_J)) {
environment++;
if (environment > 2)
environment = 0;
Setenvironment(environment);
}
- if (Input::isKeyPressed(SDLK_c)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_C)) {
cameramode = 1 - cameramode;
}
- if (Input::isKeyPressed(SDLK_x) && !Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_X) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
if (Person::players[0]->num_weapons > 0) {
if (weapons[Person::players[0]->weaponids[0]].getType() == sword)
weapons[Person::players[0]->weaponids[0]].setType(staff);
}
}
- if (Input::isKeyPressed(SDLK_x) && Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_X) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
int closest = findClosestPlayer();
if (closest >= 0) {
if (Person::players[closest]->num_weapons) {
}
}
- if (Input::isKeyDown(SDLK_u)) {
+ if (Input::isKeyDown(SDL_SCANCODE_U)) {
int closest = findClosestPlayer();
if (closest >= 0) {
Person::players[closest]->yaw += multiplier * 50;
}
- if (Input::isKeyPressed(SDLK_o) && !Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_O) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
int closest = findClosestPlayer();
- if (Input::isKeyDown(SDLK_LCTRL))
+ if (Input::isKeyDown(SDL_SCANCODE_LCTRL))
closest = 0;
if (closest >= 0) {
}
}
- if (Input::isKeyPressed(SDLK_o) && Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_O) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
int closest = findClosestPlayer();
if (closest >= 0) {
if (Person::players[closest]->creature == wolftype) {
}
}
- if (Input::isKeyPressed(SDLK_b) && !Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_B) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
slomo = 1 - slomo;
slomodelay = 1000;
}
- if (((Input::isKeyPressed(SDLK_i) && !Input::isKeyDown(SDLK_LSHIFT)))) {
+ if (((Input::isKeyPressed(SDL_SCANCODE_I) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)))) {
int closest = -1;
float closestdist = std::numeric_limits<float>::max();
- for (int i = 1; i < numplayers; i++) {
+ for (int 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) {
}
}
- if (((Input::isKeyPressed(SDLK_i) && Input::isKeyDown(SDLK_LSHIFT)))) {
+ if (((Input::isKeyPressed(SDL_SCANCODE_I) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)))) {
int closest = findClosestPlayer();
XYZ flatfacing2, flatvelocity2;
XYZ blah;
}
XYZ temppos;
- for (int j = 0; j < numplayers; j++) {
+ for (int j = 0; j < Person::players.size(); j++) {
if (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 (Input::isKeyPressed(SDLK_f)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_F)) {
Person::players[0]->onfire = 1 - Person::players[0]->onfire;
if (Person::players[0]->onfire) {
Person::players[0]->CatchFire();
}
}
- if (Input::isKeyPressed(SDLK_n) && !Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_N) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
//if(!Person::players[0]->skeleton.free)Person::players[0]->damage+=500;
Person::players[0]->RagDoll(0);
//Person::players[0]->spurt=1;
emit_sound_at(whooshsound, Person::players[0]->coords, 128.);
}
- if (Input::isKeyPressed(SDLK_n) && Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_N) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
for (int i = 0; i < objects.numobjects; i++) {
if (objects.type[i] == treeleavestype) {
objects.scale[i] *= .9;
}
}
- if (Input::isKeyPressed(SDLK_m) && Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_M) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
editorenabled = 1 - editorenabled;
if (editorenabled) {
Person::players[0]->damagetolerance = 100000;
}
//skip level
- if (whichlevel != -2 && Input::isKeyPressed(SDLK_k) && Input::isKeyDown(SDLK_LSHIFT) && !editorenabled) {
+ if (whichlevel != -2 && Input::isKeyPressed(SDL_SCANCODE_K) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !editorenabled) {
targetlevel++;
if (targetlevel > numchallengelevels - 1)
targetlevel = 0;
}
if (editorenabled) {
- if (Input::isKeyPressed(SDLK_DELETE) && Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
int closest = findClosestPlayer();
if (closest >= 0) {
- //player[closest]=player[numplayers-1];
- //Person::players[closest]->skeleton=Person::players[numplayers-1]->skeleton;
- numplayers--;
+ Person::players.erase(Person::players.begin()+closest);
}
}
- if (Input::isKeyPressed(SDLK_DELETE) && Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
int closest = findClosestObject();
if (closest >= 0)
objects.position[closest].y -= 500;
}
- if (Input::isKeyPressed(SDLK_m) && Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_M) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
//drawmode++;
//if(drawmode>2)drawmode=0;
if (objects.numobjects < max_objects - 1) {
}
}
- if (Input::isKeyPressed(SDLK_p) && Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
- if (numplayers < maxplayers - 1) {
- Person::players[numplayers]->scale = .2 * 5 * Person::players[0]->scale;
- Person::players[numplayers]->creature = rabbittype;
- Person::players[numplayers]->howactive = editoractive;
- Person::players[numplayers]->skeleton.id = numplayers;
- Person::players[numplayers]->skeleton.Load((char *)":Data:Skeleton:Basic Figure", (char *)":Data:Skeleton:Basic Figurelow", (char *)":Data:Skeleton:Rabbitbelt", (char *)":Data:Models:Body.solid", (char *)":Data:Models:Body2.solid", (char *)":Data:Models:Body3.solid", (char *)":Data:Models:Body4.solid", (char *)":Data:Models:Body5.solid", (char *)":Data:Models:Body6.solid", (char *)":Data:Models:Body7.solid", (char *)":Data:Models:Bodylow.solid", (char *)":Data:Models:Belt.solid", 1);
-
- //texsize=512*512*3/texdetail/texdetail;
- //if(!Person::players[numplayers]->loaded)Person::players[numplayers]->skeleton.skinText = new GLubyte[texsize];
- //Person::players[numplayers]->skeleton.skinText.resize(texsize);
-
- int k = abs(Random() % 2) + 1;
- if (k == 0) {
- Person::players[numplayers]->skeleton.drawmodel.textureptr.load(":Data:Textures:Fur3.jpg", 1, &Person::players[numplayers]->skeleton.skinText[0], &Person::players[numplayers]->skeleton.skinsize);
- Person::players[numplayers]->whichskin = 0;
- } else if (k == 1) {
- Person::players[numplayers]->skeleton.drawmodel.textureptr.load(":Data:Textures:Fur.jpg", 1, &Person::players[numplayers]->skeleton.skinText[0], &Person::players[numplayers]->skeleton.skinsize);
- Person::players[numplayers]->whichskin = 1;
- } else {
- Person::players[numplayers]->skeleton.drawmodel.textureptr.load(":Data:Textures:Fur2.jpg", 1, &Person::players[numplayers]->skeleton.skinText[0], &Person::players[numplayers]->skeleton.skinsize);
- Person::players[numplayers]->whichskin = 2;
- }
+ 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[numplayers]->skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png", 1, 1);
- Person::players[numplayers]->power = 1;
- Person::players[numplayers]->speedmult = 1;
- Person::players[numplayers]->animCurrent = bounceidleanim;
- Person::players[numplayers]->animTarget = bounceidleanim;
- Person::players[numplayers]->frameCurrent = 0;
- Person::players[numplayers]->frameTarget = 1;
- Person::players[numplayers]->target = 0;
- Person::players[numplayers]->bled = 0;
- Person::players[numplayers]->speed = 1 + (float)(Random() % 100) / 1000;
-
- Person::players[numplayers]->targetyaw = Person::players[0]->targetyaw;
- Person::players[numplayers]->yaw = Person::players[0]->yaw;
-
- Person::players[numplayers]->velocity = 0;
- Person::players[numplayers]->coords = Person::players[0]->coords;
- Person::players[numplayers]->oldcoords = Person::players[numplayers]->coords;
- Person::players[numplayers]->realoldcoords = Person::players[numplayers]->coords;
-
- Person::players[numplayers]->id = numplayers;
- Person::players[numplayers]->skeleton.id = numplayers;
- Person::players[numplayers]->updatedelay = 0;
- Person::players[numplayers]->normalsupdatedelay = 0;
-
- Person::players[numplayers]->aitype = passivetype;
-
- if (Person::players[0]->creature == wolftype) {
- headprop = Person::players[0]->proportionhead.x / 1.1;
- bodyprop = Person::players[0]->proportionbody.x / 1.1;
- armprop = Person::players[0]->proportionarms.x / 1.1;
- legprop = Person::players[0]->proportionlegs.x / 1.1;
- }
+ Person::players.back()->scale = .2 * 5 * 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 *)":Data:Skeleton:Basic Figure", (char *)":Data:Skeleton:Basic Figurelow", (char *)":Data:Skeleton:Rabbitbelt", (char *)":Data:Models:Body.solid", (char *)":Data:Models:Body2.solid", (char *)":Data:Models:Body3.solid", (char *)":Data:Models:Body4.solid", (char *)":Data:Models:Body5.solid", (char *)":Data:Models:Body6.solid", (char *)":Data:Models:Body7.solid", (char *)":Data:Models:Bodylow.solid", (char *)":Data:Models:Belt.solid", 1);
+
+ int k = abs(Random() % 2) + 1;
+ if (k == 0) {
+ Person::players.back()->skeleton.drawmodel.textureptr.load(":Data: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(":Data: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(":Data:Textures:Fur2.jpg", 1, &Person::players.back()->skeleton.skinText[0], &Person::players.back()->skeleton.skinsize);
+ Person::players.back()->whichskin = 2;
+ }
- if (Person::players[0]->creature == rabbittype) {
- headprop = Person::players[0]->proportionhead.x / 1.2;
- bodyprop = Person::players[0]->proportionbody.x / 1.05;
- armprop = Person::players[0]->proportionarms.x / 1.00;
- legprop = Person::players[0]->proportionlegs.x / 1.1;
- }
+ Person::players.back()->skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png", 1, 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;
+ armprop = Person::players[0]->proportionarms.x / 1.1;
+ legprop = Person::players[0]->proportionlegs.x / 1.1;
+ }
- if (Person::players[numplayers]->creature == wolftype) {
- Person::players[numplayers]->proportionhead = 1.1 * headprop;
- Person::players[numplayers]->proportionbody = 1.1 * bodyprop;
- Person::players[numplayers]->proportionarms = 1.1 * armprop;
- Person::players[numplayers]->proportionlegs = 1.1 * legprop;
- }
+ if (Person::players[0]->creature == rabbittype) {
+ headprop = Person::players[0]->proportionhead.x / 1.2;
+ bodyprop = Person::players[0]->proportionbody.x / 1.05;
+ armprop = Person::players[0]->proportionarms.x / 1.00;
+ legprop = Person::players[0]->proportionlegs.x / 1.1;
+ }
- if (Person::players[numplayers]->creature == rabbittype) {
- Person::players[numplayers]->proportionhead = 1.2 * headprop;
- Person::players[numplayers]->proportionbody = 1.05 * bodyprop;
- Person::players[numplayers]->proportionarms = 1.00 * armprop;
- Person::players[numplayers]->proportionlegs = 1.1 * legprop;
- Person::players[numplayers]->proportionlegs.y = 1.05 * legprop;
- }
+ if (Person::players.back()->creature == wolftype) {
+ Person::players.back()->proportionhead = 1.1 * headprop;
+ Person::players.back()->proportionbody = 1.1 * bodyprop;
+ Person::players.back()->proportionarms = 1.1 * armprop;
+ Person::players.back()->proportionlegs = 1.1 * legprop;
+ }
- Person::players[numplayers]->headless = 0;
- Person::players[numplayers]->onfire = 0;
+ if (Person::players.back()->creature == rabbittype) {
+ Person::players.back()->proportionhead = 1.2 * headprop;
+ Person::players.back()->proportionbody = 1.05 * bodyprop;
+ Person::players.back()->proportionarms = 1.00 * armprop;
+ Person::players.back()->proportionlegs = 1.1 * legprop;
+ Person::players.back()->proportionlegs.y = 1.05 * legprop;
+ }
- if (cellophane) {
- Person::players[numplayers]->proportionhead.z = 0;
- Person::players[numplayers]->proportionbody.z = 0;
- Person::players[numplayers]->proportionarms.z = 0;
- Person::players[numplayers]->proportionlegs.z = 0;
- }
+ Person::players.back()->headless = 0;
+ Person::players.back()->onfire = 0;
- Person::players[numplayers]->tempanimation.Load((char *)"Tempanim", 0, 0);
-
- Person::players[numplayers]->damagetolerance = 200;
-
- Person::players[numplayers]->protectionhead = Person::players[0]->protectionhead;
- Person::players[numplayers]->protectionhigh = Person::players[0]->protectionhigh;
- Person::players[numplayers]->protectionlow = Person::players[0]->protectionlow;
- Person::players[numplayers]->armorhead = Person::players[0]->armorhead;
- Person::players[numplayers]->armorhigh = Person::players[0]->armorhigh;
- Person::players[numplayers]->armorlow = Person::players[0]->armorlow;
- Person::players[numplayers]->metalhead = Person::players[0]->metalhead;
- Person::players[numplayers]->metalhigh = Person::players[0]->metalhigh;
- Person::players[numplayers]->metallow = Person::players[0]->metallow;
-
- Person::players[numplayers]->immobile = Person::players[0]->immobile;
-
- Person::players[numplayers]->numclothes = Person::players[0]->numclothes;
- if (Person::players[numplayers]->numclothes)
- for (int i = 0; i < Person::players[numplayers]->numclothes; i++) {
- strcpy(Person::players[numplayers]->clothes[i], Person::players[0]->clothes[i]);
- Person::players[numplayers]->clothestintr[i] = Person::players[0]->clothestintr[i];
- Person::players[numplayers]->clothestintg[i] = Person::players[0]->clothestintg[i];
- Person::players[numplayers]->clothestintb[i] = Person::players[0]->clothestintb[i];
- tintr = Person::players[numplayers]->clothestintr[i];
- tintg = Person::players[numplayers]->clothestintg[i];
- tintb = Person::players[numplayers]->clothestintb[i];
- AddClothes((char *)Person::players[numplayers]->clothes[i], &Person::players[numplayers]->skeleton.skinText[0]);
- }
- if (Person::players[numplayers]->numclothes) {
- Person::players[numplayers]->DoMipmaps();
- }
+ if (cellophane) {
+ Person::players.back()->proportionhead.z = 0;
+ Person::players.back()->proportionbody.z = 0;
+ Person::players.back()->proportionarms.z = 0;
+ Person::players.back()->proportionlegs.z = 0;
+ }
- Person::players[numplayers]->power = Person::players[0]->power;
- Person::players[numplayers]->speedmult = Person::players[0]->speedmult;
-
- Person::players[numplayers]->damage = 0;
- Person::players[numplayers]->permanentdamage = 0;
- Person::players[numplayers]->superpermanentdamage = 0;
- Person::players[numplayers]->deathbleeding = 0;
- Person::players[numplayers]->bleeding = 0;
- Person::players[numplayers]->numwaypoints = 0;
- Person::players[numplayers]->waypoint = 0;
- Person::players[numplayers]->jumppath = 0;
- Person::players[numplayers]->weaponstuck = -1;
- Person::players[numplayers]->weaponactive = -1;
- Person::players[numplayers]->num_weapons = 0;
- Person::players[numplayers]->bloodloss = 0;
- Person::players[numplayers]->dead = 0;
-
- Person::players[numplayers]->loaded = 1;
-
- numplayers++;
+ Person::players.back()->tempanimation.Load((char *)"Tempanim", 0, 0);
+
+ Person::players.back()->damagetolerance = 200;
+
+ Person::players.back()->protectionhead = Person::players[0]->protectionhead;
+ Person::players.back()->protectionhigh = Person::players[0]->protectionhigh;
+ Person::players.back()->protectionlow = Person::players[0]->protectionlow;
+ Person::players.back()->armorhead = Person::players[0]->armorhead;
+ Person::players.back()->armorhigh = Person::players[0]->armorhigh;
+ Person::players.back()->armorlow = Person::players[0]->armorlow;
+ Person::players.back()->metalhead = Person::players[0]->metalhead;
+ Person::players.back()->metalhigh = Person::players[0]->metalhigh;
+ Person::players.back()->metallow = Person::players[0]->metallow;
+
+ Person::players.back()->immobile = Person::players[0]->immobile;
+
+ Person::players.back()->numclothes = Person::players[0]->numclothes;
+ if (Person::players.back()->numclothes)
+ for (int i = 0; i < Person::players.back()->numclothes; i++) {
+ strcpy(Person::players.back()->clothes[i], Person::players[0]->clothes[i]);
+ Person::players.back()->clothestintr[i] = Person::players[0]->clothestintr[i];
+ Person::players.back()->clothestintg[i] = Person::players[0]->clothestintg[i];
+ Person::players.back()->clothestintb[i] = Person::players[0]->clothestintb[i];
+ tintr = Person::players.back()->clothestintr[i];
+ tintg = Person::players.back()->clothestintg[i];
+ tintb = Person::players.back()->clothestintb[i];
+ AddClothes((char *)Person::players.back()->clothes[i], &Person::players.back()->skeleton.skinText[0]);
+ }
+ if (Person::players.back()->numclothes) {
+ Person::players.back()->DoMipmaps();
}
- }
- if (Input::isKeyPressed(SDLK_p) && Input::isKeyDown(SDLK_LSHIFT)) {
- if (Person::players[numplayers - 1]->numwaypoints < 90) {
- Person::players[numplayers - 1]->waypoints[Person::players[numplayers - 1]->numwaypoints] = Person::players[0]->coords;
- Person::players[numplayers - 1]->waypointtype[Person::players[numplayers - 1]->numwaypoints] = editorpathtype;
- Person::players[numplayers - 1]->numwaypoints++;
+ 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()->jumppath = 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;
+ }
+
+ if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
+ if (Person::players.back()->numwaypoints < 90) {
+ Person::players.back()->waypoints[Person::players.back()->numwaypoints] = Person::players[0]->coords;
+ Person::players.back()->waypointtype[Person::players.back()->numwaypoints] = editorpathtype;
+ Person::players.back()->numwaypoints++;
}
}
- if (Input::isKeyPressed(SDLK_p) && Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_P) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
if (numpathpoints < 30) {
bool connected, alreadyconnected;
connected = 0;
}
}
- if (Input::isKeyPressed(SDLK_PERIOD)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_PERIOD)) {
pathpointselected++;
if (pathpointselected >= numpathpoints)
pathpointselected = -1;
}
- if (Input::isKeyPressed(SDLK_COMMA) && !Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_COMMA) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
pathpointselected--;
if (pathpointselected <= -2)
pathpointselected = numpathpoints - 1;
}
- if (Input::isKeyPressed(SDLK_COMMA) && Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_COMMA) && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
if (pathpointselected != -1) {
numpathpoints--;
pathpoint[pathpointselected] = pathpoint[numpathpoints];
}
}
- if (Input::isKeyPressed(SDLK_LEFT) && Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_LEFT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editortype--;
if (editortype == treeleavestype || editortype == 10)
editortype--;
editortype = firetype;
}
- if (Input::isKeyPressed(SDLK_RIGHT) && Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_RIGHT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editortype++;
if (editortype == treeleavestype || editortype == 10)
editortype++;
editortype = 0;
}
- if (Input::isKeyDown(SDLK_LEFT) && !Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyDown(SDL_SCANCODE_LEFT) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editoryaw -= multiplier * 100;
if (editoryaw < -.01)
editoryaw = -.01;
}
- if (Input::isKeyDown(SDLK_RIGHT) && !Input::isKeyDown(SDLK_LSHIFT) && !Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyDown(SDL_SCANCODE_RIGHT) && !Input::isKeyDown(SDL_SCANCODE_LSHIFT) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editoryaw += multiplier * 100;
}
- if (Input::isKeyDown(SDLK_UP) && !Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyDown(SDL_SCANCODE_UP) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editorsize += multiplier;
}
- if (Input::isKeyDown(SDLK_DOWN) && !Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyDown(SDL_SCANCODE_DOWN) && !Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editorsize -= multiplier;
if (editorsize < .1)
editorsize = .1;
}
- if (Input::isKeyPressed(SDLK_LEFT) && Input::isKeyDown(SDLK_LSHIFT) && Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_LEFT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
mapradius -= multiplier * 10;
}
- if (Input::isKeyPressed(SDLK_RIGHT) && Input::isKeyDown(SDLK_LSHIFT) && Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_RIGHT) && Input::isKeyDown(SDL_SCANCODE_LSHIFT) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
mapradius += multiplier * 10;
}
- if (Input::isKeyDown(SDLK_UP) && Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyDown(SDL_SCANCODE_UP) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editorpitch += multiplier * 100;
}
- if (Input::isKeyDown(SDLK_DOWN) && Input::isKeyDown(SDLK_LCTRL)) {
+ if (Input::isKeyDown(SDL_SCANCODE_DOWN) && Input::isKeyDown(SDL_SCANCODE_LCTRL)) {
editorpitch -= multiplier * 100;
if (editorpitch < -.01)
editorpitch = -.01;
}
- if (Input::isKeyPressed(SDLK_DELETE) && objects.numobjects && Input::isKeyDown(SDLK_LSHIFT)) {
+ if (Input::isKeyPressed(SDL_SCANCODE_DELETE) && objects.numobjects && Input::isKeyDown(SDL_SCANCODE_LSHIFT)) {
int closest = findClosestObject();
if (closest >= 0)
objects.DeleteObject(closest);
void doJumpReversals()
{
- for (int k = 0; k < numplayers; k++)
- for (int i = k; i < numplayers; i++) {
+ for (int k = 0; k < Person::players.size(); k++)
+ for (int i = k; i < Person::players.size(); i++) {
if (i == k)
continue;
if ( Person::players[k]->skeleton.free == 0 &&
void doAerialAcrobatics()
{
static XYZ facing, flatfacing;
- for (int k = 0; k < numplayers; k++) {
+ for (int 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 < numplayers; k++) {
+ for (int 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 < numplayers; k++) {
+ for (int 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 < numplayers; i++) {
+ for (int i = 0; i < Person::players.size(); i++) {
if (i == k)
continue;
if (Person::players[i]->animTarget == swordslashanim ||
const int attackweapon = Person::players[k]->weaponactive == -1 ? 0 : weapons[Person::players[k]->weaponids[Person::players[k]->weaponactive]].getType();
//normal attacks (?)
Person::players[k]->hasvictim = 0;
- if (numplayers > 1)
- for (int i = 0; i < numplayers; i++) {
+ if (Person::players.size() > 1)
+ for (int 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 && numplayers > 1)
- for (int i = 0; i < numplayers; i++) {
+ if (k == 0 && Person::players.size() > 1)
+ for (int 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 < numplayers; i++) {
+ for (int 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 (numplayers > 1)
- for (int k = 0; k < numplayers; k++)
- for (int i = k + 1; i < numplayers; i++) {
+ if (Person::players.size() > 1)
+ for (int k = 0; k < Person::players.size(); k++)
+ for (int 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 &&
if (Person::players[i]->losupdatedelay < 0 && !editorenabled && Person::players[i]->occluded < 2) {
Person::players[i]->losupdatedelay = .2;
- for (int j = 0; j < numplayers; j++)
+ for (int 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 < numplayers; j++) {
+ for (int 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 < numplayers; j++) {
+ for (int 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 < numplayers; k++) {
+ for (int 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 &&
Person::players[i]->isCrouch() ||
Person::players[i]->isRun())) {
int target = -2;
- for (int j = 0; j < numplayers; j++)
+ for (int j = 0; j < Person::players.size(); j++)
if (j != i && !Person::players[j]->skeleton.free &&
Person::players[j]->hasvictim &&
(tutoriallevel == 1 && reversaltrain ||
mainmenu = 5;
else
mainmenu = 1;
- for (int j = 0; j < 255; j++) {
- displaytext[0][j] = 0;
- }
- displaychars[0] = 0;
+ displaytext[0].clear();
displayselected = 0;
entername = 0;
}
}
}
- if (Input::isKeyDown(SDLK_q) && Input::isKeyDown(SDLK_LMETA)) {
+ if (Input::isKeyDown(SDL_SCANCODE_Q) && Input::isKeyDown(SDL_SCANCODE_LGUI)) {
tryquit = 1;
if (mainmenu == 3) {
SaveSettings();
OPENAL_SetFrequency(channels[stream_menutheme], 22050);
if (entername) {
- inputText(displaytext[0], &displayselected, &displaychars[0]);
+ inputText(displaytext[0], &displayselected);
if (!waiting) { // the input as finished
- if (displaychars[0]) { // with enter
+ if (!displaytext[0].empty()) { // with enter
accountactive = Account::add(string(displaytext[0]));
mainmenu = 8;
fireSound(firestartsound);
- for (int i = 0; i < 255; i++) {
- displaytext[0][i] = 0;
- }
- displaychars[0] = 0;
+ displaytext[0].clear();
displayselected = 0;
}
keyboardfrozen = false;
Input::Tick();
- if (Input::isKeyPressed(SDLK_F6)) {
- if (Input::isKeyDown(SDLK_LSHIFT))
+ if (Input::isKeyPressed(SDL_SCANCODE_F6)) {
+ if (Input::isKeyDown(SDL_SCANCODE_LSHIFT))
stereoreverse = true;
else
stereoreverse = false;
printf("Stereo unreversed\n");
}
- if (Input::isKeyDown(SDLK_F7)) {
- if (Input::isKeyDown(SDLK_LSHIFT))
+ if (Input::isKeyDown(SDL_SCANCODE_F7)) {
+ if (Input::isKeyDown(SDL_SCANCODE_LSHIFT))
stereoseparation -= 0.001;
else
stereoseparation -= 0.010;
printf("Stereo decreased increased to %f\n", stereoseparation);
}
- if (Input::isKeyDown(SDLK_F8)) {
- if (Input::isKeyDown(SDLK_LSHIFT))
+ if (Input::isKeyDown(SDL_SCANCODE_F8)) {
+ if (Input::isKeyDown(SDL_SCANCODE_LSHIFT))
stereoseparation += 0.001;
else
stereoseparation += 0.010;
}
- if (Input::isKeyPressed(SDLK_TAB) && tutoriallevel) {
+ if (Input::isKeyPressed(SDL_SCANCODE_TAB) && tutoriallevel) {
if (tutorialstage != 51)
tutorialstagetime = tutorialmaxtime;
emit_sound_np(consolefailsound, 128.);
LoadMenu();
}
//escape key pressed
- if (Input::isKeyPressed(SDLK_ESCAPE) &&
+ if (Input::isKeyPressed(SDL_SCANCODE_ESCAPE) &&
(gameon || mainmenu == 0 || (mainmenu >= 3 && mainmenu != 8 && !(mainmenu == 7 && entername)))) {
selected = -1;
if (mainmenu == 0 && !winfreeze)
leveltime += multiplier;
//keys
- if (Input::isKeyPressed(SDLK_v) && debugmode) {
+ if (Input::isKeyPressed(SDL_SCANCODE_V) && debugmode) {
freeze = 1 - freeze;
if (freeze) {
OPENAL_SetFrequency(OPENAL_ALL, 0.001);
chatting = 1;
if (chatting) {
- inputText(displaytext[0], &displayselected, &displaychars[0]);
+ inputText(displaytext[0], &displayselected);
if (!waiting) {
- if (displaychars[0]) {
- for (int j = 0; j < 255; j++)
- displaytext[0][j] = 0;
- displaychars[0] = 0;
+ if (!displaytext[0].empty()) {
+ displaytext[0].clear();
displayselected = 0;
}
chatting = 0;
if (console)
freeze = 1;
- if (console && !Input::isKeyDown(SDLK_LMETA)) {
- inputText(consoletext[0], &consoleselected, &consolechars[0]);
+ if (console && !Input::isKeyDown(SDL_SCANCODE_LGUI)) {
+ inputText(consoletext[0], &consoleselected);
if (!waiting) {
- if (consolechars[0] > 0) {
- consoletext[0][consolechars[0]] = '\0';
+ if (!consoletext[0].empty()) {
cmd_dispatch(consoletext[0]);
for (int k = 14; k >= 1; k--) {
- for (int j = 0; j < 255; j++)
- consoletext[k][j] = consoletext[k - 1][j];
- consolechars[k] = consolechars[k - 1];
+ consoletext[k] = consoletext[k - 1];
}
- for (int j = 0; j < 255; j++)
- consoletext[0][j] = 0;
- consolechars[0] = 0;
+ consoletext[0].clear();
consoleselected = 0;
}
}
- if (Input::isKeyDown(SDLK_q) && Input::isKeyDown(SDLK_LMETA)) {
+ if (Input::isKeyDown(SDL_SCANCODE_Q) && Input::isKeyDown(SDL_SCANCODE_LGUI)) {
tryquit = 1;
if (mainmenu == 3) {
SaveSettings();
else
oldwinfreeze++;
- if ((Input::isKeyPressed(jumpkey) || Input::isKeyPressed(SDLK_SPACE)) && !campaign)
+ if ((Input::isKeyPressed(jumpkey) || Input::isKeyPressed(SDL_SCANCODE_SPACE)) && !campaign)
if (winfreeze)
winfreeze = 0;
- if ((Input::isKeyDown(SDLK_ESCAPE)) && !campaign && gameon) {
+ if ((Input::isKeyDown(SDL_SCANCODE_ESCAPE)) && !campaign && gameon) {
if (console) {
console = false;
freeze = 0;
special = 0;
}
if ((!hostile || dialoguetype[i] > 40 && dialoguetype[i] < 50) &&
- realdialoguetype < numplayers &&
+ realdialoguetype < Person::players.size() &&
realdialoguetype > 0 &&
(dialoguegonethrough[i] == 0 || !special) &&
(special || Input::isKeyPressed(attackkey))) {
viewer.y += multiplier * 4;
if (Input::isKeyDown(crouchkey))
viewer.y -= multiplier * 4;
- if ( Input::isKeyPressed(SDLK_1) ||
- Input::isKeyPressed(SDLK_2) ||
- Input::isKeyPressed(SDLK_3) ||
- Input::isKeyPressed(SDLK_4) ||
- Input::isKeyPressed(SDLK_5) ||
- Input::isKeyPressed(SDLK_6) ||
- Input::isKeyPressed(SDLK_7) ||
- Input::isKeyPressed(SDLK_8) ||
- Input::isKeyPressed(SDLK_9) ||
- Input::isKeyPressed(SDLK_0) ||
- Input::isKeyPressed(SDLK_MINUS)) {
+ if ( Input::isKeyPressed(SDL_SCANCODE_1) ||
+ Input::isKeyPressed(SDL_SCANCODE_2) ||
+ Input::isKeyPressed(SDL_SCANCODE_3) ||
+ Input::isKeyPressed(SDL_SCANCODE_4) ||
+ Input::isKeyPressed(SDL_SCANCODE_5) ||
+ Input::isKeyPressed(SDL_SCANCODE_6) ||
+ Input::isKeyPressed(SDL_SCANCODE_7) ||
+ Input::isKeyPressed(SDL_SCANCODE_8) ||
+ Input::isKeyPressed(SDL_SCANCODE_9) ||
+ Input::isKeyPressed(SDL_SCANCODE_0) ||
+ Input::isKeyPressed(SDL_SCANCODE_MINUS)) {
int whichend;
- if (Input::isKeyPressed(SDLK_1)) whichend = 1;
- if (Input::isKeyPressed(SDLK_2)) whichend = 2;
- if (Input::isKeyPressed(SDLK_3)) whichend = 3;
- if (Input::isKeyPressed(SDLK_4)) whichend = 4;
- if (Input::isKeyPressed(SDLK_5)) whichend = 5;
- if (Input::isKeyPressed(SDLK_6)) whichend = 6;
- if (Input::isKeyPressed(SDLK_7)) whichend = 7;
- if (Input::isKeyPressed(SDLK_8)) whichend = 8;
- if (Input::isKeyPressed(SDLK_9)) whichend = 9;
- if (Input::isKeyPressed(SDLK_0)) whichend = 0;
- if (Input::isKeyPressed(SDLK_MINUS))
+ if (Input::isKeyPressed(SDL_SCANCODE_1)) whichend = 1;
+ if (Input::isKeyPressed(SDL_SCANCODE_2)) whichend = 2;
+ if (Input::isKeyPressed(SDL_SCANCODE_3)) whichend = 3;
+ if (Input::isKeyPressed(SDL_SCANCODE_4)) whichend = 4;
+ if (Input::isKeyPressed(SDL_SCANCODE_5)) whichend = 5;
+ if (Input::isKeyPressed(SDL_SCANCODE_6)) whichend = 6;
+ if (Input::isKeyPressed(SDL_SCANCODE_7)) whichend = 7;
+ if (Input::isKeyPressed(SDL_SCANCODE_8)) whichend = 8;
+ if (Input::isKeyPressed(SDL_SCANCODE_9)) whichend = 9;
+ if (Input::isKeyPressed(SDL_SCANCODE_0)) whichend = 0;
+ if (Input::isKeyPressed(SDL_SCANCODE_MINUS))
whichend = -1;
if (whichend != -1) {
participantfocus[whichdialogue][indialogue] = whichend;
}
}
- for (int j = 0; j < numplayers; j++) {
+ for (int j = 0; j < Person::players.size(); j++) {
participantfacing[whichdialogue][indialogue][j] = participantfacing[whichdialogue][indialogue - 1][j];
}
}
//TODO: should these be KeyDown or KeyPressed?
- if ( Input::isKeyDown(SDLK_KP1) ||
- Input::isKeyDown(SDLK_KP2) ||
- Input::isKeyDown(SDLK_KP3) ||
- Input::isKeyDown(SDLK_KP4) ||
- Input::isKeyDown(SDLK_KP5) ||
- Input::isKeyDown(SDLK_KP6) ||
- Input::isKeyDown(SDLK_KP7) ||
- Input::isKeyDown(SDLK_KP8) ||
- Input::isKeyDown(SDLK_KP9) ||
- Input::isKeyDown(SDLK_KP0)) {
+ if ( Input::isKeyDown(SDL_SCANCODE_KP_1) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_2) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_3) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_4) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_5) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_6) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_7) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_8) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_9) ||
+ Input::isKeyDown(SDL_SCANCODE_KP_0)) {
int whichend;
- if (Input::isKeyDown(SDLK_KP1)) whichend = 1;
- if (Input::isKeyDown(SDLK_KP2)) whichend = 2;
- if (Input::isKeyDown(SDLK_KP3)) whichend = 3;
- if (Input::isKeyDown(SDLK_KP4)) whichend = 4;
- if (Input::isKeyDown(SDLK_KP5)) whichend = 5;
- if (Input::isKeyDown(SDLK_KP6)) whichend = 6;
- if (Input::isKeyDown(SDLK_KP7)) whichend = 7;
- if (Input::isKeyDown(SDLK_KP8)) whichend = 8;
- if (Input::isKeyDown(SDLK_KP9)) whichend = 9;
- if (Input::isKeyDown(SDLK_KP0)) whichend = 0;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_1)) whichend = 1;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_2)) whichend = 2;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_3)) whichend = 3;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_4)) whichend = 4;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_5)) whichend = 5;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_6)) whichend = 6;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_7)) whichend = 7;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_8)) whichend = 8;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_9)) whichend = 9;
+ if (Input::isKeyDown(SDL_SCANCODE_KP_0)) whichend = 0;
participantfacing[whichdialogue][indialogue][whichend] = facing;
}
if (indialogue >= numdialogueboxes[whichdialogue]) {
yaw = dialoguecamerayaw[whichdialogue][indialogue];
pitch = dialoguecamerapitch[whichdialogue][indialogue];
if (dialoguetime > 0.5)
- if ( Input::isKeyPressed(SDLK_1) ||
- Input::isKeyPressed(SDLK_2) ||
- Input::isKeyPressed(SDLK_3) ||
- Input::isKeyPressed(SDLK_4) ||
- Input::isKeyPressed(SDLK_5) ||
- Input::isKeyPressed(SDLK_6) ||
- Input::isKeyPressed(SDLK_7) ||
- Input::isKeyPressed(SDLK_8) ||
- Input::isKeyPressed(SDLK_9) ||
- Input::isKeyPressed(SDLK_0) ||
- Input::isKeyPressed(SDLK_MINUS) ||
+ if ( Input::isKeyPressed(SDL_SCANCODE_1) ||
+ Input::isKeyPressed(SDL_SCANCODE_2) ||
+ Input::isKeyPressed(SDL_SCANCODE_3) ||
+ Input::isKeyPressed(SDL_SCANCODE_4) ||
+ Input::isKeyPressed(SDL_SCANCODE_5) ||
+ Input::isKeyPressed(SDL_SCANCODE_6) ||
+ Input::isKeyPressed(SDL_SCANCODE_7) ||
+ Input::isKeyPressed(SDL_SCANCODE_8) ||
+ Input::isKeyPressed(SDL_SCANCODE_9) ||
+ Input::isKeyPressed(SDL_SCANCODE_0) ||
+ Input::isKeyPressed(SDL_SCANCODE_MINUS) ||
Input::isKeyPressed(attackkey)) {
indialogue++;
if (indialogue < numdialogueboxes[whichdialogue]) {
}
if (dialoguetype[whichdialogue] > 49 && dialoguetype[whichdialogue] < 60) {
hostile = 1;
- for (int i = 1; i < numplayers; i++) {
+ for (int i = 1; i < Person::players.size(); i++) {
Person::players[i]->aitype = attacktypecutoff;
}
}
doJumpReversals();
- for (int k = 0; k < numplayers; k++)
+ for (int 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 < numplayers; k++) {
+ for (int 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 respawnkeydown;
if (!editorenabled &&
(whichlevel != -2 &&
- (Input::isKeyDown(SDLK_z) &&
- Input::isKeyDown(SDLK_LMETA) &&
+ (Input::isKeyDown(SDL_SCANCODE_Z) &&
+ Input::isKeyDown(SDL_SCANCODE_LGUI) &&
debugmode) ||
(Input::isKeyDown(jumpkey) &&
!respawnkeydown &&
static bool movekey;
//?
- for (int i = 0; i < numplayers; i++) {
+ for (int 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 < numplayers; j++)
+ for (int 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]->isRun() ||
Person::players[i]->isIdle() || Person::players[i]->animTarget == rollanim ||
Person::players[i]->animTarget == backhandspringanim) {
- if (numplayers > 1)
- for (int j = 0; j < numplayers; j++) {
+ if (Person::players.size() > 1)
+ for (int 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]->isCrouch() ||
Person::players[i]->animTarget == sneakanim ||
Person::players[i]->isFlip())
- if (numplayers > 1)
- for (int j = 0; j < numplayers; j++) {
+ if (Person::players.size() > 1)
+ for (int 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 < numplayers; j++) {
+ for (int j = 0; j < Person::players.size(); j++) {
Person::players[j]->wentforweapon = 0;
}
}
target = -2;
if (i == 0) {
Person::players[i]->superruntoggle = 1;
- if (numplayers > 1)
- for (int j = 0; j < numplayers; j++)
+ if (Person::players.size() > 1)
+ for (int 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 (numplayers > 1)
- for (int j = 0; j < numplayers; j++) {
+ if (Person::players.size() > 1)
+ for (int 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] &&
Person::players[i]->superruntoggle = 0;
target = -2;
if (Person::players[i]->isCrouch()) {
- if (numplayers > 1)
- for (int j = 0; j < numplayers; j++) {
+ if (Person::players.size() > 1)
+ for (int j = 0; j < Person::players.size(); j++) {
if (j != i &&
!Person::players[j]->skeleton.free &&
Person::players[j]->victim &&
//Dodge sweep?
target = -2;
- if (numplayers > 1)
- for (int j = 0; j < numplayers; j++) {
+ if (Person::players.size() > 1)
+ for (int 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 < numplayers; k++) {
+ for (int 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 < numplayers; k++) {
+ for (int 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);
}
}
- if (Input::isKeyPressed(SDLK_F1))
+ if (Input::isKeyPressed(SDL_SCANCODE_F1))
Screenshot();
}
realthreat = 0;
musictype = leveltheme;
- for (int i = 0; i < numplayers; i++) {
+ for (int 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 < numplayers; i++)
+ for (int 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 < numplayers; i++) {
+ for (int i = 1; i < Person::players.size(); i++) {
if (!Person::players[i]->dead && Person::players[i]->howactive < typedead1) {
alldead = false;
break;