diff options
-rw-r--r-- | src/GameTick.cpp | 36 |
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) { |