equal
deleted
inserted
replaced
32 end; |
32 end; |
33 X:= X + (cWindSpeedf * 200 + dX + tdX) * Steps; |
33 X:= X + (cWindSpeedf * 200 + dX + tdX) * Steps; |
34 Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps; |
34 Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps; |
35 Angle:= Angle + dAngle * Steps; |
35 Angle:= Angle + dAngle * Steps; |
36 |
36 |
37 if (round(X) >= -cScreenWidth - 64) and |
37 if (round(X) >= cLeftScreenBorder) and |
38 (round(X) <= cScreenWidth + LAND_WIDTH) and |
38 (round(X) <= cRightScreenBorder) and |
39 (round(Y) <= (LAND_HEIGHT + 75)) and |
39 (round(Y) <= (LAND_HEIGHT + 75)) and |
40 (Timer > 0) and (Timer-Steps > 0) then |
40 (Timer > 0) and (Timer-Steps > 0) then |
41 begin |
41 begin |
42 if tdX > 0 then sign := 1 |
42 if tdX > 0 then sign := 1 |
43 else sign:= -1; |
43 else sign:= -1; |
49 if ((sign < 0) and (tdY > 0)) or ((sign > 0) and (tdY < 0)) then tdY:= 0; |
49 if ((sign < 0) and (tdY > 0)) or ((sign > 0) and (tdY < 0)) then tdY:= 0; |
50 dec(Timer, Steps) |
50 dec(Timer, Steps) |
51 end |
51 end |
52 else |
52 else |
53 begin |
53 begin |
54 if round(X) < -cScreenWidth - 64 then X:= float(cScreenWidth + LAND_WIDTH) else |
54 if round(X) < cLeftScreenBorder then X:= X + cScreenSpace else |
55 if round(X) > cScreenWidth + LAND_WIDTH then X:= float(-cScreenWidth - 64); |
55 if round(X) > cRightScreenBorder then X:= X - cScreenSpace; |
56 // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + float(25); // For if flag is set for flakes rising upwards? |
56 // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + float(25); // For if flag is set for flakes rising upwards? |
57 if round(Y) > (LAND_HEIGHT + 75) then Y:= Y - float(1024 + 150); // TODO - configure in theme (jellies for example could use limited range) |
57 if round(Y) > (LAND_HEIGHT + 75) then Y:= Y - float(1024 + 150); // TODO - configure in theme (jellies for example could use limited range) |
58 Timer:= 0; |
58 Timer:= 0; |
59 tdX:= 0; |
59 tdX:= 0; |
60 tdY:= 0 |
60 tdY:= 0 |
84 t := 8 * AngleSin(s mod 2048).QWordValue / 4294967296; |
84 t := 8 * AngleSin(s mod 2048).QWordValue / 4294967296; |
85 if (s < 2048) then t := -t; |
85 if (s < 2048) then t := -t; |
86 |
86 |
87 Gear^.Y := LAND_HEIGHT-1184 + Gear^.Timer mod 8 + t; |
87 Gear^.Y := LAND_HEIGHT-1184 + Gear^.Timer mod 8 + t; |
88 |
88 |
89 if round(Gear^.X) < -cScreenWidth - 256 then Gear^.X:= float(cScreenWidth + LAND_WIDTH) else |
89 if round(Gear^.X) < cLeftScreenBorder then Gear^.X:= Gear^.X + cScreenSpace else |
90 if round(Gear^.X) > cScreenWidth + LAND_WIDTH then Gear^.X:= float(-cScreenWidth - 256) |
90 if round(Gear^.X) > cRightScreenBorder then Gear^.X:= Gear^.X - cScreenSpace |
91 end; |
91 end; |
92 |
92 |
93 //////////////////////////////////////////////////////////////////////////////// |
93 //////////////////////////////////////////////////////////////////////////////// |
94 procedure doStepExpl(Gear: PVisualGear; Steps: Longword); |
94 procedure doStepExpl(Gear: PVisualGear; Steps: Longword); |
95 begin |
95 begin |
150 |
150 |
151 Gear^.Y:= Gear^.Y + Gear^.dY * Steps;// + cGravityf * (Steps * Steps); |
151 Gear^.Y:= Gear^.Y + Gear^.dY * Steps;// + cGravityf * (Steps * Steps); |
152 if (Gear^.State and gstTmpFlag) = 0 then |
152 if (Gear^.State and gstTmpFlag) = 0 then |
153 begin |
153 begin |
154 Gear^.dY:= Gear^.dY + cGravityf * Steps; |
154 Gear^.dY:= Gear^.dY + cGravityf * Steps; |
155 if ((GameTicks mod 100) < Steps + 1) then |
155 if ((GameTicks mod 200) < Steps + 1) then |
156 begin |
156 begin |
157 vgt:= AddVisualGear(round(Gear^.X), round(Gear^.Y), vgtFire); |
157 vgt:= AddVisualGear(round(Gear^.X), round(Gear^.Y), vgtFire); |
158 if vgt <> nil then |
158 if vgt <> nil then |
159 begin |
159 begin |
160 vgt^.dx:= 0; |
160 vgt^.dx:= 0; |