static void ch_cellar(const char *args)
{
- LoadTextureSave(":Data:Textures:Furdarko.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:Furdarko.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_tint(const char *args)
player[0].scale = atof(args) * .2;
}
-static int find_closest()
-{
- int closest = 0;
- float closestdist = std::numeric_limits<float>::max();
-
- for (int i = 1; i < numplayers; i++) {
- float distance;
- distance = findDistancefast(&player[i].coords,&player[0].coords);
- if (distance < closestdist) {
- closestdist = distance;
- closest = i;
+static int findClosestPlayer(){
+ int closest = -1;
+ float closestdist = std::numeric_limits<float>::max();
+
+ for(int i=1; i<numplayers; i++){
+ float distance = distsq(&player[i].coords, &player[0].coords);
+ if(distance < closestdist){
+ closestdist = distance;
+ closest = i;
+ }
}
- }
- return closest;
+ return closest;
+}
+
+static int findClosestObject(){
+ int closest = -1;
+ float closestdist = std::numeric_limits<float>::max();
+
+ for(int i=0; i<objects.numobjects; i++){
+ float distance = distsq(&objects.position[i], &player[0].coords);
+ if(distance < closestdist){
+ closestdist = distance;
+ closest = i;
+ }
+ }
+ return closest;
}
static void ch_sizenear(const char *args)
{
- int closest = find_closest();
-
- if (closest)
+ int closest = findClosestPlayer();
+ if(closest>=0)
player[closest].scale = atof(args) * .2;
}
static void ch_proportionnear(const char *args)
{
- int closest = find_closest();
- if (closest)
+ int closest = findClosestPlayer();
+ if(closest>=0)
set_proportion(closest, args);
}
static void ch_protectionnear(const char *args)
{
- int closest = find_closest();
- if (closest)
+ int closest = findClosestPlayer();
+ if(closest>=0)
set_protection(closest, args);
}
static void ch_armornear(const char *args)
{
- int closest = find_closest();
- if (closest)
+ int closest = findClosestPlayer();
+ if(closest>=0)
set_armor(closest, args);
}
static void set_noclothes(int pnum, const char *args)
{
player[pnum].numclothes = 0;
- LoadTextureSave(creatureskin[player[pnum].creature][player[pnum].whichskin],
- &player[pnum].skeleton.drawmodel.textureptr,1,
- &player[pnum].skeleton.skinText[0],&player[pnum].skeleton.skinsize);
+ player[pnum].skeleton.drawmodel.textureptr.load(
+ creatureskin[player[pnum].creature][player[pnum].whichskin],1,
+ &player[pnum].skeleton.skinText[0],&player[pnum].skeleton.skinsize);
}
static void ch_noclothes(const char *args)
static void ch_noclothesnear(const char *args)
{
- int closest = find_closest();
- if (closest)
+ int closest = findClosestPlayer();
+ if(closest>=0)
set_noclothes(closest, args);
}
static void ch_clothesnear(const char *args)
{
- int closest = find_closest();
- if (closest)
+ int closest = findClosestPlayer();
+ if(closest>=0)
set_clothes(closest, args);
}
":Data:Models:Body4.solid",":Data:Models:Body5.solid",
":Data:Models:Body6.solid",":Data:Models:Body7.solid",
":Data:Models:Bodylow.solid",":Data:Models:Belt.solid",1);
- LoadTextureSave(":Data:Textures:fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur3.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
player[0].creature=rabbittype;
player[0].scale=.2;
player[0].headless=0;
":Data:Models:Wolf4.solid",":Data:Models:Wolf5.solid",
":Data:Models:Wolf6.solid",":Data:Models:Wolf7.solid",
":Data:Models:Wolflow.solid",":Data:Models:Belt.solid",0);
- LoadTextureSave(":Data:Textures:Wolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
player[0].creature=wolftype;
player[0].damagetolerance=300;
set_proportion(0, "1 1 1 1");
static void ch_wolf(const char *args)
{
- LoadTextureSave(":Data:Textures:Wolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_snowwolf(const char *args)
{
- LoadTextureSave(":Data:Textures:SnowWolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:SnowWolf.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_darkwolf(const char *args)
{
- LoadTextureSave(":Data:Textures:DarkWolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:DarkWolf.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_lizardwolf(const char *args)
{
- LoadTextureSave(":Data:Textures:Lizardwolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:Lizardwolf.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_white(const char *args)
{
- LoadTextureSave(":Data:Textures:fur.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_brown(const char *args)
{
- LoadTextureSave(":Data:Textures:fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur3.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_black(const char *args)
{
- LoadTextureSave(":Data:Textures:fur2.jpg",&player[0].skeleton.drawmodel.textureptr,1,
- &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(":Data:Textures:fur2.jpg",1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
}
static void ch_sizemin(const char *args)
}
player[0].numclothes=0;
- LoadTextureSave(creatureskin[player[0].creature][player[0].whichskin],
- &player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],
- &player[0].skeleton.skinsize);
+ player[0].skeleton.drawmodel.textureptr.load(
+ creatureskin[player[0].creature][player[0].whichskin],1,
+ &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
editoractive=typeactive;
player[0].immobile=0;
if(ambientsound)
emit_stream_np(stream_wind);
- LoadTexture(":Data:Textures:snowtree.png",&objects.treetextureptr,0,1);
- LoadTexture(":Data:Textures:bushsnow.png",&objects.bushtextureptr,0,1);
- LoadTexture(":Data:Textures:bouldersnow.jpg",&objects.rocktextureptr,1,0);
- LoadTexture(":Data:Textures:snowbox.jpg",&objects.boxtextureptr,1,0);
+ objects.treetextureptr.load(":Data:Textures:snowtree.png",0,1);
+ objects.bushtextureptr.load(":Data:Textures:bushsnow.png",0,1);
+ objects.rocktextureptr.load(":Data:Textures:bouldersnow.jpg",1,0);
+ objects.boxtextureptr.load(":Data:Textures:snowbox.jpg",1,0);
footstepsound = footstepsn1;
footstepsound2 = footstepsn2;
footstepsound3 = footstepst1;
footstepsound4 = footstepst2;
- LoadTexture(":Data:Textures:snow.jpg",&terraintexture,1,0);
-
- LoadTexture(":Data:Textures:rock.jpg",&terraintexture2,1,0);
+ terraintexture.load(":Data:Textures:snow.jpg",1,0);
+ terraintexture2.load(":Data:Textures:rock.jpg",1,0);
//LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
} else if(environment==desertenvironment){
windvector=0;
windvector.z=2;
- LoadTexture(":Data:Textures:deserttree.png",&objects.treetextureptr,0,1);
- LoadTexture(":Data:Textures:bushdesert.png",&objects.bushtextureptr,0,1);
- LoadTexture(":Data:Textures:boulderdesert.jpg",&objects.rocktextureptr,1,0);
- LoadTexture(":Data:Textures:desertbox.jpg",&objects.boxtextureptr,1,0);
+ objects.treetextureptr.load(":Data:Textures:deserttree.png",0,1);
+ objects.bushtextureptr.load(":Data:Textures:bushdesert.png",0,1);
+ objects.rocktextureptr.load(":Data:Textures:boulderdesert.jpg",1,0);
+ objects.boxtextureptr.load(":Data:Textures:desertbox.jpg",1,0);
if(ambientsound)
footstepsound3 = footstepsn1;
footstepsound4 = footstepsn2;
- LoadTexture(":Data:Textures:sand.jpg",&terraintexture,1,0);
-
- LoadTexture(":Data:Textures:sandslope.jpg",&terraintexture2,1,0);
+ terraintexture.load(":Data:Textures:sand.jpg",1,0);
+ terraintexture2.load(":Data:Textures:sandslope.jpg",1,0);
//LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
} else if(environment==grassyenvironment){
windvector=0;
windvector.z=2;
- LoadTexture(":Data:Textures:tree.png",&objects.treetextureptr,0,1);
- LoadTexture(":Data:Textures:bush.png",&objects.bushtextureptr,0,1);
- LoadTexture(":Data:Textures:boulder.jpg",&objects.rocktextureptr,1,0);
- LoadTexture(":Data:Textures:grassbox.jpg",&objects.boxtextureptr,1,0);
+ objects.treetextureptr.load(":Data:Textures:tree.png",0,1);
+ objects.bushtextureptr.load(":Data:Textures:bush.png",0,1);
+ objects.rocktextureptr.load(":Data:Textures:boulder.jpg",1,0);
+ objects.boxtextureptr.load(":Data:Textures:grassbox.jpg",1,0);
if(ambientsound)
emit_stream_np(stream_wind, 100.);
footstepsound3 = footstepst1;
footstepsound4 = footstepst2;
- LoadTexture(":Data:Textures:grassdirt.jpg",&terraintexture,1,0);
-
- LoadTexture(":Data:Textures:mossrock.jpg",&terraintexture2,1,0);
+ terraintexture.load(":Data:Textures:grassdirt.jpg",1,0);
+ terraintexture2.load(":Data:Textures:mossrock.jpg",1,0);
//LoadTexture(":Data:Textures:detail.png",&terraintexture3,1);
ifstream test(ConvertFileName((":Data:Textures:"+accountactive->getCurrentCampaign()+":World.png").c_str()));
if(test.good()) {
- LoadTexture((":Data:Textures:"+accountactive->getCurrentCampaign()+":World.png").c_str(),&Mainmenuitems[7],0,0);
+ Mainmenuitems[7].load((":Data:Textures:"+accountactive->getCurrentCampaign()+":World.png").c_str(),0,0);
} else {
- LoadTexture(":Data:Textures:World.png",&Mainmenuitems[7],0,0);
+ Mainmenuitems[7].load(":Data:Textures:World.png",0,0);
}
if(accountactive->getCampaignChoicesMade()==0) {
float tempdist;
//~ int whichclosest;
for(int i=0;i<objects.numobjects;i++){
- tempdist=findDistancefast(&objects.center,&objects.position[i]);
+ tempdist=distsq(&objects.center,&objects.position[i]);
if(tempdist>maxdistance){
//~ whichclosest=i;
maxdistance=tempdist;
(char *)":Data:Models:Body7.solid",
(char *)":Data:Models:Bodylow.solid",
(char *)":Data:Models:Belt.solid",1);
- LoadTexture(":Data:Textures:Belt.png",&player[i].skeleton.drawmodelclothes.textureptr,1,1);
+ player[i].skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png",1,1);
}
if(player[i].creature==wolftype){
player[i].skeleton.Load(
//~ int texsize;
//~ texsize=512*512*3/texdetail/texdetail;
- LoadTextureSave(creatureskin[player[i].creature][player[i].whichskin],&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
+ player[i].skeleton.drawmodel.textureptr.load(creatureskin[player[i].creature][player[i].whichskin],1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
if(player[i].numclothes){
for(int j=0;j<player[i].numclothes;j++){
}
if(Input::isKeyPressed(SDLK_x)&&Input::isKeyDown(SDLK_LSHIFT)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(int i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closest!=-1){
+ int closest=findClosestPlayer();
+ if(closest>=0){
if(player[closest].num_weapons){
if(weapons[player[closest].weaponids[0]].getType()==sword)
weapons[player[closest].weaponids[0]].setType(staff);
}
if(Input::isKeyDown(SDLK_u)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(int i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- player[closest].yaw+=multiplier*50;
- player[closest].targetyaw=player[closest].yaw;
+ int closest=findClosestPlayer();
+ if(closest>=0){
+ player[closest].yaw+=multiplier*50;
+ player[closest].targetyaw=player[closest].yaw;
+ }
}
if(Input::isKeyPressed(SDLK_o)&&!Input::isKeyDown(SDLK_LSHIFT)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(int i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(Input::isKeyDown(SDLK_LCTRL))closest=0;
+ int closest=findClosestPlayer();
+ if(Input::isKeyDown(SDLK_LCTRL))
+ closest=0;
- if(closest!=-1){
+ if(closest>=0){
player[closest].whichskin++;
if(player[closest].whichskin>9)
player[closest].whichskin=0;
if(player[closest].whichskin>2&&player[closest].creature==wolftype)
player[closest].whichskin=0;
- LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin],
- &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
+ player[closest].skeleton.drawmodel.textureptr.load(creatureskin[player[closest].creature][player[closest].whichskin],1,
+ &player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
}
if(player[closest].numclothes){
}
if(Input::isKeyPressed(SDLK_o)&&Input::isKeyDown(SDLK_LSHIFT)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(int i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closest!=-1){
+ int closest=findClosestPlayer();
+ if(closest>=0){
if(player[closest].creature==wolftype){
headprop=player[closest].proportionhead.x/1.1;
bodyprop=player[closest].proportionbody.x/1.1;
if(player[closest].creature==rabbittype){
player[closest].skeleton.id=closest;
player[closest].skeleton.Load((char *)":Data:Skeleton:Basic Figure Wolf",(char *)":Data:Skeleton:Basic Figure Wolf Low",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Wolf.solid",(char *)":Data:Models:Wolf2.solid",(char *)":Data:Models:Wolf3.solid",(char *)":Data:Models:Wolf4.solid",(char *)":Data:Models:Wolf5.solid",(char *)":Data:Models:Wolf6.solid",(char *)":Data:Models:Wolf7.solid",(char *)":Data:Models:Wolflow.solid",(char *)":Data:Models:Belt.solid",0);
- LoadTextureSave(":Data:Textures:Wolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[closest],&player[closest].skeleton.skinsize);
+ player[closest].skeleton.drawmodel.textureptr.load(":Data:Textures:Wolf.jpg",1,&player[closest].skeleton.skinText[closest],&player[closest].skeleton.skinsize);
player[closest].whichskin=0;
player[closest].creature=wolftype;
{
player[closest].skeleton.id=closest;
player[closest].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);
- LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
+ player[closest].skeleton.drawmodel.textureptr.load(":Data:Textures:Fur3.jpg",1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
player[closest].whichskin=0;
player[closest].creature=rabbittype;
if(((Input::isKeyPressed(SDLK_i)&&!Input::isKeyDown(SDLK_LSHIFT)))){
- int closest=-1;
- float closestdist=-1;
- float distance;
+ int closest = -1;
+ float closestdist = std::numeric_limits<float>::max();
+
+ for(int i=1; i<numplayers; i++){
+ float distance = distsq(&player[i].coords, &player[0].coords);
+ if(!player[i].headless)
+ if(distance < closestdist){
+ closestdist = distance;
+ closest = i;
+ }
+ }
+
XYZ flatfacing2,flatvelocity2;
XYZ blah;
- if(numplayers>1)
- for(int i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(distance<144&&!player[i].headless)
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- blah = player[i].coords;
- }
- }
-
- if(closest!=-1){
+ if(closest!=-1 && distsq(&player[closest].coords, &player[0].coords)<144){
+ blah = player[closest].coords;
XYZ headspurtdirection;
//int i = player[closest].skeleton.jointlabels[head];
Joint& headjoint= player[closest].getJointFor(head);
}
if(((Input::isKeyPressed(SDLK_i)&&Input::isKeyDown(SDLK_LSHIFT)))){
- int closest=-1;
- float closestdist=-1;
- float distance;
+ int closest=findClosestPlayer();
XYZ flatfacing2,flatvelocity2;
XYZ blah;
- if(numplayers>1)
- for(int i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(distance<144)
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- blah=player[i].coords;
- }
- }
-
- if(closest!=-1){
+ if(closest>=0 && distsq(&player[closest].coords,&player[0].coords)<144){
+ blah=player[closest].coords;
emit_sound_at(splattersound, blah);
-
emit_sound_at(breaksound2, blah);
for(int i=0;i<player[closest].skeleton.num_joints; i++){
XYZ temppos;
for(int j=0;j<numplayers; j++){
if(j!=closest){
- if(findDistancefast(&player[j].coords,&player[closest].coords)<25){
- player[j].DoDamage((25-findDistancefast(&player[j].coords,&player[closest].coords))*60);
+ if(distsq(&player[j].coords,&player[closest].coords)<25){
+ player[j].DoDamage((25-distsq(&player[j].coords,&player[closest].coords))*60);
if(player[j].skeleton.free==2)
player[j].skeleton.free=1;
player[j].skeleton.longdead=0;
player[j].RagDoll(0);
for(int i=0;i<player[j].skeleton.num_joints; i++){
temppos=player[j].skeleton.joints[i].position+player[j].coords;
- if(findDistancefast(&temppos,&player[closest].coords)<25){
+ if(distsq(&temppos,&player[closest].coords)<25){
flatvelocity2=temppos-player[closest].coords;
Normalise(&flatvelocity2);
- player[j].skeleton.joints[i].velocity+=flatvelocity2*((20-findDistancefast(&temppos,&player[closest].coords))*20);
+ player[j].skeleton.joints[i].velocity+=flatvelocity2*((20-distsq(&temppos,&player[closest].coords))*20);
}
}
}
if(editorenabled){
if(Input::isKeyPressed(SDLK_DELETE)&&Input::isKeyDown(SDLK_LSHIFT)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(int i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closestdist>0&&closest>=0){
+ int closest=findClosestPlayer();
+ if(closest>=0){
//player[closest]=player[numplayers-1];
//player[closest].skeleton=player[numplayers-1].skeleton;
numplayers--;
}
if(Input::isKeyPressed(SDLK_DELETE)&&Input::isKeyDown(SDLK_LCTRL)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(max_objects>1)
- for(int i=1;i<max_objects;i++){
- distance=findDistancefast(&objects.position[i],&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closestdist>0&&closest>=0){
+ int closest=findClosestObject();
+ if(closest>=0)
objects.position[closest].y-=500;
- }
}
if(Input::isKeyPressed(SDLK_m)&&Input::isKeyDown(SDLK_LSHIFT)){
int k=abs(Random()%2)+1;
if(k==0){
- LoadTextureSave(":Data:Textures:Fur3.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
+ player[numplayers].skeleton.drawmodel.textureptr.load(":Data:Textures:Fur3.jpg",1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
player[numplayers].whichskin=0;
}
else if(k==1){
- LoadTextureSave(":Data:Textures:Fur.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
+ player[numplayers].skeleton.drawmodel.textureptr.load(":Data:Textures:Fur.jpg",1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
player[numplayers].whichskin=1;
}
else {
- LoadTextureSave(":Data:Textures:Fur2.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
+ player[numplayers].skeleton.drawmodel.textureptr.load(":Data:Textures:Fur2.jpg",1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize);
player[numplayers].whichskin=2;
}
- LoadTexture(":Data:Textures:Belt.png",&player[numplayers].skeleton.drawmodelclothes.textureptr,1,1);
+ player[numplayers].skeleton.drawmodelclothes.textureptr.load(":Data:Textures:Belt.png",1,1);
player[numplayers].power=1;
player[numplayers].speedmult=1;
player[numplayers].currentanimation=bounceidleanim;
connected=0;
if(numpathpoints>1)
for(int i=0;i<numpathpoints;i++){
- if(findDistancefast(&pathpoint[i],&player[0].coords)<.5&&i!=pathpointselected&&!connected){
+ if(distsq(&pathpoint[i],&player[0].coords)<.5&&i!=pathpointselected&&!connected){
alreadyconnected=0;
for(int j=0;j<numpathpointconnect[pathpointselected];j++){
if(pathpointconnect[pathpointselected][j]==i)alreadyconnected=1;
if(editorpitch<-.01)editorpitch=-.01;
}
if(Input::isKeyPressed(SDLK_DELETE)&&objects.numobjects&&Input::isKeyDown(SDLK_LSHIFT)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- for(int i=0;i<objects.numobjects;i++){
- distance=findDistancefast(&objects.position[i],&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- if(closestdist>0&&closest>=0)objects.DeleteObject(closest);
+ int closest=findClosestObject();
+ if(closest>=0)
+ objects.DeleteObject(closest);
}
}
}
player[k].aitype==playercontrolled)&&
(player[i].aitype==attacktypecutoff&&player[i].stunned<=0||
player[k].aitype==attacktypecutoff&&player[k].stunned<=0)){
- if( findDistancefast(&player[i].coords,&player[k].coords)<10*sq((player[i].scale+player[k].scale)*2.5)&&
- findDistancefastflat(&player[i].coords,&player[k].coords)<2*sq((player[i].scale+player[k].scale)*2.5)){
+ if( distsq(&player[i].coords,&player[k].coords)<10*sq((player[i].scale+player[k].scale)*2.5)&&
+ distsqflat(&player[i].coords,&player[k].coords)<2*sq((player[i].scale+player[k].scale)*2.5)){
//TODO: refactor two huge similar ifs
if(player[i].targetanimation==jumpupanim&&
player[k].targetanimation!=getupfrombackanim&&
player[k].yaw=stepTowardf(player[k].yaw, player[k].targetyaw, multiplier*player[k].turnspeed*4);
}
- /*if(player[k].aitype!=passivetype||(findDistancefast(&player[k].coords,&viewer)<viewdistance*viewdistance))*/
+ /*if(player[k].aitype!=passivetype||(distsq(&player[k].coords,&viewer)<viewdistance*viewdistance))*/
player[k].DoStuff();
if(player[k].immobile&&k!=0)
player[k].coords=player[k].realoldcoords;
//if player's position has changed (?)
- if(findDistancefast(&player[k].coords,&player[k].realoldcoords)>0&&
+ if(distsq(&player[k].coords,&player[k].realoldcoords)>0&&
!player[k].skeleton.free&&
player[k].targetanimation!=climbanim&&
player[k].targetanimation!=hanganim){
player[i].targetanimation==knifeslashstartanim||
player[i].targetanimation==staffhitanim||
player[i].targetanimation==staffspinhitanim)
- if(findDistancefast(&player[k].coords,&player[i].coords)<6.5&&!player[i].skeleton.free){
+ if(distsq(&player[k].coords,&player[i].coords)<6.5&&!player[i].skeleton.free){
player[k].setAnimation(dodgebackanim);
player[k].targetyaw=roughDirectionTo(player[k].coords,player[i].coords);
player[k].targettilt2=pitchTo(player[k].coords,player[i].coords);
if(!player[k].hasvictim)
if(animation[player[k].targetanimation].attack!=reversal){
//choose an attack
- const float distance=findDistancefast(&player[k].coords,&player[i].coords);
+ const float distance=distsq(&player[k].coords,&player[i].coords);
if(distance<4.5&&
!player[i].skeleton.free&&
player[i].howactive<typedead1&&
if(i==k)continue;
if((playerrealattackkeydown||player[i].dead||!hasstaff)&&
animation[player[k].targetanimation].attack==neutral){
- const float distance=findDistancefast(&player[k].coords,&player[i].coords);
+ const float distance=distsq(&player[k].coords,&player[i].coords);
if(!player[i].dead||!realthreat||(!attackweapon&&player[k].crouchkeydown))
if(player[i].skeleton.free)
if(distance<3.5*sq(player[k].scale*5)&&
if(i==k||!(i==0||k==0))continue;
if(!player[i].skeleton.free){
if(player[k].hasvictim){
- if(findDistancefast(&player[k].coords,&player[i].coords)<
- findDistancefast(&player[k].coords,&player[k].victim->coords))
+ if(distsq(&player[k].coords,&player[i].coords)<
+ distsq(&player[k].coords,&player[k].victim->coords))
player[k].victim=&player[i];
}else{
player[k].victim=&player[i];
player[k].isRun()&&
player[k].wasRun()&&
((player[k].hasvictim&&
- findDistancefast(&player[k].coords,&player[k].victim->coords)<12*sq(player[k].scale*5)&&
- findDistancefast(&player[k].coords,&player[k].victim->coords)>7*sq(player[k].scale*5)&&
+ distsq(&player[k].coords,&player[k].victim->coords)<12*sq(player[k].scale*5)&&
+ distsq(&player[k].coords,&player[k].victim->coords)>7*sq(player[k].scale*5)&&
!player[k].victim->skeleton.free&&
player[k].victim->targetanimation!=getupfrombackanim&&
player[k].victim->targetanimation!=getupfromfrontanim&&
if(player[i].coords.z>player[k].coords.z-3)
if(player[i].coords.z<player[k].coords.z+3){
//spread fire from player to player
- if(findDistancefast(&player[i].coords,&player[k].coords)
+ if(distsq(&player[i].coords,&player[k].coords)
<3*sq((player[i].scale+player[k].scale)*2.5)){
if(player[i].onfire||player[k].onfire){
if(!player[i].onfire)player[i].CatchFire();
if(player[0].targetanimation==rabbitkickanim&&(k==0||i==0)&&!player[0].victim->skeleton.free)
collisionradius=3;
if((!player[i].skeleton.oldfree||!player[k].skeleton.oldfree)&&
- (findDistancefast(&tempcoords1,&tempcoords2)<collisionradius||
- findDistancefast(&player[i].coords,&player[k].coords)<collisionradius)){
+ (distsq(&tempcoords1,&tempcoords2)<collisionradius||
+ distsq(&player[i].coords,&player[k].coords)<collisionradius)){
//jump down on a dead body
if(k==0||i==0){
int l=i?i:k;
player[l].dead&&
player[0].lastcollide<=0&&
fabs(player[l].coords.y-player[0].coords.y)<.2&&
- findDistancefast(&player[0].coords,&player[l].coords)<.7*sq((player[l].scale+player[0].scale)*2.5)){
+ distsq(&player[0].coords,&player[l].coords)<.7*sq((player[l].scale+player[0].scale)*2.5)){
player[0].coords.y=player[l].coords.y;
player[l].velocity=player[0].velocity;
player[l].skeleton.free=0;
animation[player[k].targetanimation].attack==normalattack)){
//If bumped
if(player[i].skeleton.oldfree==0&&player[k].skeleton.oldfree==0){
- if(findDistancefast(&player[k].coords,&player[i].coords)<.5*sq((player[i].scale+player[k].scale)*2.5)){
+ if(distsq(&player[k].coords,&player[i].coords)<.5*sq((player[i].scale+player[k].scale)*2.5)){
rotatetarget=player[k].coords-player[i].coords;
Normalise(&rotatetarget);
player[k].coords=(player[k].coords+player[i].coords)/2;
player[i].stunned=1;
player[i].pause=0;
- if(findDistancefastflat(&player[0].coords,&player[i].coords)<30&&
+ if(distsqflat(&player[0].coords,&player[i].coords)<30&&
player[0].coords.y>player[i].coords.y+2&&
!player[0].onterrain)
player[i].pause=1;
closest=-1;
closestdistance=-1;
for(int j=0;j<numpathpoints;j++)
- if(closest==-1||findDistancefast(&player[i].finalfinaltarget,&pathpoint[j])<closestdistance){
- closestdistance=findDistancefast(&player[i].finalfinaltarget,&pathpoint[j]);
+ if(closest==-1||distsq(&player[i].finalfinaltarget,&pathpoint[j])<closestdistance){
+ closestdistance=distsq(&player[i].finalfinaltarget,&pathpoint[j]);
closest=j;
player[i].finaltarget=pathpoint[j];
}
if(player[i].lastpathfindpoint==-1){
for(int j=0;j<numpathpoints;j++){
if(j!=player[i].lastpathfindpoint)
- if(closest==-1||(findDistancefast(&player[i].coords,&pathpoint[j])<closestdistance)){
- closestdistance=findDistancefast(&player[i].coords,&pathpoint[j]);
+ if(closest==-1||(distsq(&player[i].coords,&pathpoint[j])<closestdistance)){
+ closestdistance=distsq(&player[i].coords,&pathpoint[j]);
closest=j;
}
}
player[i].lookyaw=player[i].targetyaw;
//reached target point
- if(findDistancefastflat(&player[i].coords,&pathpoint[player[i].targetpathfindpoint])<.6){
+ if(distsqflat(&player[i].coords,&pathpoint[player[i].targetpathfindpoint])<.6){
player[i].lastpathfindpoint4=player[i].lastpathfindpoint3;
player[i].lastpathfindpoint3=player[i].lastpathfindpoint2;
player[i].lastpathfindpoint2=player[i].lastpathfindpoint;
player[i].lastpathfindpoint4=player[i].lastpathfindpoint3;
player[i].targetpathfindpoint=-1;
}
- if( findDistancefastflat(&player[i].coords,&player[i].finalfinaltarget)<
- findDistancefastflat(&player[i].coords,&player[i].finaltarget)||
- findDistancefastflat(&player[i].coords,&player[i].finaltarget)<.6*sq(player[i].scale*5)||
+ if( distsqflat(&player[i].coords,&player[i].finalfinaltarget)<
+ distsqflat(&player[i].coords,&player[i].finaltarget)||
+ distsqflat(&player[i].coords,&player[i].finaltarget)<.6*sq(player[i].scale*5)||
player[i].lastpathfindpoint==player[i].finalpathfindpoint) {
player[i].aitype=passivetype;
}
if((tutoriallevel!=1||cananger)&&
hostile&&
!player[0].dead&&
- findDistancefast(&player[i].coords,&player[0].coords)<400&&
+ distsq(&player[i].coords,&player[0].coords)<400&&
player[i].occluded<25){
- if(findDistancefast(&player[i].coords,&player[0].coords)<12&&
+ if(distsq(&player[i].coords,&player[0].coords)<12&&
animation[player[0].targetanimation].height!=lowheight&&
!editorenabled&&
(player[0].coords.y<player[i].coords.y+5||player[0].onterrain))
player[i].aitype=attacktypecutoff;
- if(findDistancefast(&player[i].coords,&player[0].coords)<30&&
+ if(distsq(&player[i].coords,&player[0].coords)<30&&
animation[player[0].targetanimation].height==highheight&&
!editorenabled)
player[i].aitype=attacktypecutoff;
for(int j=0;j<numplayers;j++)
if(j==0||player[j].skeleton.free||player[j].aitype!=passivetype)
if(abs(Random()%2)||animation[player[j].targetanimation].height!=lowheight||j!=0)
- if(findDistancefast(&player[i].coords,&player[j].coords)<400)
+ if(distsq(&player[i].coords,&player[j].coords)<400)
if(normaldotproduct(player[i].facing,player[j].coords-player[i].coords)>0)
if(player[j].coords.y<player[i].coords.y+5||player[j].onterrain)
if(!player[j].isWallJump()&&-1==checkcollide(
player[i].lookyaw=player[i].targetyaw;
player[i].aiupdatedelay=.05;
- if(findDistancefastflat(&player[i].coords,&player[i].waypoints[player[i].waypoint])<1){
+ if(distsqflat(&player[i].coords,&player[i].waypoints[player[i].waypoint])<1){
if(player[i].waypointtype[player[i].waypoint]==wppause)
player[i].pausetime=4;
player[i].waypoint++;
float leftdist,rightdist;
leftpos = player[i].coords+DoRotation(player[i].facing,0,90,0);
rightpos = player[i].coords-DoRotation(player[i].facing,0,90,0);
- leftdist = findDistancefast(&leftpos, &player[i].avoidwhere);
- rightdist = findDistancefast(&rightpos, &player[i].avoidwhere);
+ leftdist = distsq(&leftpos, &player[i].avoidwhere);
+ rightdist = distsq(&rightpos, &player[i].avoidwhere);
if(leftdist<rightdist)
player[i].targetyaw+=90;
else
if(numenvsounds>0&&(tutoriallevel!=1||cananger)&&hostile)
for(int j=0;j<numenvsounds;j++){
float vol=player[i].howactive==typesleeping?envsoundvol[j]-14:envsoundvol[j];
- if(vol>0&&findDistancefast(&player[i].coords,&envsound[j])<
+ if(vol>0&&distsq(&player[i].coords,&envsound[j])<
2*(vol+vol*(player[i].creature==rabbittype)*3))
player[i].aitype=attacktypecutoff;
}
if(player[i].howactive<typesleeping&&
((tutoriallevel!=1||cananger)&&hostile)&&
!player[0].dead&&
- findDistancefast(&player[i].coords,&player[0].coords)<400&&
+ distsq(&player[i].coords,&player[0].coords)<400&&
player[i].occluded<25){
- if(findDistancefast(&player[i].coords,&player[0].coords)<12&&
+ if(distsq(&player[i].coords,&player[0].coords)<12&&
animation[player[0].targetanimation].height!=lowheight&&!editorenabled)
player[i].aitype=attacktypecutoff;
- if(findDistancefast(&player[i].coords,&player[0].coords)<30&&
+ if(distsq(&player[i].coords,&player[0].coords)<30&&
animation[player[0].targetanimation].height==highheight&&!editorenabled)
player[i].aitype=attacktypecutoff;
windsmell=windvector;
Normalise(&windsmell);
windsmell=windsmell*2+player[j].coords;
- if(findDistancefast(&player[i].coords,&windsmell)<smelldistance&&!editorenabled)
+ if(distsq(&player[i].coords,&windsmell)<smelldistance&&!editorenabled)
player[i].aitype=attacktypecutoff;
}
}
for(int j=0;j<numplayers;j++){
if(j==0||player[j].skeleton.free||player[j].aitype!=passivetype){
if(abs(Random()%2)||animation[player[j].targetanimation].height!=lowheight||j!=0)
- if(findDistancefast(&player[i].coords,&player[j].coords)<400)
+ if(distsq(&player[i].coords,&player[j].coords)<400)
if(normaldotproduct(player[i].facing,player[j].coords-player[i].coords)>0)
if((-1==checkcollide(
DoRotation(player[i].getJointFor(head).position,0,player[i].yaw,0)*
player[i].aiupdatedelay=.05;
player[i].forwardkeydown=1;
- if(findDistancefastflat(&player[i].coords,&player[i].lastseen)<1*sq(player[i].scale*5)||player[i].lastchecktime<0){
+ if(distsqflat(&player[i].coords,&player[i].lastseen)<1*sq(player[i].scale*5)||player[i].lastchecktime<0){
player[i].forwardkeydown=0;
player[i].aiupdatedelay=1;
player[i].lastseen.x+=(float(Random()%100)-50)/25;
float leftdist,rightdist;
leftpos = player[i].coords+DoRotation(player[i].facing,0,90,0);
rightpos = player[i].coords-DoRotation(player[i].facing,0,90,0);
- leftdist = findDistancefast(&leftpos, &player[i].avoidwhere);
- rightdist = findDistancefast(&rightpos, &player[i].avoidwhere);
+ leftdist = distsq(&leftpos, &player[i].avoidwhere);
+ rightdist = distsq(&rightpos, &player[i].avoidwhere);
if(leftdist<rightdist)player[i].targetyaw+=90;
else player[i].targetyaw-=90;
}
if(numenvsounds>0&&((tutoriallevel!=1||cananger)&&hostile))
for(int k=0;k<numenvsounds;k++){
- if(findDistancefast(&player[i].coords,&envsound[k])<2*(envsoundvol[k]+envsoundvol[k]*(player[i].creature==rabbittype)*3)){
+ if(distsq(&player[i].coords,&envsound[k])<2*(envsoundvol[k]+envsoundvol[k]*(player[i].creature==rabbittype)*3)){
player[i].aitype=attacktypecutoff;
}
}
player[i].occluded<2&&
((tutoriallevel!=1||cananger)&&hostile)){
player[i].losupdatedelay=.2;
- if(findDistancefast(&player[i].coords,&player[0].coords)<4&&animation[player[i].targetanimation].height!=lowheight){
+ if(distsq(&player[i].coords,&player[0].coords)<4&&animation[player[i].targetanimation].height!=lowheight){
player[i].aitype=attacktypecutoff;
player[i].lastseentime=1;
}
if(abs(Random()%2)||animation[player[i].targetanimation].height!=lowheight)
//TODO: factor out canSeePlayer()
- if(findDistancefast(&player[i].coords,&player[0].coords)<400)
+ if(distsq(&player[i].coords,&player[0].coords)<400)
if(normaldotproduct(player[i].facing,player[0].coords-player[i].coords)>0)
if((checkcollide(
DoRotation(player[i].getJointFor(head).position,0,player[i].yaw,0)*
player[k].howactive<typedead1&&
!player[k].skeleton.free&&
player[k].aitype==passivetype) {
- float distance=findDistancefast(&player[i].coords,&player[k].coords);
+ float distance=distsq(&player[i].coords,&player[k].coords);
if(closestdist==-1||distance<closestdist) {
closestdist=distance;
closest=k;
player[i].aiupdatedelay=.05;
player[i].forwardkeydown=1;
- if(findDistancefastflat(&player[i].coords,&player[player[i].ally].coords)<3){
+ if(distsqflat(&player[i].coords,&player[player[i].ally].coords)<3){
player[i].aitype=searchtype;
player[i].lastseentime=12;
player[player[i].ally].aitype=searchtype;
float leftdist,rightdist;
leftpos = player[i].coords+DoRotation(player[i].facing,0,90,0);
rightpos = player[i].coords-DoRotation(player[i].facing,0,90,0);
- leftdist = findDistancefast(&leftpos, &player[i].avoidwhere);
- rightdist = findDistancefast(&rightpos, &player[i].avoidwhere);
+ leftdist = distsq(&leftpos, &player[i].avoidwhere);
+ rightdist = distsq(&rightpos, &player[i].avoidwhere);
if(leftdist<rightdist)
player[i].targetyaw+=90;
else
float closestdist=-1;
for(int k=0;k<weapons.size();k++)
if(weapons[k].owner==-1){
- float distance=findDistancefast(&player[i].coords,&weapons[k].position);
+ float distance=distsq(&player[i].coords,&weapons[k].position);
if(closestdist==-1||distance<closestdist){
closestdist=distance;
closest=k;
if(!player[0].dead)
if(player[i].ally>=0){
if(weapons[player[i].ally].owner!=-1||
- findDistancefast(&player[i].coords,&weapons[player[i].ally].position)>16){
+ distsq(&player[i].coords,&weapons[player[i].ally].position)>16){
player[i].aitype=attacktypecutoff;
player[i].lastseentime=1;
}
float leftdist,rightdist;
leftpos = player[i].coords+DoRotation(player[i].facing,0,90,0);
rightpos = player[i].coords-DoRotation(player[i].facing,0,90,0);
- leftdist = findDistancefast(&leftpos, &player[i].avoidwhere);
- rightdist = findDistancefast(&rightpos, &player[i].avoidwhere);
+ leftdist = distsq(&leftpos, &player[i].avoidwhere);
+ rightdist = distsq(&rightpos, &player[i].avoidwhere);
if(leftdist<rightdist)
player[i].targetyaw+=90;
else
!player[0].skeleton.free&&
player[0].targetanimation!=walljumprightkickanim&&
player[0].targetanimation!=walljumpleftkickanim){
- if(findDistancefast(&player[0].coords,&player[i].coords)<25)
+ if(distsq(&player[0].coords,&player[i].coords)<25)
if((1-player[i].damage/player[i].damagetolerance)>.5)
player[i].stunned=1;
}
weapons[i].velocity.x==0&&
weapons[i].velocity.z==0&&
weapons[i].velocity.y==0){
- if(findDistancefast(&player[i].coords,&weapons[k].position)<16) {
+ if(distsq(&player[i].coords,&weapons[k].position)<16) {
player[i].wentforweapon++;
player[i].lastchecktime=6;
player[i].aitype=getweapontype;
//chase player
XYZ rotatetarget=player[0].coords+player[0].velocity;
XYZ targetpoint=player[0].coords;
- if(findDistancefast(&player[0].coords,&player[i].coords)<
- findDistancefast(&rotatetarget,&player[i].coords))
+ if(distsq(&player[0].coords,&player[i].coords)<
+ distsq(&rotatetarget,&player[i].coords))
targetpoint+=player[0].velocity*
findDistance(&player[0].coords,&player[i].coords)/findLength(&player[i].velocity);
player[i].targetyaw=roughDirectionTo(player[i].coords,targetpoint);
player[i].lookyaw=player[i].targetyaw;
player[i].aiupdatedelay=.2+fabs((float)(Random()%100)/1000);
- if(findDistancefast(&player[i].coords,&player[0].coords)>5&&(player[0].weaponactive==-1||player[i].weaponactive!=-1))
+ if(distsq(&player[i].coords,&player[0].coords)>5&&(player[0].weaponactive==-1||player[i].weaponactive!=-1))
player[i].forwardkeydown=1;
- else if((findDistancefast(&player[i].coords,&player[0].coords)>16||
- findDistancefast(&player[i].coords,&player[0].coords)<9)&&
+ else if((distsq(&player[i].coords,&player[0].coords)>16||
+ distsq(&player[i].coords,&player[0].coords)<9)&&
player[0].weaponactive!=-1)
player[i].forwardkeydown=1;
else if(Random()%6==0||(player[i].creature==wolftype&&Random()%3==0))
player[i].attackkeydown=1;
else
player[i].attackkeydown=0;
- if(player[i].isRun()&&Random()%6&&findDistancefast(&player[i].coords,&player[0].coords)>7)
+ if(player[i].isRun()&&Random()%6&&distsq(&player[i].coords,&player[0].coords)>7)
player[i].attackkeydown=0;
//TODO: wat
player[i].weaponactive!=-1||
player[j].targetanimation==staffhitanim||
player[j].targetanimation==staffspinhitanim))
- if(findDistancefast(&player[j].coords,&player[j].victim->coords)<4&&
+ if(distsq(&player[j].coords,&player[j].victim->coords)<4&&
player[j].victim==&player[i]&&
(player[j].targetanimation==sweepanim||
player[j].targetanimation==spinkickanim||
player[j].targetanimation==wolfslapanim||
player[j].targetanimation==knifeslashstartanim||
player[j].targetanimation==swordslashanim&&
- (findDistancefast(&player[j].coords,&player[i].coords)<2||
+ (distsq(&player[j].coords,&player[i].coords)<2||
player[i].weaponactive!=-1))){
if(target>=0)
target=-1;
if(player[i].collided<1)
player[i].jumpkeydown=0;
if(player[i].collided>.8&&player[i].jumppower>=5||
- findDistancefast(&player[i].coords,&player[0].coords)>400&&
+ distsq(&player[i].coords,&player[0].coords)>400&&
player[i].onterrain&&
player[i].creature==rabbittype)
player[i].jumpkeydown=1;
if(normaldotproduct(player[i].facing,player[0].coords-player[i].coords)>0)
player[0].jumpkeydown=0;
if(player[0].targetanimation==jumpdownanim&&
- findDistancefast(&player[0].coords,&player[i].coords)<40)
+ distsq(&player[0].coords,&player[i].coords)<40)
player[i].crouchkeydown=1;
if(player[i].jumpkeydown)
player[i].attackkeydown=0;
}
}
+extern SDL_Rect **resolutions;
+
void MenuTick(){
//menu buttons
selected=Menu::getSelected(mousecoordh*640/screenwidth,480-mousecoordv*480/screenheight);
bool isCustomResolution,found;
switch(selected){
case 0:
- extern SDL_Rect **resolutions;
isCustomResolution = true;
found = false;
for(int i = 0; (!found) && (resolutions[i]); i++) {
realdialoguetype>0&&
(dialoguegonethrough[i]==0||!special)&&
(special||Input::isKeyPressed(attackkey))){
- if(findDistancefast(&player[0].coords,&player[realdialoguetype].coords)<6||
+ if(distsq(&player[0].coords,&player[realdialoguetype].coords)<6||
player[realdialoguetype].howactive>=typedead1||
dialoguetype[i]>40&&dialoguetype[i]<50){
whichdialogue=i;
//avoid flaming things
for(int j=0;j<objects.numobjects;j++)
if(objects.onfire[j])
- if(findDistancefast(&player[i].coords,&objects.position[j])<sq(objects.scale[j])*200)
- if( findDistancefast(&player[i].coords,&objects.position[j])<
- findDistancefast(&player[i].coords,&player[0].coords)){
+ if(distsq(&player[i].coords,&objects.position[j])<sq(objects.scale[j])*200)
+ if( distsq(&player[i].coords,&objects.position[j])<
+ distsq(&player[i].coords,&player[0].coords)){
player[i].collided=0;
player[i].avoidcollided=1;
if(player[i].avoidsomething==0||
- findDistancefast(&player[i].coords,&objects.position[j])<
- findDistancefast(&player[i].coords,&player[i].avoidwhere)){
+ distsq(&player[i].coords,&objects.position[j])<
+ distsq(&player[i].coords,&player[i].avoidwhere)){
player[i].avoidwhere=objects.position[j];
player[i].avoidsomething=1;
}
//avoid flaming players
for(int j=0;j<numplayers;j++)
if(player[j].onfire)
- if(findDistancefast(&player[j].coords,&player[i].coords)<sq(0.3)*200)
- if( findDistancefast(&player[i].coords,&player[j].coords)<
- findDistancefast(&player[i].coords,&player[0].coords)){
+ if(distsq(&player[j].coords,&player[i].coords)<sq(0.3)*200)
+ if( distsq(&player[i].coords,&player[j].coords)<
+ distsq(&player[i].coords,&player[0].coords)){
player[i].collided=0;
player[i].avoidcollided=1;
if(player[i].avoidsomething==0||
- findDistancefast(&player[i].coords,&player[j].coords)<
- findDistancefast(&player[i].coords,&player[i].avoidwhere)){
+ distsq(&player[i].coords,&player[j].coords)<
+ distsq(&player[i].coords,&player[i].avoidwhere)){
player[i].avoidwhere=player[j].coords;
player[i].avoidsomething=1;
}
player[i].aitype==playercontrolled)&&
weapons[j].owner==-1&&
player[i].weaponactive==-1)
- if(findDistancefastflat(&player[i].coords,&weapons[j].position)<2){
- if(findDistancefast(&player[i].coords,&weapons[j].position)<2){
+ if(distsqflat(&player[i].coords,&weapons[j].position)<2){
+ if(distsq(&player[i].coords,&weapons[j].position)<2){
if(player[i].isCrouch()||
player[i].targetanimation==sneakanim||
player[i].isRun()||
weapons[j].owner==-1||
player[i].victim&&
weapons[j].owner==player[i].victim->id)
- if(findDistancefastflat(&player[i].coords,&weapons[j].position)<2&&player[i].weaponactive==-1)
- if(findDistancefast(&player[i].coords,&weapons[j].position)<1||player[i].victim){
+ if(distsqflat(&player[i].coords,&weapons[j].position)<2&&player[i].weaponactive==-1)
+ if(distsq(&player[i].coords,&weapons[j].position)<1||player[i].victim){
if(weapons[j].getType()!=staff)
emit_sound_at(knifedrawsound, player[i].coords, 128.);
}else if((player[i].isIdle()||
player[i].isFlip()||
player[i].aitype!=playercontrolled)&&
- findDistancefast(&player[i].coords,&weapons[j].position)<5&&
+ distsq(&player[i].coords,&weapons[j].position)<5&&
player[i].coords.y<weapons[j].position.y){
if(!player[i].isFlip()){
player[i].throwtogglekeydown=1;
weapons[k].owner==-1||
player[i].victim&&
weapons[k].owner==player[i].victim->id)
- if(findDistancefastflat(&player[i].coords,&weapons[k].position)<3&&
+ if(distsqflat(&player[i].coords,&weapons[k].position)<3&&
player[i].weaponactive==-1){
if(weapons[k].getType()!=staff)
emit_sound_at(knifedrawsound, player[i].coords, 128.);
if(j!=i)
if(player[j].num_weapons&&
player[j].skeleton.free&&
- findDistancefast(&player[i].coords,&player[j].coords)<2/*&&player[j].dead*/&&
+ distsq(&player[i].coords,&player[j].coords)<2/*&&player[j].dead*/&&
(((player[j].skeleton.forward.y<0&&
player[j].weaponstuckwhere==0)||
(player[j].skeleton.forward.y>0&&
if(tutoriallevel!=1||tutorialstage==49)
if(hostile)
if(normaldotproduct(player[i].facing,player[i].coords-player[j].coords)<0&&
- findDistancefast(&player[i].coords,&player[j].coords)<100&&
- findDistancefast(&player[i].coords,&player[j].coords)>1.5&&
+ distsq(&player[i].coords,&player[j].coords)<100&&
+ distsq(&player[i].coords,&player[j].coords)>1.5&&
!player[j].skeleton.free&&
-1==checkcollide(DoRotation(player[j].getJointFor(head).position,0,player[j].yaw,0)*player[j].scale+player[j].coords,DoRotation(player[i].getJointFor(head).position,0,player[i].yaw,0)*player[i].scale+player[i].coords)){
if(!player[i].isFlip()){
if(numplayers>1)
for(int j=0;j<numplayers;j++)
if(j!=i&&!player[j].skeleton.free&&player[j].aitype==passivetype)
- if(findDistancefast(&player[j].coords,&player[i].coords)<16)
+ if(distsq(&player[j].coords,&player[i].coords)<16)
player[i].superruntoggle=0;
}
if(numplayers>1)
for(int j=0;j<numplayers;j++){
if(j!=i&&!player[j].skeleton.free&&player[j].victim&&player[i].lowreversaldelay<=0){
- if(findDistancefast(&player[j].coords,&player[j].victim->coords)<3&&
+ if(distsq(&player[j].coords,&player[j].victim->coords)<3&&
player[j].victim==&player[i]&&
(player[j].targetanimation==sweepanim||
player[j].targetanimation==upunchanim||
player[j].targetanimation==knifeslashstartanim||
player[j].targetanimation==staffhitanim||
player[j].targetanimation==staffspinhitanim)&&
- findDistancefast(&player[j].coords,&player[i].coords)<2))){
+ distsq(&player[j].coords,&player[i].coords)<2))){
if(target>=0)
target=-1;
else
!player[j].skeleton.free&&
player[j].victim&&
player[i].highreversaldelay<=0){
- if(findDistancefast(&player[j].coords,&player[j].victim->coords)<3&&
+ if(distsq(&player[j].coords,&player[j].victim->coords)<3&&
player[j].victim==&player[i]&&
(player[j].targetanimation==spinkickanim)&&
player[i].isCrouch()){
if(numplayers>1)
for(int j=0;j<numplayers;j++){
if(j!=i&&!player[j].skeleton.free&&player[j].victim){
- if(findDistancefast(&player[j].coords,&player[j].victim->coords)<3&&
+ if(distsq(&player[j].coords,&player[j].victim->coords)<3&&
player[j].victim==&player[i]&&
(player[j].targetanimation==sweepanim)){
if(target>=0)target=-1;
oldtemp=temp;
oldtemp2=temp2;
if(tutorialstage>=51)
- if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){
+ if(distsq(&temp,&player[0].coords)>=distsq(&temp,&temp2)-1||distsq(&temp3,&player[0].coords)<4){
OPENAL_StopSound(OPENAL_ALL); // hack...OpenAL renderer isn't stopping music after tutorial goes to level menu...
OPENAL_SetFrequency(OPENAL_ALL, 0.001);
flash();
}
if(tutorialstage<51)
- if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){
+ if(distsq(&temp,&player[0].coords)>=distsq(&temp,&temp2)-1||distsq(&temp3,&player[0].coords)<4){
emit_sound_at(fireendsound, player[0].coords);
player[0].coords=(oldtemp+oldtemp2)/2;
flash();
}
if(tutorialstage>=14&&tutorialstage<50)
- if(findDistancefast(&temp,&player[1].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[1].coords)<4){
+ if(distsq(&temp,&player[1].coords)>=distsq(&temp,&temp2)-1||distsq(&temp3,&player[1].coords)<4){
emit_sound_at(fireendsound, player[1].coords);
for(int i=0;i<player[1].skeleton.num_joints;i++){
winhotspot=false;
for(int i=0;i<numhotspots;i++)
if(hotspottype[i]==-1)
- if(findDistancefast(&player[0].coords,&hotspot[i])<hotspotsize[i])
+ if(distsq(&player[0].coords,&hotspot[i])<hotspotsize[i])
winhotspot=true;
int numalarmed=0;