hedgewars/uGearsHandlersRope.pas
changeset 10681 474d418a34c5
parent 10108 c68cf030eded
child 10684 d403fd2f9a6f
equal deleted inserted replaced
10679:5989c293955a 10681:474d418a34c5
    32 var
    32 var
    33     HHGear: PGear;
    33     HHGear: PGear;
    34     tX:     hwFloat;
    34     tX:     hwFloat;
    35 begin
    35 begin
    36     HHGear := Gear^.Hedgehog^.Gear;
    36     HHGear := Gear^.Hedgehog^.Gear;
       
    37     if HHGear = nil then
       
    38         begin
       
    39         DeleteGear(Gear);
       
    40         exit()
       
    41         end;
       
    42 
    37     tX:= HHGear^.X;
    43     tX:= HHGear^.X;
    38     if WorldWrap(HHGear) and (WorldEdge = weWrap) and
    44     if WorldWrap(HHGear) and (WorldEdge = weWrap) and
    39        ((TestCollisionXwithGear(HHGear, 1) <> 0) or (TestCollisionXwithGear(HHGear, -1) <> 0))  then
    45        ((TestCollisionXwithGear(HHGear, 1) <> 0) or (TestCollisionXwithGear(HHGear, -1) <> 0))  then
    40         begin
    46         begin
    41         HHGear^.X:= tX;
    47         HHGear^.X:= tX;
   122     wrongSide: boolean;
   128     wrongSide: boolean;
   123 begin
   129 begin
   124     if GameTicks mod 4 <> 0 then exit;
   130     if GameTicks mod 4 <> 0 then exit;
   125 
   131 
   126     HHGear := Gear^.Hedgehog^.Gear;
   132     HHGear := Gear^.Hedgehog^.Gear;
       
   133     if HHGear = nil then
       
   134         begin
       
   135         DeleteGear(Gear);
       
   136         exit()
       
   137         end;
   127 
   138 
   128     tX:= HHGear^.X;
   139     tX:= HHGear^.X;
   129     if WorldWrap(HHGear) and (WorldEdge = weWrap) and
   140     if WorldWrap(HHGear) and (WorldEdge = weWrap) and
   130        ((TestCollisionXwithGear(HHGear, 1) <> 0) or (TestCollisionXwithGear(HHGear, -1) <> 0))  then
   141        ((TestCollisionXwithGear(HHGear, 1) <> 0) or (TestCollisionXwithGear(HHGear, -1) <> 0))  then
   131         begin
   142         begin
   412     Gear^.X := Gear^.X - Gear^.dX;
   423     Gear^.X := Gear^.X - Gear^.dX;
   413     Gear^.Y := Gear^.Y - Gear^.dY;
   424     Gear^.Y := Gear^.Y - Gear^.dY;
   414     Gear^.Elasticity := Gear^.Elasticity + _1;
   425     Gear^.Elasticity := Gear^.Elasticity + _1;
   415 
   426 
   416     HHGear := Gear^.Hedgehog^.Gear;
   427     HHGear := Gear^.Hedgehog^.Gear;
       
   428     if HHGear = nil then
       
   429         begin
       
   430         DeleteGear(Gear);
       
   431         exit()
       
   432         end;
       
   433 
   417     DeleteCI(HHGear);
   434     DeleteCI(HHGear);
   418 
   435 
   419     if (HHGear^.State and gstMoving) <> 0 then
   436     if (HHGear^.State and gstMoving) <> 0 then
   420         begin
   437         begin
   421         if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0 then
   438         if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0 then