hedgewars/GSHandlers.inc
changeset 3397 c47af0694a7d
parent 3396 e5b3e5f2818e
child 3398 ede254e24545
equal deleted inserted replaced
3396:e5b3e5f2818e 3397:c47af0694a7d
  3037         exit
  3037         exit
  3038     end;
  3038     end;
  3039 end;
  3039 end;
  3040 
  3040 
  3041 procedure doStepPortal(Gear: PGear);
  3041 procedure doStepPortal(Gear: PGear);
  3042 begin
  3042 var tmpGear, iterator: PGear;
  3043     if Gear^.IntersectGear <> nil then
  3043 begin
  3044         begin
  3044 AddFileLog('...');
       
  3045     if not AllInactive and (Gear^.IntersectGear <> nil) then
       
  3046         begin
       
  3047 AddFileLog('!!!');
       
  3048         iterator:= GearsList;
       
  3049         while iterator <> nil do
       
  3050             begin
       
  3051             if
       
  3052 // iterator^.Active and 
       
  3053 (iterator^.Kind <> gtPortal) and 
       
  3054               // (hwRound(hwAbs(Gear^.X-iterator^.X)+hwAbs(Gear^.Y-iterator^.Y)) < Gear^.Radius) and 
       
  3055               // ((hwAbs(Gear^.X-(iterator^.X+iterator^.dX))+hwAbs(Gear^.Y-(iterator^.Y+iterator^.dY))).QWordValue < (hwAbs(Gear^.X-iterator^.X)+hwAbs(Gear^.Y-iterator^.Y)).QWordValue) and
       
  3056                (hwRound(Distance(Gear^.X-iterator^.X,Gear^.Y-iterator^.Y)) < Gear^.Radius) then // Let's check this one more closely
       
  3057                 begin
       
  3058 AddFileLog(inttostr(iterator^.uid));
       
  3059                 iterator^.X:=Gear^.IntersectGear^.X+_128;
       
  3060                 iterator^.Y:=Gear^.IntersectGear^.Y+_128;
       
  3061                 iterator^.dX.isNegative:= not iterator^.dX.isNegative;
       
  3062                 end;
       
  3063 
       
  3064             iterator:= iterator^.NextGear;
       
  3065             end;
  3045 // do portal stuff
  3066 // do portal stuff
  3046         end
  3067         end
  3047 
  3068 
  3048 (*
  3069 (*
  3049 
  3070 
  3089         begin
  3110         begin
  3090         if CurrentHedgehog <> nil then
  3111         if CurrentHedgehog <> nil then
  3091             if Gear^.Tag = 2 then CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 1
  3112             if Gear^.Tag = 2 then CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 1
  3092             else CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 2;
  3113             else CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].Timer:= 2;
  3093         inc(Gear^.Tag);
  3114         inc(Gear^.Tag);
  3094         Gear^.doStep:= @doStepPortal
  3115         Gear^.doStep:= @doStepPortal;
       
  3116         if Gear^.IntersectGear <> nil then
       
  3117             begin
       
  3118             Gear^.IntersectGear^.IntersectGear:= Gear;
       
  3119             SetAllToActive
       
  3120             end
  3095         end
  3121         end
  3096     end
  3122     end
  3097 else if (y > cWaterLine + cVisibleWater + Gear^.Radius) or (y < -LAND_WIDTH) or (x > LAND_WIDTH + LAND_WIDTH) or (x < -LAND_WIDTH) then
  3123 else if (y > cWaterLine + cVisibleWater + Gear^.Radius) or (y < -LAND_WIDTH) or (x > LAND_WIDTH + LAND_WIDTH) or (x < -LAND_WIDTH) then
  3098     begin
  3124     begin
  3099     if CurrentHedgehog <> nil then
  3125     if CurrentHedgehog <> nil then