From 68e301fecd404d9e4cf37f42fff40964472ed8ec Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 10 Apr 2010 18:40:50 +1200 Subject: [PATCH] Nicer tooltips, part 1 (needs to "step out" to a taller section for description) --- OpenRA.Game/Widgets/SpecialPowerBinWidget.cs | 56 ++++++++----------- artsrc/ra/dialog4.svg | 7 ++- mods/ra/dialog4.png | Bin 584 -> 556 bytes 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs b/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs index 17db2d7b98..1234fa6807 100644 --- a/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs +++ b/OpenRA.Game/Widgets/SpecialPowerBinWidget.cs @@ -107,6 +107,29 @@ namespace OpenRA.Widgets if (sp.IsAvailable) { var drawPos = new float2(Bounds.X + 5, y); + var rect = new Rectangle(Bounds.X + 5, y, 64, 48); + + if (rect.Contains(Game.chrome.lastMousePos.ToPoint())) + { + var pos = drawPos.ToInt2(); + var tooltipBounds = new Rectangle(pos.X-3,pos.Y-3,350,54); + WidgetUtils.DrawPanel("dialog4", tooltipBounds, null); + + pos += new int2(70, 5); + Game.chrome.renderer.BoldFont.DrawText(Game.chrome.rgbaRenderer, sp.Info.Description, pos, Color.White); + + var timer = "Charge Time: {0}".F(FormatTime(sp.RemainingTime)); + Game.chrome.renderer.BoldFont.DrawText(Game.chrome.rgbaRenderer, timer, drawPos.ToInt2() + new int2((int)tooltipBounds.Width - Game.chrome.renderer.BoldFont.Measure(timer).X - 10, 0), Color.White); + + if (sp.Info.LongDesc != null) + { + pos += new int2(0, 25); + Game.chrome.renderer.RegularFont.DrawText(Game.chrome.rgbaRenderer, sp.Info.LongDesc.Replace("\\n", "\n"), pos, Color.White); + } + + Game.chrome.rgbaRenderer.Flush(); + } + WidgetUtils.DrawSHP(image, drawPos); clock.PlayFetchIndex("idle", @@ -116,7 +139,6 @@ namespace OpenRA.Widgets WidgetUtils.DrawSHP(clock.Image, drawPos); - var rect = new Rectangle(Bounds.X + 5, y, 64, 48); if (sp.IsReady) { ready.Play("ready"); @@ -124,21 +146,11 @@ namespace OpenRA.Widgets } buttons.Add(Pair.New(rect,HandleSupportPower(sp))); - - if (rect.Contains(Game.chrome.lastMousePos.ToPoint())) - { - tooltipItem = sp; - tooltipPos = drawPos.ToInt2() + new int2(72, 0); - } - + y += 51; } } Game.chrome.shpRenderer.Flush(); - - if (tooltipItem != null) - DrawSupportPowerTooltip(world, tooltipItem, tooltipPos); - base.Draw(world); } @@ -154,25 +166,5 @@ namespace OpenRA.Widgets return "{0:D2}:{1:D2}".F(minutes, seconds % 60); } - - void DrawSupportPowerTooltip(World world, SupportPower sp, int2 pos) - { - var tooltipBounds = new Rectangle(pos.X,pos.Y,400,100); - WidgetUtils.DrawPanel("dialog4", tooltipBounds, null); - - pos += new int2(5, 5); - Game.chrome.renderer.BoldFont.DrawText(Game.chrome.rgbaRenderer, sp.Info.Description, pos, Color.White); - - var timer = "Charge Time: {0}".F(FormatTime(sp.RemainingTime)); - Game.chrome.renderer.BoldFont.DrawText(Game.chrome.rgbaRenderer, timer, pos + new int2((int)tooltipBounds.Width - Game.chrome.renderer.BoldFont.Measure(timer).X - 10, 0), Color.White); - - if (sp.Info.LongDesc != null) - { - pos += new int2(0, 25); - Game.chrome.renderer.RegularFont.DrawText(Game.chrome.rgbaRenderer, sp.Info.LongDesc.Replace("\\n", "\n"), pos, Color.White); - } - - Game.chrome.rgbaRenderer.Flush(); - } } } \ No newline at end of file diff --git a/artsrc/ra/dialog4.svg b/artsrc/ra/dialog4.svg index 334b740f48..596d218edb 100644 --- a/artsrc/ra/dialog4.svg +++ b/artsrc/ra/dialog4.svg @@ -14,7 +14,10 @@ id="svg2816" version="1.1" inkscape:version="0.47 r22583" - sodipodi:docname="dialog4.svg"> + sodipodi:docname="dialog4.svg" + inkscape:export-filename="/Users/paul/src/OpenRA/mods/ra/dialog4.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"> ?Osm37Mdj3(%c;2#mkb7h z`$MYsS5zGY21{Isn@Zf6nyjcPQLU*87haaTnM_ZuH=5_GU-9q}=YFp#rEu!va5#L< zIS-w4SH_qQudGtaF{N~Gt=)FJ-5cNuz?=|1v~Bx!wOT#I7=L%0&E`3!l&dcO2RY}g z_r4!O7>vi`H%-%g1iqP4%0=6@ceB~-`(m+ptUdIlnog&e^ZERJ(=^v6rF6Squis53 zlb^MRy>!dv^6h9e`eAdh*eGUgI0^x14i!zu$kd#+c4I z0sy3xvN5J(YXuMa9})tSu>mNP$N>?P$N>?P$N>?P$N>*gfGwpQopWc2;heLjl%q{4 z-Fxr*wFlM6d*46ZPTOq=VNiQejY0?mYwcFI(oJ)%tNGK_{GV^m_WudL0hYJ7Ef{b= QtpET307*qoM6N<$f@}A^`~Uy| delta 400 zcmV;B0dM}S1jq!CZhyr|L_t(|obB8_irYW{hT(TKg~mTiOp5ImmNa_>K^nP9<kEfV!#)J^KcHg$`#(O`X zOeUXbx7#j^eY zHBGZml4Lscpdm_%KC;$svn-npJ!pusESp(tw|Xlb$4?P(h~s!wRn=pj=MQO` u-redQ;hZyRn%?Dk{%{3Y0SBZ16W}*%