551 if ZoomValue > zoom then |
551 if ZoomValue > zoom then |
552 begin |
552 begin |
553 zoom:= zoom + 0.002 * Lag; |
553 zoom:= zoom + 0.002 * Lag; |
554 if ZoomValue < zoom then |
554 if ZoomValue < zoom then |
555 zoom:= ZoomValue |
555 zoom:= ZoomValue |
|
556 end |
556 end |
557 end |
557 end |
558 else |
558 else |
559 ZoomValue:= zoom; |
559 ZoomValue:= zoom; |
560 |
560 |
561 // Sky |
561 // Sky |
562 glClear(GL_COLOR_BUFFER_BIT); |
562 glClear(GL_COLOR_BUFFER_BIT); |
563 //glPushMatrix; |
563 //glPushMatrix; |
564 //glScalef(1.0, 1.0, 1.0); |
564 //glScalef(1.0, 1.0, 1.0); |
|
565 |
565 |
566 if not isPaused then |
566 if not isPaused then |
567 MoveCamera; |
567 MoveCamera; |
568 |
568 |
569 {if not cReducedQuality then} |
569 if (cReducedQuality and rqNoBackground) = 0 then |
570 if (cReducedQuality and (rqNoBackground or rqKillFlakes or rq2DWater)) = 0 then |
|
571 begin |
570 begin |
572 // Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway |
571 // Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway |
573 ScreenBottom:= (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine); |
572 ScreenBottom:= (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine); |
574 offsetY:= 10 * min(0, -145 - ScreenBottom); |
573 offsetY:= 10 * min(0, -145 - ScreenBottom); |
575 SkyOffset:= offsetY div 35 + cWaveHeight; |
574 SkyOffset:= offsetY div 35 + cWaveHeight; |
578 HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); |
577 HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); |
579 |
578 |
580 // background |
579 // background |
581 DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); |
580 DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); |
582 DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); |
581 DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); |
583 |
582 end; |
584 DrawVisualGears(0); |
583 |
585 |
584 DrawVisualGears(0); |
|
585 |
|
586 if (cReducedQuality and rq2DWater) = 0 then |
|
587 begin |
586 // Waves |
588 // Waves |
587 DrawWater(255, SkyOffset); |
589 DrawWater(255, SkyOffset); |
588 DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 64); |
590 DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 64); |
589 DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 48); |
591 DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 48); |
590 DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 32); |
592 DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 32); |
591 DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 24); |
593 DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 24); |
592 end |
594 end |
593 else |
595 else |
594 DrawWaves(-1, 100, - (cWaveHeight + (cWaveHeight shr 1)), 0); |
596 DrawWaves(-1, 100, - (cWaveHeight + (cWaveHeight shr 1)), 0); |
595 |
597 |
596 DrawLand(WorldDx, WorldDy); |
598 DrawLand(WorldDx, WorldDy); |
597 |
599 |
598 DrawWater(255, 0); |
600 DrawWater(255, 0); |
599 |
601 |
600 // Attack bar |
602 // Attack bar |
601 if CurrentTeam <> nil then |
603 if CurrentTeam <> nil then |
602 case AttackBar of |
604 case AttackBar of |
603 (* 1: begin |
605 (* 1: begin |
604 r:= StuffPoz[sPowerBar]; |
606 r:= StuffPoz[sPowerBar]; |
605 {$WARNINGS OFF} |
607 {$WARNINGS OFF} |
606 r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor; |
608 r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor; |
607 {$WARNINGS ON} |
609 {$WARNINGS ON} |
617 hwRound(Gear^.Y) + GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Gear^.Angle) + round(WorldDy + tdy * (24 + i * 2)) - 16, |
619 hwRound(Gear^.Y) + GetLaunchY(Ammo^[CurSlot, CurAmmo].AmmoType, Gear^.Angle) + round(WorldDy + tdy * (24 + i * 2)) - 16, |
618 i) |
620 i) |
619 end |
621 end |
620 end; |
622 end; |
621 |
623 |
622 DrawVisualGears(1); |
624 DrawVisualGears(1); |
623 |
625 |
624 DrawGears; |
626 DrawGears; |
625 |
627 |
626 DrawVisualGears(2); |
628 DrawVisualGears(2); |
627 |
629 |
628 DrawWater(cWaterOpacity, 0); |
630 DrawWater(cWaterOpacity, 0); |
629 |
631 |
630 // Waves |
632 // Waves |
631 DrawWaves( 1, 25 - WorldDx div 9, - cWaveHeight, 12); |
633 DrawWaves( 1, 25 - WorldDx div 9, - cWaveHeight, 12); |
632 |
634 |
633 if (cReducedQuality and rq2DWater) = 0 then |
635 if (cReducedQuality and rq2DWater) = 0 then |
634 begin |
636 begin |
635 //DrawWater(cWaterOpacity, - offsetY div 40); |
637 //DrawWater(cWaterOpacity, - offsetY div 40); |
636 DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8); |
638 DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8); |
637 DrawWater(cWaterOpacity, - offsetY div 20); |
639 DrawWater(cWaterOpacity, - offsetY div 20); |
638 DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2); |
640 DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2); |
639 DrawWater(cWaterOpacity, - offsetY div 10); |
641 DrawWater(cWaterOpacity, - offsetY div 10); |
640 DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0); |
642 DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0); |
641 end |
643 end |
642 else |
644 else |
643 DrawWaves(-1, 50, - (cWaveHeight shr 1), 0); |
645 DrawWaves(-1, 50, - (cWaveHeight shr 1), 0); |
644 |
646 |
645 |
647 |
646 {$WARNINGS OFF} |
648 {$WARNINGS OFF} |
647 // Target |
649 // Target |
648 if (TargetPoint.X <> NoPointX) and (CurrentTeam <> nil) and (CurrentHedgehog <> nil) then |
650 if (TargetPoint.X <> NoPointX) and (CurrentTeam <> nil) and (CurrentHedgehog <> nil) then |