hedgewars/VGSHandlers.inc
changeset 3592 0bcad5c38c9e
parent 3590 66e1bc1ea3a9
child 3593 ae50f63e4fa9
equal deleted inserted replaced
3591:c447d5218f6f 3592:0bcad5c38c9e
    68     DeleteVisualGear(Gear);
    68     DeleteVisualGear(Gear);
    69 end;
    69 end;
    70 
    70 
    71 ////////////////////////////////////////////////////////////////////////////////
    71 ////////////////////////////////////////////////////////////////////////////////
    72 procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
    72 procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
    73 var i: Longword;
    73 var s: Longword;
       
    74     t: hwFloat;
    74 begin
    75 begin
    75 Gear^.X:= Gear^.X + (cWindSpeed * 200 + Gear^.dX) * Steps;
    76 Gear^.X:= Gear^.X + (cWindSpeed * 200 + Gear^.dX) * Steps;
    76 
    77 
    77 for i:= 0 to Steps - 1 do
    78 // up-and-down-bounce magic
    78     begin
    79 s := (GameTicks + Gear^.mdy) mod 4096;
    79     if hwRound(Gear^.Y) > LAND_HEIGHT-1184 then // TODO - configure in theme
    80 t := AngleSin(s mod 2048);
    80         Gear^.dY:= Gear^.dY - _1div50000
    81 t.isNegative := (s < 2048);
    81     else
    82 t.QWordValue := t.QWordValue * 8;
    82         Gear^.dY:= Gear^.dY + _1div50000;
    83 
    83 
    84 Gear^.Y := int2hwFloat(LAND_HEIGHT-1184 + Gear^.mdy mod 8) + t;
    84     Gear^.Y:= Gear^.Y + Gear^.dY
    85 
    85     end;
       
    86 
    86 
    87 if hwRound(Gear^.X) < -cScreenWidth - 256 then Gear^.X:= int2hwFloat(cScreenWidth + LAND_WIDTH) else
    87 if hwRound(Gear^.X) < -cScreenWidth - 256 then Gear^.X:= int2hwFloat(cScreenWidth + LAND_WIDTH) else
    88 if hwRound(Gear^.X) > cScreenWidth + LAND_WIDTH then Gear^.X:= int2hwFloat(-cScreenWidth - 256)
    88 if hwRound(Gear^.X) > cScreenWidth + LAND_WIDTH then Gear^.X:= int2hwFloat(-cScreenWidth - 256)
    89 end;
    89 end;
    90 
    90