hedgewars/GSHandlers.inc
changeset 6556 faa47a7e614a
parent 6555 11f82e49d276
child 6580 6155187bf599
equal deleted inserted replaced
6555:11f82e49d276 6556:faa47a7e614a
  3829     doPortalColorSwitch();
  3829     doPortalColorSwitch();
  3830 
  3830 
  3831     // destroy portal if ground it was attached too is gone
  3831     // destroy portal if ground it was attached too is gone
  3832     if ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) = 0)
  3832     if ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) = 0)
  3833        or (Gear^.Timer < 1)
  3833        or (Gear^.Timer < 1)
  3834        or (Gear^.Hedgehog <> CurrentHedgehog)
  3834        or (Gear^.Hedgehog^.Team <> CurrentHedgehog^.Team)
  3835        or (hwRound(Gear^.Y) > cWaterLine) then
  3835        or (hwRound(Gear^.Y) > cWaterLine) then
  3836     begin
  3836     begin
  3837         deleteGear(Gear);
  3837         deleteGear(Gear);
  3838         EXIT;
  3838         EXIT;
  3839     end;
  3839     end;
  4216 
  4216 
  4217 procedure doStepMovingPortal(Gear: PGear);
  4217 procedure doStepMovingPortal(Gear: PGear);
  4218 begin
  4218 begin
  4219     doPortalColorSwitch();
  4219     doPortalColorSwitch();
  4220     doStepPerPixel(Gear, @doStepMovingPortal_real, true);
  4220     doStepPerPixel(Gear, @doStepMovingPortal_real, true);
  4221     if (Gear^.Timer < 1)
  4221     if (Gear^.Timer < 1) 
  4222        or (Gear^.Hedgehog <> CurrentHedgehog) then
  4222        or (Gear^.Hedgehog^.Team <> CurrentHedgehog^.Team) then
  4223             deleteGear(Gear);
  4223             deleteGear(Gear);
  4224 end;
  4224 end;
  4225 
  4225 
  4226 procedure doStepPortalShot(newPortal: PGear);
  4226 procedure doStepPortalShot(newPortal: PGear);
  4227 var 
  4227 var 
  4257 
  4257 
  4258             iterator := GearsList;
  4258             iterator := GearsList;
  4259             while iterator <> nil do
  4259             while iterator <> nil do
  4260             begin
  4260             begin
  4261                 if (iterator^.Kind = gtPortal) then
  4261                 if (iterator^.Kind = gtPortal) then
  4262                     if (iterator <> newPortal) and (iterator^.Timer > 0) then
  4262                     if (iterator <> newPortal) and (iterator^.Timer > 0) and (iterator^.Hedgehog = CurrentHedgehog) then
  4263                     begin
  4263                     begin
  4264                         if (iterator^.Tag and 2) = (newPortal^.Tag and 2) then
  4264                         if ((iterator^.Tag and 2) = (newPortal^.Tag and 2)) then
  4265                         begin
  4265                             begin
  4266                             iterator^.Timer:= 0;
  4266                             iterator^.Timer:= 0;
  4267                         end
  4267                             end
  4268                         else
  4268                         else
  4269                         begin
  4269                             begin
  4270                             // link portals with each other
  4270                             // link portals with each other
  4271                             newPortal^.IntersectGear := iterator;
  4271                             newPortal^.IntersectGear := iterator;
  4272                             iterator^.IntersectGear := newPortal;
  4272                             iterator^.IntersectGear := newPortal;
  4273                             iterator^.Health := newPortal^.Health;
  4273                             iterator^.Health := newPortal^.Health;
  4274                         end;
  4274                             end;
  4275                     end;
  4275                     end;
  4276                 iterator^.PortalCounter:= 0;
  4276                 iterator^.PortalCounter:= 0;
  4277                 iterator := iterator^.NextGear
  4277                 iterator := iterator^.NextGear
  4278             end;
  4278             end;
  4279         end;
  4279         end;