equal
deleted
inserted
replaced
25 * is usually not necessary and therefore undesirable. |
25 * is usually not necessary and therefore undesirable. |
26 *) |
26 *) |
27 |
27 |
28 procedure doStepFlake(Gear: PVisualGear; Steps: Longword); |
28 procedure doStepFlake(Gear: PVisualGear; Steps: Longword); |
29 var sign: real; |
29 var sign: real; |
|
30 moved: boolean; |
30 begin |
31 begin |
31 if vobCount = 0 then exit; |
32 if vobCount = 0 then exit; |
32 |
33 |
33 sign:= 1; |
34 sign:= 1; |
34 with Gear^ do |
35 with Gear^ do |
82 tdY:= 0; |
83 tdY:= 0; |
83 dec(Timer, Steps) |
84 dec(Timer, Steps) |
84 end |
85 end |
85 else |
86 else |
86 begin |
87 begin |
|
88 moved:= false; |
87 if round(X) < cLeftScreenBorder then |
89 if round(X) < cLeftScreenBorder then |
88 X:= X + cScreenSpace |
90 begin |
|
91 X:= X + cScreenSpace; |
|
92 moved:= true |
|
93 end |
89 else |
94 else |
90 if round(X) > cRightScreenBorder then |
95 if round(X) > cRightScreenBorder then |
|
96 begin |
91 X:= X - cScreenSpace; |
97 X:= X - cScreenSpace; |
|
98 moved:= true |
|
99 end; |
92 // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + 25.0; // For if flag is set for flakes rising upwards? |
100 // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + 25.0; // For if flag is set for flakes rising upwards? |
93 if (Gear^.Layer = 2) and (round(Y) - 225 > LAND_HEIGHT) then |
101 if (Gear^.Layer = 2) and (round(Y) - 225 > LAND_HEIGHT) then |
94 begin |
102 begin |
95 X:= cLeftScreenBorder + random(cScreenSpace); |
103 X:= cLeftScreenBorder + random(cScreenSpace); |
96 Y:= Y - (1024 + 250 + random(50)) // TODO - configure in theme (jellies for example could use limited range) |
104 Y:= Y - (1024 + 250 + random(50)); // TODO - configure in theme (jellies for example could use limited range) |
|
105 moved:= true |
97 end |
106 end |
98 else if (Gear^.Layer <> 2) and (round(Y) + 50 > LAND_HEIGHT) then |
107 else if (Gear^.Layer <> 2) and (round(Y) + 50 > LAND_HEIGHT) then |
99 begin |
108 begin |
100 X:= cLeftScreenBorder + random(cScreenSpace); |
109 X:= cLeftScreenBorder + random(cScreenSpace); |
101 Y:= Y - (1024 + random(25)) |
110 Y:= Y - (1024 + random(25)); |
|
111 moved:= true |
|
112 end; |
|
113 if moved then |
|
114 begin |
|
115 Angle:= random(360); |
|
116 dx:= 0.0000038654705 * random(10000); |
|
117 dy:= 0.000003506096 * random(7000); |
|
118 if random(2) = 0 then dx := -dx |
102 end; |
119 end; |
103 Timer:= 0; |
120 Timer:= 0; |
104 tdX:= 0; |
121 tdX:= 0; |
105 tdY:= 0 |
122 tdY:= 0 |
106 end; |
123 end; |