hedgewars/uGears.pas
changeset 82 2f4f3236cccc
parent 81 d74e0e914b50
child 83 207c85fbef51
equal deleted inserted replaced
81:d74e0e914b50 82:2f4f3236cccc
   120                                                                doStepDynamite,
   120                                                                doStepDynamite,
   121                                                                doStepTeamHealthSorter,
   121                                                                doStepTeamHealthSorter,
   122                                                                doStepBomb,
   122                                                                doStepBomb,
   123                                                                doStepCluster,
   123                                                                doStepCluster,
   124                                                                doStepShover,
   124                                                                doStepShover,
   125                                                                doStepFlame
   125                                                                doStepFlame,
       
   126                                                                doStepFirePunch
   126                                                                );
   127                                                                );
   127 
   128 
   128 function AddGear(X, Y: integer; Kind: TGearType; State: Cardinal; const dX: real=0.0; dY: real=0.0; Timer: LongWord=0): PGear;
   129 function AddGear(X, Y: integer; Kind: TGearType; State: Cardinal; const dX: real=0.0; dY: real=0.0; Timer: LongWord=0): PGear;
   129 const Counter: Longword = 0;
   130 const Counter: Longword = 0;
   130 begin
   131 begin
   229                 Result.Radius:= 1;
   230                 Result.Radius:= 1;
   230                 Result.Health:= 2;
   231                 Result.Health:= 2;
   231                 Result.dY:= (getrandom - 0.8) * 0.03;
   232                 Result.dY:= (getrandom - 0.8) * 0.03;
   232                 Result.dX:= (getrandom - 0.5) * 0.4
   233                 Result.dX:= (getrandom - 0.5) * 0.4
   233                 end;
   234                 end;
       
   235    gtFirePunch: begin
       
   236                 Result.Radius:= 15;
       
   237                 Result.Tag:= Y
       
   238                 end;
   234      end;
   239      end;
   235 if GearsList = nil then GearsList:= Result
   240 if GearsList = nil then GearsList:= Result
   236                    else begin
   241                    else begin
   237                    GearsList.PrevGear:= Result;
   242                    GearsList.PrevGear:= Result;
   238                    Result.NextGear:= GearsList;
   243                    Result.NextGear:= GearsList;
   255       begin
   260       begin
   256       team:= PHedgehog(Gear.Hedgehog).Team;
   261       team:= PHedgehog(Gear.Hedgehog).Team;
   257       PHedgehog(Gear.Hedgehog).Gear:= nil;
   262       PHedgehog(Gear.Hedgehog).Gear:= nil;
   258       RecountTeamHealth(team);
   263       RecountTeamHealth(team);
   259       end;
   264       end;
   260 if CurAmmoGear = Gear then
   265 if CurAmmoGear = Gear then CurAmmoGear:= nil;
   261    CurAmmoGear:= nil;
       
   262 if FollowGear = Gear then FollowGear:= nil;
   266 if FollowGear = Gear then FollowGear:= nil;
   263 {$IFDEF DEBUGFILE}AddFileLog('DeleteGear: handle = '+inttostr(integer(Gear)));{$ENDIF}
   267 {$IFDEF DEBUGFILE}AddFileLog('DeleteGear: handle = '+inttostr(integer(Gear)));{$ENDIF}
   264 if Gear.NextGear <> nil then Gear.NextGear.PrevGear:= Gear.PrevGear;
   268 if Gear.NextGear <> nil then Gear.NextGear.PrevGear:= Gear.PrevGear;
   265 if Gear.PrevGear <> nil then Gear.PrevGear.NextGear:= Gear.NextGear
   269 if Gear.PrevGear <> nil then Gear.PrevGear.NextGear:= Gear.NextGear
   266                         else begin
   270                         else begin
   619            end
   623            end
   620     end
   624     end
   621 end;
   625 end;
   622 
   626 
   623 procedure AssignHHCoords;
   627 procedure AssignHHCoords;
   624 var Gear: PGear;
   628 var Team: PTeam;
   625 begin
   629     i, t: integer;
   626 Gear:= GearsList;
   630 begin
   627 while Gear <> nil do
   631 Team:= TeamsList;
   628       begin
   632 t:= 0;
   629       if Gear.Kind = gtHedgehog then
   633 while Team <> nil do
   630          FindPlace(Gear, false, 0, 2048);
   634       begin
   631       Gear:= Gear.NextGear
   635       for i:= 0 to cMaxHHIndex do
       
   636           with Team.Hedgehogs[i] do
       
   637                if Gear <> nil then
       
   638                   if (GameFlags and gfForts) = 0 then FindPlace(Gear, false, 0, 2048)
       
   639                                                  else FindPlace(Gear, false, t, t + 1024);
       
   640       inc(t, 1024);
       
   641       Team:= Team.Next
   632       end
   642       end
   633 end;
   643 end;
   634 
   644 
   635 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: integer): PGear;
   645 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: integer): PGear;
   636 var t: PGear;
   646 var t: PGear;