equal
deleted
inserted
replaced
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 |