summary refs log tree commit diff
path: root/src/GameTick.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/GameTick.cpp')
-rw-r--r--src/GameTick.cpp80
1 files changed, 35 insertions, 45 deletions
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index 5cd11b8..dd23dc9 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -2184,53 +2184,43 @@ void 	Game::Tick(){
 		}
 
 		//Tackle
-
-		if(person[0].currentanimation==diveanim&&visions==0){
-
-			for(int i=1;i<numpeople;i++){
-
-				if(person[i].skeleton.free<1&&findDistancefast(person[i].playercoords,person[0].playercoords+flatfacing)<22){
-
-					float gLoc[3];
-
-					gLoc[0]=(camera.position.x+((person[0].playercoords.x+flatfacing.x)-camera.position.x)/2)/soundscalefactor;
-
-					gLoc[1]=(camera.position.y+((person[0].playercoords.y+flatfacing.y)-camera.position.y)/2)/soundscalefactor;
-
-					gLoc[2]=(camera.position.z+((person[0].playercoords.z+flatfacing.z)-camera.position.z)/2)/soundscalefactor;
-
-					alSourcefv(gSourceID[headwhacksound], AL_POSITION, gLoc);
-
-					alSourcePlay(gSourceID[headwhacksound]);
-
-					person[i].skeleton.free=1;
-
-					person[i].longdead=1;
-
-					for(int j=0;j<person[i].skeleton.num_joints;j++){
-
-						person[i].skeleton.joints[j].position=DoRotation(person[i].skeleton.joints[j].position,0,person[i].playerrotation,0);
-
-						person[i].skeleton.joints[j].position+=person[i].playercoords;
-
-						person[i].skeleton.joints[j].realoldposition=person[i].skeleton.joints[j].position;
-
-						person[i].skeleton.joints[j].velocity=person[0].velocity;
-
-						person[i].skeleton.joints[j].velocity.y=-10;
-
-						person[i].skeleton.joints[j].velocity.x+=abs(Random()%10)-5;
-
-						person[i].skeleton.joints[j].velocity.y+=abs(Random()%10)-5;
-
-						person[i].skeleton.joints[j].velocity.z+=abs(Random()%10)-5;
-
-					}
-
+		if (person[0].currentanimation == diveanim && visions == 0) {
+			for (int i = 1; i < numpeople; i++) {
+				if (person[i].skeleton.free > 0
+				    || findDistancefast(person[i].playercoords,
+				                        person[0].playercoords
+				                        + flatfacing) > 22)
+					continue;
+
+				float gLoc[3] {
+					(camera.position.x
+					 + person[0].playercoords.x
+					 + flatfacing.x) / soundscalefactor / 2,
+					(camera.position.y
+					 + person[0].playercoords.y
+					 + flatfacing.y) / soundscalefactor / 2,
+					(camera.position.z
+					 + person[0].playercoords.z
+					 + flatfacing.z) / soundscalefactor / 2,
+				};
+
+				alSourcefv(gSourceID[headwhacksound],
+				           AL_POSITION, gLoc);
+				alSourcePlay(gSourceID[headwhacksound]);
+				person[i].skeleton.free = 1;
+				person[i].longdead = 1;
+
+				for (auto& joint : person[i].skeleton.joints) {
+					joint.position = DoRotation(joint.position, 0, person[i].playerrotation, 0);
+					joint.position += person[i].playercoords;
+					joint.realoldposition = joint.position;
+					joint.velocity = person[0].velocity;
+					joint.velocity.y = -10;
+					joint.velocity.x += abs(Random() % 10) - 5;
+					joint.velocity.y += abs(Random() % 10) - 5;
+					joint.velocity.z += abs(Random() % 10) - 5;
 				}
-
 			}
-
 		}
 
 		//Fire/wing