diff -r 4ae1b082e4ba -r cdef954f8aec hedgewars/uWorld.pas --- a/hedgewars/uWorld.pas Tue Jul 05 18:27:18 2011 +0200 +++ b/hedgewars/uWorld.pas Tue Jul 05 18:33:42 2011 +0200 @@ -749,7 +749,7 @@ tdx, tdy: Double; s: string[15]; highlight: Boolean; - offsetX, offsetY, screenBottom: LongInt; + smallScreenOffset, offsetX, offsetY, screenBottom: LongInt; VertexBuffer: array [0..3] of TVertex2f; begin if (cReducedQuality and rqNoBackground) = 0 then @@ -865,11 +865,11 @@ begin with PHedgehog(CurrentHedgehog)^ do begin - if (CurAmmoType = amBee) then + if CurAmmoType = amBee then DrawRotatedF(sprTargetBee, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) else - DrawRotatedF(sprTargetP, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360); - end; + DrawRotatedF(sprTargetP, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) + end end; {$WARNINGS ON} @@ -907,6 +907,13 @@ DrawCaptions; // Teams Healths +if TeamsCount * 20 > cScreenHeight div 7 then // take up less screen on small displays + begin + SetScale(1.5); + smallScreenOffset:= cScreenHeight div 6; + if TeamsCount * 20 > cScreenHeight div 5 then Tint($FF,$FF,$FF,$80); + end +else smallScreenOffset:= 0; for t:= 0 to Pred(TeamsCount) do with TeamsArray[t]^ do begin @@ -916,26 +923,26 @@ Tint(Clan^.Color shl 8 or $FF); // draw name - DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY, NameTagTex); + DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY + smallScreenOffset, NameTagTex); // draw flag - DrawTexture(-14, cScreenHeight + DrawHealthY, FlagTex); + DrawTexture(-14, cScreenHeight + DrawHealthY + smallScreenOffset, FlagTex); // draw health bar r.x:= 0; r.y:= 0; r.w:= 2 + TeamHealthBarWidth; r.h:= HealthTex^.h; - DrawFromRect(14, cScreenHeight + DrawHealthY, @r, HealthTex); + DrawFromRect(14, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); // draw health bars right border inc(r.x, cTeamHealthWidth + 2); r.w:= 3; - DrawFromRect(TeamHealthBarWidth + 16, cScreenHeight + DrawHealthY, @r, HealthTex); + DrawFromRect(TeamHealthBarWidth + 16, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); // draw ai kill counter for gfAISurvival if (GameFlags and gfAISurvival) <> 0 then begin - DrawTexture(TeamHealthBarWidth + 22, cScreenHeight + DrawHealthY, + DrawTexture(TeamHealthBarWidth + 22, cScreenHeight + DrawHealthY + smallScreenOffset, AIKillsTex); end; @@ -943,24 +950,30 @@ // this approach should be faster than drawing all borders one by one tinted or not if highlight then begin - Tint($FF, $FF, $FF, $FF); + if TeamsCount * 20 > cScreenHeight div 5 then Tint($FF,$FF,$FF,$80) + else Tint($FF, $FF, $FF, $FF); // draw name r.x:= 2; r.y:= 2; r.w:= NameTagTex^.w - 4; r.h:= NameTagTex^.h - 4; - DrawFromRect(-NameTagTex^.w - 14, cScreenHeight + DrawHealthY + 2, @r, NameTagTex); + DrawFromRect(-NameTagTex^.w - 14, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, NameTagTex); // draw flag r.w:= 22; r.h:= 15; - DrawFromRect(-12, cScreenHeight + DrawHealthY + 2, @r, FlagTex); + DrawFromRect(-12, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, FlagTex); // draw health bar r.w:= TeamHealthBarWidth + 1; r.h:= HealthTex^.h - 4; - DrawFromRect(16, cScreenHeight + DrawHealthY + 2, @r, HealthTex); + DrawFromRect(16, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, HealthTex); end; end; +if smallScreenOffset <> 0 then + begin + SetScale(zoom); + if TeamsCount * 20 > cScreenHeight div 5 then Tint($FF,$FF,$FF,$FF); + end; // Lag alert if isInLag then DrawSprite(sprLag, 32 - (cScreenWidth shr 1), 32, (RealTicks shr 7) mod 12); @@ -1144,6 +1157,8 @@ with CurrentHedgehog^ do if (Gear <> nil) and ((Gear^.State and gstHHChooseTarget) <> 0) then begin + if CurAmmoType = amNapalm then + DrawLine(-3000, topY-300, 7000, topY-300, 3.0, (Team^.Clan^.Color shr 16), (Team^.Clan^.Color shr 8) and $FF, Team^.Clan^.Color and $FF, $FF); i:= GetAmmoEntry(CurrentHedgehog^)^.Pos; with Ammoz[CurAmmoType] do if PosCount > 1 then