hedgewars/uGears.pas
changeset 543 465e2ec8f05f
parent 542 ec26095f1bed
child 547 b81a055f2d06
equal deleted inserted replaced
542:ec26095f1bed 543:465e2ec8f05f
   276    gtFirePunch: begin
   276    gtFirePunch: begin
   277                 Result^.Radius:= 15;
   277                 Result^.Radius:= 15;
   278                 Result^.Tag:= Y
   278                 Result^.Tag:= Y
   279                 end;
   279                 end;
   280      gtAirBomb: begin
   280      gtAirBomb: begin
   281                 Result^.Radius:= 10;
   281                 Result^.Radius:= 5;
   282                 end;
   282                 end;
   283    gtBlowTorch: begin
   283    gtBlowTorch: begin
   284                 Result^.Radius:= cHHRadius + cBlowTorchC;
   284                 Result^.Radius:= cHHRadius + cBlowTorchC;
   285                 Result^.Timer:= 7500;
   285                 Result^.Timer:= 7500;
   286                 end;
   286                 end;
   774 end;
   774 end;
   775 
   775 
   776 procedure AssignHHCoords;
   776 procedure AssignHHCoords;
   777 var Team: PTeam;
   777 var Team: PTeam;
   778     i, t: LongInt;
   778     i, t: LongInt;
       
   779     ar: array[0..Pred(cMaxHHs)] of PGear;
       
   780     Count: Longword;
   779 begin
   781 begin
   780 Team:= TeamsList;
   782 Team:= TeamsList;
   781 t:= 0;
   783 
   782 while Team <> nil do
   784 if (GameFlags and gfForts) <> 0 then
       
   785    begin
       
   786    t:= 0;
       
   787    while Team <> nil do
       
   788       begin
       
   789       for i:= 0 to cMaxHHIndex do
       
   790           with Team^.Hedgehogs[i] do
       
   791                if Gear <> nil then FindPlace(Gear, false, t, t + 1024);
       
   792       inc(t, 1024);
       
   793       Team:= Team^.Next
       
   794       end
       
   795    end else // mix hedgehogs
       
   796    begin
       
   797    Count:= 0;
       
   798    while Team <> nil do
   783       begin
   799       begin
   784       for i:= 0 to cMaxHHIndex do
   800       for i:= 0 to cMaxHHIndex do
   785           with Team^.Hedgehogs[i] do
   801           with Team^.Hedgehogs[i] do
   786                if Gear <> nil then
   802                if Gear <> nil then
   787                   if (GameFlags and gfForts) = 0 then FindPlace(Gear, false, 0, 2048)
   803                   begin
   788                                                  else FindPlace(Gear, false, t, t + 1024);
   804                   ar[Count]:= Gear;
   789       inc(t, 1024);
   805                   inc(Count)
       
   806                   end;
   790       Team:= Team^.Next
   807       Team:= Team^.Next
       
   808       end;
       
   809 
       
   810    while (Count > 0) do
       
   811       begin
       
   812       i:= GetRandom(Count);
       
   813       FindPlace(ar[i], false, 0, 2048);
       
   814       ar[i]:= ar[Count - 1];
       
   815       dec(Count)
   791       end
   816       end
       
   817    end
   792 end;
   818 end;
   793 
   819 
   794 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear;
   820 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear;
   795 var t: PGear;
   821 var t: PGear;
   796 begin
   822 begin