hedgewars/uGears.pas
changeset 538 74219eadab5e
parent 534 92fb2b0d5117
child 539 6a9bf1852bbc
equal deleted inserted replaced
537:4d2e60623e44 538:74219eadab5e
   445              hwSign(Gear^.dX), 0,
   445              hwSign(Gear^.dX), 0,
   446              PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
   446              PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
   447              Surface);
   447              Surface);
   448 
   448 
   449 with PHedgehog(Gear^.Hedgehog)^ do
   449 with PHedgehog(Gear^.Hedgehog)^ do
   450      if (Gear^.State and not gstAnimation) = 0 then
   450      if (Gear^.State{ and not gstAnimation}) = 0 then
   451         begin
   451         begin
   452         t:= hwRound(Gear^.Y) - cHHRadius - 10 + WorldDy;
   452         t:= hwRound(Gear^.Y) - cHHRadius - 10 + WorldDy;
   453         dec(t, HealthTag^.h + 2);
   453         dec(t, HealthTag^.h + 2);
   454         DrawCentered(hwRound(Gear^.X) + WorldDx, t, HealthTag, Surface);
   454         DrawCentered(hwRound(Gear^.X) + WorldDx, t, HealthTag, Surface);
   455         dec(t, NameTag^.h + 2);
   455         dec(t, NameTag^.h + 2);
   456         DrawCentered(hwRound(Gear^.X) + WorldDx, t, NameTag, Surface);
   456         DrawCentered(hwRound(Gear^.X) + WorldDx, t, NameTag, Surface);
   457         dec(t, Team^.NameTag^.h + 2);
   457         dec(t, Team^.NameTag^.h + 2);
   458         DrawCentered(hwRound(Gear^.X) + WorldDx, t, Team^.NameTag, Surface)
   458         DrawCentered(hwRound(Gear^.X) + WorldDx, t, Team^.NameTag, Surface)
   459         end else // Current hedgehog
   459         end else // Current hedgehog
       
   460       if (Gear^.State and gstHHDriven) <> 0 then
   460         begin
   461         begin
   461         if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then
   462         if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then
   462            DrawSprite(sprFinger, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 64 + WorldDy,
   463            DrawSprite(sprFinger, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 64 + WorldDy,
   463                       GameTicks div 32 mod 16, Surface);
   464                       GameTicks div 32 mod 16, Surface);
   464         if (Gear^.State and (gstMoving or gstDrowning or gstFalling)) = 0 then
   465         if (Gear^.State and (gstMoving or gstDrowning or gstFalling)) = 0 then
   647                                       else dmgRadius:= Radius;
   648                                       else dmgRadius:= Radius;
   648 Gear:= GearsList;
   649 Gear:= GearsList;
   649 while Gear <> nil do
   650 while Gear <> nil do
   650       begin
   651       begin
   651       dmg:= dmgRadius - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y)));
   652       dmg:= dmgRadius - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y)));
   652       if (dmg > 0) and
   653       if (dmg > 1) and
   653          ((Gear^.State and gstNoDamage) = 0) then
   654          ((Gear^.State and gstNoDamage) = 0) then
   654          begin
   655          begin
   655          dmg:= dmg div 2;
   656          dmg:= dmg div 2;
   656          case Gear^.Kind of
   657          case Gear^.Kind of
   657               gtHedgehog,
   658               gtHedgehog,
   696 hh:= Gear^.Hedgehog;
   697 hh:= Gear^.Hedgehog;
   697 t:= GearsList;
   698 t:= GearsList;
   698 while t <> nil do
   699 while t <> nil do
   699     begin
   700     begin
   700     dmg:= min(Gear^.Radius + t^.Radius - hwRound(Distance(Gear^.X - t^.X, Gear^.Y - t^.Y)), 25);
   701     dmg:= min(Gear^.Radius + t^.Radius - hwRound(Distance(Gear^.X - t^.X, Gear^.Y - t^.Y)), 25);
   701     if dmg >= 0 then
   702     if dmg > 0 then
   702        case t^.Kind of
   703        case t^.Kind of
   703            gtHedgehog,
   704            gtHedgehog,
   704                gtMine,
   705                gtMine,
   705                gtCase: begin
   706                gtCase: begin
   706                        inc(t^.Damage, dmg);
   707                        inc(t^.Damage, dmg);
   746                        if t^.ar[i]^.Kind = gtHedgehog then
   747                        if t^.ar[i]^.Kind = gtHedgehog then
   747                           begin
   748                           begin
   748                           AddDamageTag(hwRound(t^.ar[i]^.X), hwRound(t^.ar[i]^.Y), Damage, t^.ar[i]);
   749                           AddDamageTag(hwRound(t^.ar[i]^.X), hwRound(t^.ar[i]^.Y), Damage, t^.ar[i]);
   749                           inc(hh^.DamageGiven, Damage)
   750                           inc(hh^.DamageGiven, Damage)
   750                           end;
   751                           end;
       
   752                        DeleteCI(t^.ar[i]);
   751                        t^.ar[i]^.dX:= Ammo^.dX * Power * _0_01;
   753                        t^.ar[i]^.dX:= Ammo^.dX * Power * _0_01;
   752                        t^.ar[i]^.dY:= Ammo^.dY * Power * _0_01;
   754                        t^.ar[i]^.dY:= Ammo^.dY * Power * _0_01;
   753                        t^.ar[i]^.Active:= true;
   755                        t^.ar[i]^.Active:= true;
   754                        t^.ar[i]^.State:= t^.ar[i]^.State or gstMoving;
   756                        t^.ar[i]^.State:= t^.ar[i]^.State or gstMoving;
   755                        DeleteCI(t^.ar[i]);
       
   756                        FollowGear:= t^.ar[i]
   757                        FollowGear:= t^.ar[i]
   757                        end;
   758                        end;
   758            end
   759            end
   759     end;
   760     end;
   760 SetAllToActive
   761 SetAllToActive