30 procedure KickFlakes(Radius, X, Y: LongInt); |
30 procedure KickFlakes(Radius, X, Y: LongInt); |
31 procedure DrawVisualGears(Layer: LongWord); |
31 procedure DrawVisualGears(Layer: LongWord); |
32 procedure DeleteVisualGear(Gear: PVisualGear); |
32 procedure DeleteVisualGear(Gear: PVisualGear); |
33 function VisualGearByUID(uid : Longword) : PVisualGear; |
33 function VisualGearByUID(uid : Longword) : PVisualGear; |
34 procedure AddClouds; |
34 procedure AddClouds; |
|
35 procedure ChangeToSDClouds; |
35 procedure AddDamageTag(X, Y, Damage, Color: LongWord); |
36 procedure AddDamageTag(X, Y, Damage, Color: LongWord); |
36 |
37 |
37 implementation |
38 implementation |
38 uses uSound, uMobile, uVariables, uTextures, uRender, Math, uRenderUtils; |
39 uses uSound, uMobile, uVariables, uTextures, uRender, Math, uRenderUtils; |
39 |
40 |
326 |
327 |
327 if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear^.PrevGear; |
328 if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear^.PrevGear; |
328 if Gear^.PrevGear <> nil then Gear^.PrevGear^.NextGear:= Gear^.NextGear |
329 if Gear^.PrevGear <> nil then Gear^.PrevGear^.NextGear:= Gear^.NextGear |
329 else VisualGearsList:= Gear^.NextGear; |
330 else VisualGearsList:= Gear^.NextGear; |
330 |
331 |
|
332 if lastVisualGearByUID = Gear then lastVisualGearByUID:= nil; |
|
333 |
331 Dispose(Gear); |
334 Dispose(Gear); |
332 end; |
335 end; |
333 |
336 |
334 procedure ProcessVisualGears(Steps: Longword); |
337 procedure ProcessVisualGears(Steps: Longword); |
335 var Gear, t: PVisualGear; |
338 var Gear, t: PVisualGear; |
390 else |
393 else |
391 if SuddenDeathDmg then |
394 if SuddenDeathDmg then |
392 DrawRotatedF(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle) |
395 DrawRotatedF(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle) |
393 else |
396 else |
394 DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle); |
397 DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle); |
395 vgtCloud: DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame); |
398 vgtCloud: if SuddenDeathDmg then |
|
399 DrawSprite(sprSDCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame) |
|
400 else |
|
401 DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame); |
396 end; |
402 end; |
397 if Gear^.Tint <> $FFFFFFFF then Tint($FF,$FF,$FF,$FF); |
403 if Gear^.Tint <> $FFFFFFFF then Tint($FF,$FF,$FF,$FF); |
398 Gear:= Gear^.NextGear |
404 Gear:= Gear^.NextGear |
399 end; |
405 end; |
400 1: while Gear <> nil do |
406 1: while Gear <> nil do |
479 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
485 Tint($FF, $FF, $FF, Gear^.FrameTicks); |
480 tinted:= true |
486 tinted:= true |
481 end; |
487 end; |
482 DrawRotatedF(sprEgg, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
488 DrawRotatedF(sprEgg, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle); |
483 end; |
489 end; |
484 vgtSplash: DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)); |
490 vgtSplash: if SuddenDeathDmg then |
485 vgtDroplet: DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame); |
491 DrawSprite(sprSDSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)) |
|
492 else |
|
493 DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37)); |
|
494 vgtDroplet: if SuddenDeathDmg then |
|
495 DrawSprite(sprSDDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame) |
|
496 else |
|
497 DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame); |
486 vgtBeeTrace: begin |
498 vgtBeeTrace: begin |
487 if Gear^.FrameTicks < $FF then |
499 if Gear^.FrameTicks < $FF then |
488 Tint($FF, $FF, $FF, Gear^.FrameTicks div 2) |
500 Tint($FF, $FF, $FF, Gear^.FrameTicks div 2) |
489 else |
501 else |
490 Tint($FF, $FF, $FF, $80); |
502 Tint($FF, $FF, $FF, $80); |
519 |
531 |
520 function VisualGearByUID(uid : Longword) : PVisualGear; |
532 function VisualGearByUID(uid : Longword) : PVisualGear; |
521 var vg: PVisualGear; |
533 var vg: PVisualGear; |
522 begin |
534 begin |
523 VisualGearByUID:= nil; |
535 VisualGearByUID:= nil; |
|
536 if uid = 0 then exit; |
|
537 if (lastVisualGearByUID <> nil) and (lastVisualGearByUID^.uid = uid) then |
|
538 begin |
|
539 VisualGearByUID:= lastVisualGearByUID; |
|
540 exit |
|
541 end; |
524 vg:= VisualGearsList; |
542 vg:= VisualGearsList; |
525 while vg <> nil do |
543 while vg <> nil do |
526 begin |
544 begin |
527 if vg^.uid = uid then |
545 if vg^.uid = uid then |
528 begin |
546 begin |
529 VisualGearByUID:= vg; |
547 lastVisualGearByUID:= vg; |
530 exit |
548 VisualGearByUID:= vg; |
|
549 exit |
531 end; |
550 end; |
532 vg:= vg^.NextGear |
551 vg:= vg^.NextGear |
533 end |
552 end |
534 end; |
553 end; |
535 |
554 |
538 begin |
557 begin |
539 for i:= 0 to cCloudsNumber - 1 do |
558 for i:= 0 to cCloudsNumber - 1 do |
540 AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud) |
559 AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud) |
541 end; |
560 end; |
542 |
561 |
|
562 procedure ChangeToSDClouds; |
|
563 var i: LongInt; |
|
564 vg, tmp: PVisualGear; |
|
565 begin |
|
566 if cCloudsNumber = cSDCloudsNumber then exit; |
|
567 vg:= VisualGearsList; |
|
568 while vg <> nil do |
|
569 if vg^.Kind = vgtCloud then |
|
570 begin |
|
571 tmp:= vg^.NextGear; |
|
572 DeleteVisualGear(vg); |
|
573 vg:= tmp |
|
574 end |
|
575 else vg:= vg^.NextGear; |
|
576 for i:= 0 to cSDCloudsNumber - 1 do |
|
577 AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cSDCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud) |
|
578 end; |
|
579 |
543 procedure initModule; |
580 procedure initModule; |
544 begin |
581 begin |
545 VisualGearsList:= nil; |
582 VisualGearsList:= nil; |
546 end; |
583 end; |
547 |
584 |