hedgewars/uGearsHandlersMess.pas
changeset 9485 3dee8a3b0406
parent 9479 167dea42d7d7
child 9487 fbe203c1d11e
equal deleted inserted replaced
9483:14ad1ac00ac9 9485:3dee8a3b0406
  1054 
  1054 
  1055         i := 200;
  1055         i := 200;
  1056     repeat
  1056     repeat
  1057         Gear^.X := Gear^.X + Gear^.dX;
  1057         Gear^.X := Gear^.X + Gear^.dX;
  1058         Gear^.Y := Gear^.Y + Gear^.dY;
  1058         Gear^.Y := Gear^.Y + Gear^.dY;
       
  1059         WorldWrap(Gear);
  1059         CheckCollision(Gear);
  1060         CheckCollision(Gear);
  1060         if (Gear^.State and gstCollision) <> 0 then
  1061         if (Gear^.State and gstCollision) <> 0 then
  1061             begin
  1062             begin
  1062             Gear^.X := Gear^.X + Gear^.dX * 8;
  1063             Gear^.X := Gear^.X + Gear^.dX * 8;
  1063             Gear^.Y := Gear^.Y + Gear^.dY * 8;
  1064             Gear^.Y := Gear^.Y + Gear^.dY * 8;
  1119 end;
  1120 end;
  1120 
  1121 
  1121 procedure doStepBulletWork(Gear: PGear);
  1122 procedure doStepBulletWork(Gear: PGear);
  1122 var
  1123 var
  1123     i, x, y: LongWord;
  1124     i, x, y: LongWord;
  1124     oX, oY: hwFloat;
  1125     oX, oY, tX, tY, cX, cY: hwFloat;
  1125     VGear: PVisualGear;
  1126     VGear: PVisualGear;
  1126 begin
  1127 begin
  1127     if WorldWrap(Gear) then
       
  1128         begin
       
  1129         SpawnBulletTrail(Gear);
       
  1130         inc(Gear^.PortalCounter);
       
  1131         Gear^.Elasticity:= Gear^.X;
       
  1132         Gear^.Friction:= Gear^.Y
       
  1133         end;
       
  1134     AllInactive := false;
  1128     AllInactive := false;
  1135     inc(Gear^.Timer);
  1129     inc(Gear^.Timer);
  1136     i := 80;
  1130     i := 80;
  1137     oX := Gear^.X;
  1131     oX := Gear^.X;
  1138     oY := Gear^.Y;
  1132     oY := Gear^.Y;
  1139     repeat
  1133     repeat
  1140         Gear^.X := Gear^.X + Gear^.dX;
  1134         Gear^.X := Gear^.X + Gear^.dX;
  1141         Gear^.Y := Gear^.Y + Gear^.dY;
  1135         Gear^.Y := Gear^.Y + Gear^.dY;
       
  1136         tX:= Gear^.X;
       
  1137         tY:= Gear^.Y;
       
  1138         if WorldWrap(Gear) then
       
  1139             begin
       
  1140             cX:= Gear^.X;
       
  1141             cY:= Gear^.Y;
       
  1142             Gear^.X:= tX;
       
  1143             Gear^.Y:= tY;
       
  1144             SpawnBulletTrail(Gear);
       
  1145             Gear^.X:= cX;
       
  1146             Gear^.Y:= cY;
       
  1147             inc(Gear^.PortalCounter);
       
  1148             Gear^.Elasticity:= Gear^.X;
       
  1149             Gear^.Friction:= Gear^.Y;
       
  1150             SpawnBulletTrail(Gear);
       
  1151             end;
  1142         x := hwRound(Gear^.X);
  1152         x := hwRound(Gear^.X);
  1143         y := hwRound(Gear^.Y);
  1153         y := hwRound(Gear^.Y);
  1144 
  1154 
  1145         if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y, x] <> 0) then
  1155         if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) and (Land[y, x] <> 0) then
  1146             inc(Gear^.Damage);
  1156             inc(Gear^.Damage);