extern int numthrowkill;
Model Weapon::throwingknifemodel;
-GLuint Weapon::knifetextureptr = 0;
-GLuint Weapon::lightbloodknifetextureptr = 0;
-GLuint Weapon::bloodknifetextureptr = 0;
+Texture Weapon::knifetextureptr;
+Texture Weapon::lightbloodknifetextureptr;
+Texture Weapon::bloodknifetextureptr;
Model Weapon::swordmodel;
-GLuint Weapon::swordtextureptr = 0;
-GLuint Weapon::lightbloodswordtextureptr = 0;
-GLuint Weapon::bloodswordtextureptr = 0;
+Texture Weapon::swordtextureptr;
+Texture Weapon::lightbloodswordtextureptr;
+Texture Weapon::bloodswordtextureptr;
Model Weapon::staffmodel;
-GLuint Weapon::stafftextureptr = 0;
+Texture Weapon::stafftextureptr;
Weapon::Weapon(int t, int o) : owner(o) {
setType(t);
if(velocity.x||velocity.y||velocity.z) {
for(int j=0;j<numplayers;j++) {
footvel=0;
- footpoint=DoRotation((player[j].skeleton.joints[player[j].skeleton.jointlabels[abdomen]].position+player[j].skeleton.joints[player[j].skeleton.jointlabels[neck]].position)/2,0,player[j].yaw,0)*player[j].scale+player[j].coords;
- if(owner==-1 && findDistancefastflat(&position,&player[j].coords)<1.5 &&
- findDistancefast(&position,&player[j].coords)<4 && player[j].weaponstuck==-1 &&
+ footpoint=DoRotation((player[j].jointPos(abdomen)+player[j].jointPos(neck))/2,0,player[j].yaw,0)*player[j].scale+player[j].coords;
+ if(owner==-1 && distsqflat(&position,&player[j].coords)<1.5 &&
+ distsq(&position,&player[j].coords)<4 && player[j].weaponstuck==-1 &&
!player[j].skeleton.free && j!=oldowner) {
- if((player[j].aitype!=attacktypecutoff||abs(Random()%6)==0||(player[j].targetanimation!=backhandspringanim&&player[j].targetanimation!=rollanim&&player[j].targetanimation!=flipanim&&Random()%2==0))&&!missed) {
- if( (player[j].creature==wolftype && Random()%3!=0 && player[j].weaponactive==-1 && (player[j].isIdle()||player[j].isRun()||player[j].targetanimation==walkanim))||
+ if((player[j].aitype!=attacktypecutoff||abs(Random()%6)==0||(player[j].animTarget!=backhandspringanim&&player[j].animTarget!=rollanim&&player[j].animTarget!=flipanim&&Random()%2==0))&&!missed) {
+ if( (player[j].creature==wolftype && Random()%3!=0 && player[j].weaponactive==-1 && (player[j].isIdle()||player[j].isRun()||player[j].animTarget==walkanim))||
(player[j].creature==rabbittype && Random()%2==0 && player[j].aitype==attacktypecutoff && player[j].weaponactive==-1)) {
emit_sound_at(knifedrawsound, player[j].coords, 128.);
player[j].weaponactive=0;
- player[j].targetanimation=removeknifeanim;
- player[j].targetframe=1;
+ player[j].animTarget=removeknifeanim;
+ player[j].frameTarget=1;
player[j].target=1;
owner=player[j].id;
if(player[j].num_weapons>0){
player[j].weaponids[player[j].num_weapons-1]=i;
player[j].RagDoll(0);
- player[j].skeleton.joints[player[j].skeleton.jointlabels[abdomen]].velocity+=velocity*2;
- player[j].skeleton.joints[player[j].skeleton.jointlabels[neck]].velocity+=velocity*2;
- player[j].skeleton.joints[player[j].skeleton.jointlabels[rightshoulder]].velocity+=velocity*2;
- player[j].skeleton.joints[player[j].skeleton.jointlabels[leftshoulder]].velocity+=velocity*2;
+ player[j].jointVel(abdomen)+=velocity*2;
+ player[j].jointVel(neck)+=velocity*2;
+ player[j].jointVel(rightshoulder)+=velocity*2;
+ player[j].jointVel(leftshoulder)+=velocity*2;
if(bloodtoggle&&tutoriallevel!=1)
Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
if(tutoriallevel==1)
emit_sound_at(fleshstabsound, position, 128.);
- if(animation[player[0].targetanimation].height==highheight)
+ if(animation[player[0].animTarget].height==highheight)
award_bonus(0, ninja);
else
award_bonus(0, Bullseyebonus);
XYZ terrainlight;
terrainlight=terrain.getLighting(position.x,position.z);
if(environment==snowyenvironment){
- if(findDistancefast(&position,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&position,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, position,velocity, terrainlight.x,terrainlight.y,terrainlight.z, .5, .7);
}
else if(environment==grassyenvironment){
- if(findDistancefast(&position,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&position,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, position,velocity, terrainlight.x*90/255,terrainlight.y*70/255,terrainlight.z*8/255, .5, .5);
}
else if(environment==desertenvironment){
- if(findDistancefast(&position,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&position,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, position,velocity, terrainlight.x*190/255,terrainlight.y*170/255,terrainlight.z*108/255, .5, .7);
}
XYZ terrainlight;
terrainlight=terrain.getLighting(position.x,position.z);
if(environment==snowyenvironment){
- if(findDistancefast(&position,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&position,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, position,velocity, terrainlight.x,terrainlight.y,terrainlight.z, .5, .7);
}
else if(environment==grassyenvironment){
- if(findDistancefast(&position,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&position,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, position,velocity, terrainlight.x*90/255,terrainlight.y*70/255,terrainlight.z*8/255, .5, .5);
}
else if(environment==desertenvironment){
- if(findDistancefast(&position,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&position,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, position,velocity, terrainlight.x*190/255,terrainlight.y*170/255,terrainlight.z*108/255, .5, .7);
}
}
XYZ terrainlight;
terrainlight=terrain.getLighting(tippoint.x,tippoint.z);
if(environment==snowyenvironment){
- if(findDistancefast(&tippoint,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&tippoint,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, tippoint,tipvelocity, terrainlight.x,terrainlight.y,terrainlight.z, .5, .7);
}
else if(environment==grassyenvironment){
- if(findDistancefast(&tippoint,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&tippoint,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, tippoint,tipvelocity, terrainlight.x*90/255,terrainlight.y*70/255,terrainlight.z*8/255, .5, .5);
}
else if(environment==desertenvironment){
- if(findDistancefast(&tippoint,&viewer)<viewdistance*viewdistance/4)
+ if(distsq(&tippoint,&viewer)<viewdistance*viewdistance/4)
Sprite::MakeSprite(cloudsprite, tippoint,tipvelocity, terrainlight.x*190/255,terrainlight.y*170/255,terrainlight.z*108/255, .5, .7);
}
}
flamedelay=.020;
flamedelay-=multiplier;
normalrot=0;
- if(Random()%50==0&&findDistancefast(&position,&viewer)>80) {
+ if(Random()%50==0&&distsq(&position,&viewer)>80) {
XYZ shinepoint;
shinepoint=position+(tippoint-position)*(((float)abs(Random()%100))/100);
Sprite::MakeSprite(weaponshinesprite, shinepoint,normalrot, 1,1,1, (.1+(float)abs(Random()%100)/200-.25)*1/3*fast_sqrt(findDistance(&shinepoint,&viewer)), 1);
static GLfloat M[16];
if((frustum.SphereInFrustum(position.x,position.y,position.z,1)&&
- findDistancefast(&viewer,&position)<viewdistance*viewdistance))
+ distsq(&viewer,&position)<viewdistance*viewdistance))
{
bool draw=false;
if(owner==-1)
drawhowmany=1;
} else {
if(player[owner].occluded<25)
- if((frustum.SphereInFrustum(player[owner].coords.x,player[owner].coords.y+player[owner].scale*3,player[owner].coords.z,player[owner].scale*8)&&findDistancefast(&viewer,&player[owner].coords)<viewdistance*viewdistance)||player[owner].skeleton.free==3)
+ if((frustum.SphereInFrustum(player[owner].coords.x,player[owner].coords.y+player[owner].scale*3,player[owner].coords.z,player[owner].scale*8)&&distsq(&viewer,&player[owner].coords)<viewdistance*viewdistance)||player[owner].skeleton.free==3)
draw=true;
if (
- (player[owner].targetanimation==knifeslashstartanim||
- player[owner].targetanimation==swordsneakattackanim||
- (player[owner].currentanimation==staffhitanim && player[owner].currentframe>1)||
- (player[owner].currentanimation==staffhitreversedanim && player[owner].currentframe>1)||
- (player[owner].currentanimation==staffspinhitanim && player[owner].currentframe>1)||
- (player[owner].currentanimation==staffspinhitreversedanim && player[owner].currentframe>1)||
- (player[owner].currentanimation==staffgroundsmashanim && player[owner].currentframe>1)||
- (player[owner].targetanimation==swordslashanim && player[owner].targetframe<7)||
- player[owner].targetanimation==crouchstabanim||
- player[owner].targetanimation==swordslashreversalanim||
- player[owner].targetanimation==swordslashreversedanim||
- player[owner].targetanimation==knifefollowanim||
- player[owner].targetanimation==swordgroundstabanim||
- player[owner].targetanimation==knifethrowanim)&&
- player[owner].targetanimation==lastdrawnanim&&
+ (player[owner].animTarget==knifeslashstartanim||
+ player[owner].animTarget==swordsneakattackanim||
+ (player[owner].animCurrent==staffhitanim && player[owner].frameCurrent>1)||
+ (player[owner].animCurrent==staffhitreversedanim && player[owner].frameCurrent>1)||
+ (player[owner].animCurrent==staffspinhitanim && player[owner].frameCurrent>1)||
+ (player[owner].animCurrent==staffspinhitreversedanim && player[owner].frameCurrent>1)||
+ (player[owner].animCurrent==staffgroundsmashanim && player[owner].frameCurrent>1)||
+ (player[owner].animTarget==swordslashanim && player[owner].frameTarget<7)||
+ player[owner].animTarget==crouchstabanim||
+ player[owner].animTarget==swordslashreversalanim||
+ player[owner].animTarget==swordslashreversedanim||
+ player[owner].animTarget==knifefollowanim||
+ player[owner].animTarget==swordgroundstabanim||
+ player[owner].animTarget==knifethrowanim)&&
+ player[owner].animTarget==lastdrawnanim&&
!player[owner].skeleton.free
)
{
} else {
drawhowmany=1;
}
- if(player[owner].targetanimation==swordgroundstabanim)
+ if(player[owner].animTarget==swordgroundstabanim)
{
lastdrawnrotation1=rotation1;
lastdrawnrotation2=rotation2;
if(owner!=-1)
{
- if(player[owner].targetanimation==staffhitanim||player[owner].currentanimation==staffhitanim||player[owner].targetanimation==staffhitreversedanim||player[owner].currentanimation==staffhitreversedanim)
+ if(player[owner].animTarget==staffhitanim||player[owner].animCurrent==staffhitanim||player[owner].animTarget==staffhitreversedanim||player[owner].animCurrent==staffhitreversedanim)
{
glTranslatef(0,0,-.3);
}
- if(player[owner].targetanimation==staffgroundsmashanim||player[owner].currentanimation==staffgroundsmashanim||player[owner].targetanimation==staffspinhitreversedanim||player[owner].currentanimation==staffspinhitreversedanim||player[owner].targetanimation==staffspinhitanim||player[owner].currentanimation==staffspinhitanim)
+ if(player[owner].animTarget==staffgroundsmashanim||player[owner].animCurrent==staffgroundsmashanim||player[owner].animTarget==staffspinhitreversedanim||player[owner].animCurrent==staffspinhitreversedanim||player[owner].animTarget==staffspinhitanim||player[owner].animCurrent==staffspinhitanim)
{
glTranslatef(0,0,-.1);
}
lastdrawnbigtilt2=bigtilt2;
lastdrawnsmallrotation=smallrotation;
lastdrawnsmallrotation2=smallrotation2;
- if(owner!=-1)lastdrawnanim=player[owner].currentanimation;
+ if(owner!=-1)lastdrawnanim=player[owner].animCurrent;
}
if(owner!=-1)
{
Weapons::~Weapons()
{
- glDeleteTextures( 1, &Weapon::stafftextureptr );
- glDeleteTextures( 1, &Weapon::knifetextureptr );
- glDeleteTextures( 1, &Weapon::lightbloodknifetextureptr );
- glDeleteTextures( 1, &Weapon::bloodknifetextureptr );
- glDeleteTextures( 1, &Weapon::swordtextureptr );
- glDeleteTextures( 1, &Weapon::lightbloodswordtextureptr );
- glDeleteTextures( 1, &Weapon::bloodswordtextureptr );
+ Weapon::stafftextureptr.destroy();
+ Weapon::knifetextureptr.destroy();
+ Weapon::lightbloodknifetextureptr.destroy();
+ Weapon::bloodknifetextureptr.destroy();
+ Weapon::swordtextureptr.destroy();
+ Weapon::lightbloodswordtextureptr.destroy();
+ Weapon::bloodswordtextureptr.destroy();
}