146 exit |
145 exit |
147 end; |
146 end; |
148 |
147 |
149 New(gear); |
148 New(gear); |
150 FillChar(gear^, sizeof(TVisualGear), 0); |
149 FillChar(gear^, sizeof(TVisualGear), 0); |
151 gear^.X:= int2hwFloat(X); |
150 gear^.X:= float(X); |
152 gear^.Y:= int2hwFloat(Y); |
151 gear^.Y:= float(Y); |
153 gear^.Kind := Kind; |
152 gear^.Kind := Kind; |
154 gear^.doStep:= doStepHandlers[Kind]; |
153 gear^.doStep:= doStepHandlers[Kind]; |
155 gear^.State:= 0; |
154 gear^.State:= 0; |
156 gear^.Tint:= $FFFFFFFF; |
155 gear^.Tint:= $FFFFFFFF; |
157 |
156 |
158 with gear^ do |
157 with gear^ do |
159 case Kind of |
158 case Kind of |
160 vgtFlake: begin |
159 vgtFlake: begin |
161 Timer:= 0; |
160 Timer:= 0; |
162 tdX:= _0; |
161 tdX:= 0; |
163 tdY:= _0; |
162 tdY:= 0; |
164 FrameTicks:= random(vobFrameTicks); |
163 FrameTicks:= random(vobFrameTicks); |
165 Frame:= random(vobFramesCount); |
164 Frame:= random(vobFramesCount); |
166 Angle:= random * 360; |
165 Angle:= random * 360; |
167 dx.isNegative:= random(2) = 0; |
166 dx:= 0.0000038654705 * random(10000); |
168 dx.QWordValue:= random(100000000); |
167 dy:= 0.000003506096 * random(7000); |
169 dy.isNegative:= false; |
168 if random(2) = 0 then dx*=-1; |
170 dy.QWordValue:= random(70000000); |
|
171 dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000 |
169 dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000 |
172 end; |
170 end; |
173 vgtCloud: begin |
171 vgtCloud: begin |
174 Frame:= random(4); |
172 Frame:= random(4); |
175 dx.isNegative:= random(2) = 0; |
173 dx:= 0.000005 * random(10000); |
176 dx.QWordValue:= random(214748364); |
174 if random(2) = 0 then dx*=-1; |
177 mdY:= random(4096); |
175 timer:= random(4096); |
178 end; |
176 end; |
179 vgtExplPart, |
177 vgtExplPart, |
180 vgtExplPart2: begin |
178 vgtExplPart2: begin |
181 t:= random(1024); |
179 t:= random(1024); |
182 sp:= _0_001 * (random(95) + 70); |
180 sp:= 0.001 * (random(95) + 70); |
183 dx:= AngleSin(t) * sp; |
181 dx:= AngleSin(t).QWordValue/4294967296 * sp; |
184 dx.isNegative:= random(2) = 0; |
182 dy:= AngleCos(t).QWordValue/4294967296 * sp; |
185 dy:= AngleCos(t) * sp; |
183 if random(2) = 0 then dx*=-1; |
186 dy.isNegative:= random(2) = 0; |
184 if random(2) = 0 then dy*=-1; |
187 Frame:= 7 - random(3); |
185 Frame:= 7 - random(3); |
188 FrameTicks:= cExplFrameTicks |
186 FrameTicks:= cExplFrameTicks |
189 end; |
187 end; |
190 vgtFire: begin |
188 vgtFire: begin |
191 t:= random(1024); |
189 t:= random(1024); |
192 sp:= _0_001 * (random(85) + 95); |
190 sp:= 0.001 * (random(85) + 95); |
193 dx:= AngleSin(t) * sp; |
191 dx:= AngleSin(t).QWordValue/4294967296 * sp; |
194 dx.isNegative:= random(2) = 0; |
192 dy:= AngleCos(t).QWordValue/4294967296 * sp; |
195 dy:= AngleCos(t) * sp; |
193 if random(2) = 0 then dx*=-1; |
196 dy.isNegative:= random(2) = 0; |
194 if random(2) = 0 then dy*=-1; |
197 FrameTicks:= 650 + random(250); |
195 FrameTicks:= 650 + random(250); |
198 Frame:= random(8) |
196 Frame:= random(8) |
199 end; |
197 end; |
200 vgtEgg: begin |
198 vgtEgg: begin |
201 t:= random(1024); |
199 t:= random(1024); |
202 sp:= _0_001 * (random(85) + 95); |
200 sp:= 0.001 * (random(85) + 95); |
203 dx:= AngleSin(t) * sp; |
201 dx:= AngleSin(t).QWordValue/4294967296 * sp; |
204 dx.isNegative:= random(2) = 0; |
202 dy:= AngleCos(t).QWordValue/4294967296 * sp; |
205 dy:= AngleCos(t) * sp; |
203 if random(2) = 0 then dx*=-1; |
206 dy.isNegative:= random(2) = 0; |
204 if random(2) = 0 then dy*=-1; |
207 FrameTicks:= 650 + random(250); |
205 FrameTicks:= 650 + random(250); |
208 Frame:= 1 |
206 Frame:= 1 |
209 end; |
207 end; |
210 vgtShell: FrameTicks:= 500; |
208 vgtShell: FrameTicks:= 500; |
211 vgtSmallDamageTag: begin |
209 vgtSmallDamageTag: begin |
212 gear^.FrameTicks:= 1100 |
210 gear^.FrameTicks:= 1100 |
213 end; |
211 end; |
214 vgtBubble: begin |
212 vgtBubble: begin |
215 dx.isNegative:= random(2) = 0; |
213 dx:= 0.0000038654705 * random(10000); |
216 dx.QWordValue:= random(100000000); |
214 dy:= 0.001 * (random(85) + 95); |
217 dy:= _0_001 * (random(85) + 95); |
215 if random(2) = 0 then dx*=-1; |
218 dy.isNegative:= false; |
|
219 FrameTicks:= 250 + random(1751); |
216 FrameTicks:= 250 + random(1751); |
220 Frame:= random(5) |
217 Frame:= random(5) |
221 end; |
218 end; |
222 vgtSteam: begin |
219 vgtSteam: begin |
223 dx.isNegative:= random(2) = 0; |
220 dx:= 0.0000038654705 * random(10000); |
224 dx.QWordValue:= random(100000000); |
221 dy:= 0.001 * (random(85) + 95); |
225 dy:= _0_001 * (random(85) + 95); |
222 if random(2) = 0 then dx*=-1; |
226 dy.isNegative:= false; |
|
227 Frame:= 7 - random(3); |
223 Frame:= 7 - random(3); |
228 FrameTicks:= cExplFrameTicks * 2; |
224 FrameTicks:= cExplFrameTicks * 2; |
229 end; |
225 end; |
230 vgtAmmo: begin |
226 vgtAmmo: begin |
231 alpha:= 1.0; |
227 alpha:= 1.0; |
232 scale:= 1.0 |
228 scale:= 1.0 |
233 end; |
229 end; |
234 vgtSmokeWhite, |
230 vgtSmokeWhite, |
235 vgtSmoke: begin |
231 vgtSmoke: begin |
236 dx:= _0_0002 * (random(45) + 10); |
232 dx:= 0.0002 * (random(45) + 10); |
237 dx.isNegative:= random(2) = 0; |
233 dy:= 0.0002 * (random(45) + 10); |
238 dy:= _0_0002 * (random(45) + 10); |
234 if random(2) = 0 then dx*=-1; |
239 dy.isNegative:= false; |
|
240 Frame:= 7 - random(2); |
235 Frame:= 7 - random(2); |
241 FrameTicks:= cExplFrameTicks * 2; |
236 FrameTicks:= cExplFrameTicks * 2; |
242 end; |
237 end; |
243 vgtHealth: begin |
238 vgtHealth: begin |
244 dx:= _0_001 * random(45); |
239 dx:= 0.001 * random(45); |
245 dx.isNegative:= random(2) = 0; |
240 dy:= 0.001 * (random(20) + 25); |
246 dy:= _0_001 * (random(20) + 25); |
241 if random(2) = 0 then dx*=-1; |
247 Frame:= 0; |
242 Frame:= 0; |
248 FrameTicks:= random(750) + 1250; |
243 FrameTicks:= random(750) + 1250; |
249 end; |
244 end; |
250 vgtDust: begin |
245 vgtDust: begin |
251 dx:= _0_005 * (random(15) + 10); |
246 dx:= 0.005 * (random(15) + 10); |
252 dx.isNegative:= random(2) = 0; |
247 dy:= 0.001 * (random(40) + 20); |
253 dy:= _0_001 * (random(40) + 20); |
248 if random(2) = 0 then dx*=-1; |
254 Frame:= 7 - random(2); |
249 Frame:= 7 - random(2); |
255 FrameTicks:= random(20) + 15; |
250 FrameTicks:= random(20) + 15; |
256 end; |
251 end; |
257 vgtSplash: begin |
252 vgtSplash: begin |
258 dx:= _0; |
253 dx:= 0; |
259 dx.isNegative:= false; |
254 dy:= 0; |
260 dy:= _0; |
|
261 FrameTicks:= 740; |
255 FrameTicks:= 740; |
262 Frame:= 19; |
256 Frame:= 19; |
263 end; |
257 end; |
264 vgtDroplet: begin |
258 vgtDroplet: begin |
265 dx:= _0_001 * (random(75) + 15); |
259 dx:= 0.001 * (random(75) + 15); |
266 dx.isNegative:= random(2) = 0; |
260 dy:= -0.001 * (random(80) + 120); |
267 dy:= _0_001 * (random(80) + 120); |
261 if random(2) = 0 then dx*=-1; |
268 dy.isNegative:= true; |
|
269 FrameTicks:= 250 + random(1751); |
262 FrameTicks:= 250 + random(1751); |
270 Frame:= random(3) |
263 Frame:= random(3) |
271 end; |
264 end; |
272 vgtBeeTrace: begin |
265 vgtBeeTrace: begin |
273 FrameTicks:= 1000; |
266 FrameTicks:= 1000; |
274 Frame:= random(16); |
267 Frame:= random(16); |
275 end; |
268 end; |
276 vgtSmokeRing: begin |
269 vgtSmokeRing: begin |
277 dx:= _0; |
270 dx:= 0; |
278 dx.isNegative:= false; |
271 dy:= 0; |
279 dy:= _0; |
|
280 dy.isNegative:= false; |
|
281 FrameTicks:= 600; |
272 FrameTicks:= 600; |
282 Timer:= 0; |
273 Timer:= 0; |
283 Frame:= 0; |
274 Frame:= 0; |
284 scale:= 0.6; |
275 scale:= 0.6; |
285 alpha:= 1; |
276 alpha:= 1; |
286 angle:= random(360); |
277 angle:= random(360); |
287 end; |
278 end; |
288 vgtFeather: begin |
279 vgtFeather: begin |
289 t:= random(1024); |
280 t:= random(1024); |
290 sp:= _0_001 * (random(85) + 95); |
281 sp:= 0.001 * (random(85) + 95); |
291 dx:= AngleSin(t) * sp; |
282 dx:= AngleSin(t).QWordValue/4294967296 * sp; |
292 dx.isNegative:= random(2) = 0; |
283 dy:= AngleCos(t).QWordValue/4294967296 * sp; |
293 dy:= AngleCos(t) * sp; |
284 if random(2) = 0 then dx*=-1; |
294 dy.isNegative:= random(2) = 0; |
285 if random(2) = 0 then dy*=-1; |
295 FrameTicks:= 650 + random(250); |
286 FrameTicks:= 650 + random(250); |
296 Frame:= 1 |
287 Frame:= 1 |
297 end; |
288 end; |
298 vgtHealthTag: begin |
289 vgtHealthTag: begin |
299 gear^.Timer:= 1500; |
290 gear^.Timer:= 1500; |
300 //gear^.Z:= 2002; |
291 //gear^.Z:= 2002; |
301 end; |
292 end; |
302 vgtSmokeTrace, |
293 vgtSmokeTrace, |
303 vgtEvilTrace: begin |
294 vgtEvilTrace: begin |
304 gear^.X:= gear^.X - _16; |
295 gear^.X:= gear^.X - 16; |
305 gear^.Y:= gear^.Y - _16; |
296 gear^.Y:= gear^.Y - 16; |
306 gear^.State:= 8; |
297 gear^.State:= 8; |
307 //gear^.Z:= cSmokeZ |
298 //gear^.Z:= cSmokeZ |
308 end; |
299 end; |
309 vgtBigExplosion: begin |
300 vgtBigExplosion: begin |
310 gear^.Angle:= random(360); |
301 gear^.Angle:= random(360); |
382 0: while Gear <> nil do |
375 0: while Gear <> nil do |
383 begin |
376 begin |
384 Tint(Gear^.Tint); |
377 Tint(Gear^.Tint); |
385 case Gear^.Kind of |
378 case Gear^.Kind of |
386 vgtFlake: if vobVelocity = 0 then |
379 vgtFlake: if vobVelocity = 0 then |
387 DrawSprite(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) |
380 DrawSprite(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) |
388 else |
381 else |
389 DrawRotatedF(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle); |
382 DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle); |
390 vgtCloud: DrawSprite(sprCloud, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame); |
383 vgtCloud: DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame); |
391 end; |
384 end; |
392 Gear:= Gear^.NextGear |
385 Gear:= Gear^.NextGear |
393 end; |
386 end; |
394 1: while Gear <> nil do |
387 1: while Gear <> nil do |
395 begin |
388 begin |
396 Tint(Gear^.Tint); |
389 Tint(Gear^.Tint); |
397 case Gear^.Kind of |
390 case Gear^.Kind of |
398 vgtSmokeTrace: if Gear^.State < 8 then DrawSprite(sprSmokeTrace, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.State); |
391 vgtSmokeTrace: if Gear^.State < 8 then DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); |
399 vgtEvilTrace: if Gear^.State < 8 then DrawSprite(sprEvilTrace, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.State); |
392 vgtEvilTrace: if Gear^.State < 8 then DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State); |
400 end; |
393 end; |
401 if not cReducedQuality then |
394 if not cReducedQuality then |
402 case Gear^.Kind of |
395 case Gear^.Kind of |
403 vgtSmoke: DrawSprite(sprSmoke, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
396 vgtSmoke: DrawSprite(sprSmoke, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
404 vgtSmokeWhite: DrawSprite(sprSmokeWhite, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
397 vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
405 vgtDust: DrawSprite(sprDust, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
398 vgtDust: DrawSprite(sprDust, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame); |
406 vgtFeather: begin |
399 vgtFeather: begin |
407 if Gear^.FrameTicks < 255 then |
400 if Gear^.FrameTicks < 255 then |
408 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
401 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
409 DrawRotatedF(sprFeather, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
402 DrawRotatedF(sprFeather, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
410 end; |
403 end; |
411 end; |
404 end; |
412 Gear:= Gear^.NextGear |
405 Gear:= Gear^.NextGear |
413 end; |
406 end; |
414 2: while Gear <> nil do |
407 2: while Gear <> nil do |
415 begin |
408 begin |
416 Tint(Gear^.Tint); |
409 Tint(Gear^.Tint); |
417 case Gear^.Kind of |
410 case Gear^.Kind of |
418 vgtExplosion: DrawSprite(sprExplosion50, hwRound(Gear^.X) - 32 + WorldDx, hwRound(Gear^.Y) - 32 + WorldDy, Gear^.State); |
411 vgtExplosion: DrawSprite(sprExplosion50, round(Gear^.X) - 32 + WorldDx, round(Gear^.Y) - 32 + WorldDy, Gear^.State); |
419 vgtBigExplosion: begin |
412 vgtBigExplosion: begin |
420 Tint($FF, $FF, $FF, floor($FF * (1 - power(Gear^.Timer / 250, 4)))); |
413 Tint($FF, $FF, $FF, floor($FF * (1 - power(Gear^.Timer / 250, 4)))); |
421 DrawRotatedTextureF(SpritesData[sprBigExplosion].Texture, 0.85 * (-power(2, -10 * Int(Gear^.Timer)/250) + 1) + 0.4, 0, 0, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 1, 385, 385, Gear^.Angle); |
414 DrawRotatedTextureF(SpritesData[sprBigExplosion].Texture, 0.85 * (-power(2, -10 * Int(Gear^.Timer)/250) + 1) + 0.4, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 385, 385, Gear^.Angle); |
422 end; |
415 end; |
423 end; |
416 end; |
424 if not cReducedQuality then |
417 if not cReducedQuality then |
425 case Gear^.Kind of |
418 case Gear^.Kind of |
426 vgtExplPart: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
419 vgtExplPart: DrawSprite(sprExplPart, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
427 vgtExplPart2: DrawSprite(sprExplPart2, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
420 vgtExplPart2: DrawSprite(sprExplPart2, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
428 vgtFire: DrawSprite(sprFlame, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy, (RealTicks div 64 + Gear^.Frame) mod 8); |
421 vgtFire: DrawSprite(sprFlame, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy, (RealTicks div 64 + Gear^.Frame) mod 8); |
429 vgtBubble: DrawSprite(sprBubbles, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8); |
422 vgtBubble: DrawSprite(sprBubbles, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8); |
430 vgtSteam: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
423 vgtSteam: DrawSprite(sprExplPart, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame); |
431 vgtAmmo: begin |
424 vgtAmmo: begin |
432 Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); |
425 Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); |
433 DrawTextureF(ropeIconTex, Gear^.scale, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 1, 32, 32); |
426 DrawTextureF(ropeIconTex, Gear^.scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 32, 32); |
434 DrawTextureF(SpritesData[sprAMAmmos].Texture, Gear^.scale * 0.90, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame - 1, 1, 32, 32); |
427 DrawTextureF(SpritesData[sprAMAmmos].Texture, Gear^.scale * 0.90, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame - 1, 1, 32, 32); |
435 end; |
428 end; |
436 vgtHealth: begin |
429 vgtHealth: begin |
437 case Gear^.Frame div 10 of |
430 case Gear^.Frame div 10 of |
438 0:Tint(0, $FF, 0, floor(Gear^.FrameTicks * $FF / 1000)); |
431 0:Tint(0, $FF, 0, floor(Gear^.FrameTicks * $FF / 1000)); |
439 1:Tint($FF, 0, 0, floor(Gear^.FrameTicks * $FF / 1000)); |
432 1:Tint($FF, 0, 0, floor(Gear^.FrameTicks * $FF / 1000)); |
440 end; |
433 end; |
441 DrawSprite(sprHealth, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, 0); |
434 DrawSprite(sprHealth, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, 0); |
442 end; |
435 end; |
443 vgtShell: begin |
436 vgtShell: begin |
444 if Gear^.FrameTicks < $FF then |
437 if Gear^.FrameTicks < $FF then |
445 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
438 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
446 DrawRotatedF(sprShell, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
439 DrawRotatedF(sprShell, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
447 end; |
440 end; |
448 vgtEgg: begin |
441 vgtEgg: begin |
449 if Gear^.FrameTicks < $FF then |
442 if Gear^.FrameTicks < $FF then |
450 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
443 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
451 DrawRotatedF(sprEgg, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
444 DrawRotatedF(sprEgg, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
452 end; |
445 end; |
453 vgtSplash: DrawSprite(sprSplash, hwRound(Gear^.X) + WorldDx - 40, hwRound(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)); |
446 vgtSplash: DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)); |
454 vgtDroplet: DrawSprite(sprDroplet, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame); |
447 vgtDroplet: DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame); |
455 vgtBeeTrace: begin |
448 vgtBeeTrace: begin |
456 if Gear^.FrameTicks < $FF then |
449 if Gear^.FrameTicks < $FF then |
457 Tint($FF, $FF, $FF, Gear^.FrameTicks div 2) |
450 Tint($FF, $FF, $FF, Gear^.FrameTicks div 2) |
458 else |
451 else |
459 Tint($FF, $FF, $FF, $80); |
452 Tint($FF, $FF, $FF, $80); |
460 DrawRotatedF(sprBeeTrace, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, (RealTicks shr 4) mod cMaxAngle); |
453 DrawRotatedF(sprBeeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, (RealTicks shr 4) mod cMaxAngle); |
461 end; |
454 end; |
462 vgtSmokeRing: begin |
455 vgtSmokeRing: begin |
463 Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); |
456 Tint($FF, $FF, $FF, floor(Gear^.alpha * $FF)); |
464 DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle); |
457 DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle); |
465 end; |
458 end; |
466 end; |
459 end; |
467 case Gear^.Kind of |
460 case Gear^.Kind of |
468 vgtSmallDamageTag: DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); |
461 vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); |
469 vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); |
462 vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); |
470 vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex); |
463 vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex); |
471 end; |
464 end; |
472 Gear:= Gear^.NextGear |
465 Gear:= Gear^.NextGear |
473 end |
466 end |
474 end |
467 end |
475 end; |
468 end; |