hedgewars/uGearsList.pas
changeset 11043 79a77bef4c61
parent 11036 6e866be63b1d
child 11046 47a8c19ecb60
equal deleted inserted replaced
11042:d29a05a55bbc 11043:79a77bef4c61
   153 
   153 
   154 if Gear^.NextGear <> nil then
   154 if Gear^.NextGear <> nil then
   155     Gear^.NextGear^.PrevGear:= Gear^.PrevGear;
   155     Gear^.NextGear^.PrevGear:= Gear^.PrevGear;
   156 if Gear^.PrevGear <> nil then
   156 if Gear^.PrevGear <> nil then
   157     Gear^.PrevGear^.NextGear:= Gear^.NextGear
   157     Gear^.PrevGear^.NextGear:= Gear^.NextGear
   158 else 
   158 else
   159     GearsList:= Gear^.NextGear;
   159     GearsList:= Gear^.NextGear;
   160 
   160 
   161 Gear^.NextGear:= nil;
   161 Gear^.NextGear:= nil;
   162 Gear^.PrevGear:= nil
   162 Gear^.PrevGear:= nil
   163 end;
   163 end;
   669 procedure DeleteGear(Gear: PGear);
   669 procedure DeleteGear(Gear: PGear);
   670 var team: PTeam;
   670 var team: PTeam;
   671     t,i: Longword;
   671     t,i: Longword;
   672     k: boolean;
   672     k: boolean;
   673     cakeData: PCakeData;
   673     cakeData: PCakeData;
       
   674     iterator: PGear;
   674 begin
   675 begin
   675 
   676 
   676 ScriptCall('onGearDelete', gear^.uid);
   677 ScriptCall('onGearDelete', gear^.uid);
   677 
   678 
   678 DeleteCI(Gear);
   679 DeleteCI(Gear);
   679 
   680 
   680 FreeAndNilTexture(Gear^.Tex);
   681 FreeAndNilTexture(Gear^.Tex);
       
   682 
       
   683 // remove potential links to this gear
       
   684 // currently relevant to: gears linked by hammer
       
   685 if (Gear^.Kind = gtHedgehog) or (Gear^.Kind = gtMine) or (Gear^.Kind = gtExplosives) then
       
   686     begin
       
   687     // check all gears for stuff to port through
       
   688     iterator := nil;
       
   689     while true do
       
   690         begin
       
   691 
       
   692         // iterate through GearsList
       
   693         if iterator = nil then
       
   694             iterator := GearsList
       
   695         else
       
   696             iterator := iterator^.NextGear;
       
   697 
       
   698         // end of list?
       
   699         if iterator = nil then
       
   700             break;
       
   701 
       
   702         if iterator^.LinkedGear = Gear then
       
   703             iterator^.LinkedGear:= nil;
       
   704         end;
       
   705 
       
   706     end;
   681 
   707 
   682 // make sure that portals have their link removed before deletion
   708 // make sure that portals have their link removed before deletion
   683 if (Gear^.Kind = gtPortal) then
   709 if (Gear^.Kind = gtPortal) then
   684     begin
   710     begin
   685     if (Gear^.LinkedGear <> nil) then
   711     if (Gear^.LinkedGear <> nil) then