hedgewars/uVisualGears.pas
changeset 806 d397c502a5dd
parent 805 4d75759b38bd
child 808 09ffccb9600a
equal deleted inserted replaced
805:4d75759b38bd 806:d397c502a5dd
    67 Gear^.Y:= Gear^.Y + (Gear^.dY + cGravity * vobVelocity) * Steps;
    67 Gear^.Y:= Gear^.Y + (Gear^.dY + cGravity * vobVelocity) * Steps;
    68 Gear^.Angle:= Gear^.Angle + Gear^.dAngle;
    68 Gear^.Angle:= Gear^.Angle + Gear^.dAngle;
    69 
    69 
    70 if hwRound(Gear^.X) < -cScreenWidth - 64 then Gear^.X:= int2hwFloat(cScreenWidth + 2048) else
    70 if hwRound(Gear^.X) < -cScreenWidth - 64 then Gear^.X:= int2hwFloat(cScreenWidth + 2048) else
    71 if hwRound(Gear^.X) > cScreenWidth + 2048 then Gear^.X:= int2hwFloat(-cScreenWidth - 64);
    71 if hwRound(Gear^.X) > cScreenWidth + 2048 then Gear^.X:= int2hwFloat(-cScreenWidth - 64);
    72 if hwRound(Gear^.Y) > 1024 then Gear^.Y:= - _128
    72 if hwRound(Gear^.Y) > 1100 then Gear^.Y:= - _128
    73 end;
    73 end;
    74 
    74 
    75 procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
    75 procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
    76 begin
    76 begin
    77 Gear^.X:= Gear^.X + (cWindSpeed * 200 + Gear^.dX) * Steps;
    77 Gear^.X:= Gear^.X + (cWindSpeed * 200 + Gear^.dX) * Steps;
   108                Frame:= random(vobFramesCount);
   108                Frame:= random(vobFramesCount);
   109                Angle:= random * 360;
   109                Angle:= random * 360;
   110                dx.isNegative:= random(2) = 0;
   110                dx.isNegative:= random(2) = 0;
   111                dx.QWordValue:= random(100000000);
   111                dx.QWordValue:= random(100000000);
   112                dy.isNegative:= false;
   112                dy.isNegative:= false;
   113                dy.QWordValue:= random(20);
   113                dy.QWordValue:= random(70000000);
   114                dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
   114                dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
   115                end;
   115                end;
   116    vgtCloud: with Result^ do
   116    vgtCloud: with Result^ do
   117                begin
   117                begin
   118                Frame:= random(4);
   118                Frame:= random(4);
   156       begin
   156       begin
   157       case Gear^.Kind of
   157       case Gear^.Kind of
   158            vgtFlake: if vobVelocity = 0 then
   158            vgtFlake: if vobVelocity = 0 then
   159                         DrawSprite(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, nil)
   159                         DrawSprite(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, nil)
   160                      else
   160                      else
   161                         DrawRotated(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Angle);
   161                         DrawRotatedF(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, Gear^.Angle);
   162 
   162 
   163            vgtCloud: DrawSprite(sprCloud, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, nil);
   163            vgtCloud: DrawSprite(sprCloud, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, nil);
   164               end;
   164               end;
   165       Gear:= Gear^.NextGear
   165       Gear:= Gear^.NextGear
   166       end;
   166       end;