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.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index 7ecab8e..f72a1c4 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -736,6 +736,23 @@ void tackle(Game* game, XYZ flatfacing)
 	}
 }
 
+void renderBloodSprite(Game* game, size_t i)
+{
+	auto& person = game->person[i];
+	if (person.bleeding <= 0)
+		return;
+	person.bleeding -= multiplier;
+	person.bleeddelay -= multiplier * 10;
+	if (person.bleeddelay > 0)
+		return;
+	person.bleeddelay = 1.0f;
+	XYZ loc = (person.bjoint1->position + person.bjoint2->position) / 2.0f;
+	sprites.MakeSprite(bloodspritedown, 0.6f, 1.0f, 0.2f, 0.2f,
+		person.skeleton.free ? loc : DoRotation(loc,
+			0.0f, person.playerrotation, 0.0f) + person.playercoords,
+		{}, person.bleeding * 3.0f);
+}
+
 void renderLaser(Game* game)
 {
 	auto& player = game->person[0];
@@ -877,7 +894,6 @@ void Game::Tick()
 	XYZ blah;
 	int closesttarget = 0;
 	float leastdistance = 0.0;
-	XYZ bleedloc;
 	XYZ vel;
 	float tooclose;
 	float toofar;
@@ -952,23 +968,7 @@ void Game::Tick()
 				if(person[i].maxhealth>100)person[i].maxhealth=100;
 		}
 
-		if(person[i].bleeding>0){
-			person[i].bleeding-=multiplier;
-			person[i].bleeddelay-=multiplier*10;
-			if(person[i].bleeddelay<=0){
-				person[i].bleeddelay=1;
-				if(person[i].skeleton.free==0){
-					bleedloc=DoRotation((person[i].bjoint1->position+person[i].bjoint2->position)/2,0,person[i].playerrotation,0)+person[i].playercoords;
-				}
-				if(person[i].skeleton.free>0){
-					bleedloc=(person[i].bjoint1->position+person[i].bjoint2->position)/2;
-				}
-				vel = {};
-				sprites.MakeSprite(bloodspritedown, .6, 1, .2, .2,bleedloc, vel, 3*person[i].bleeding);
-			}
-
-		}
-
+		renderBloodSprite(this, i);
 		if (!person[i].skeleton.free) {
 			// Gun
 			switch (person[i].type) {