From ae149c420e57128b1ad36be2a13b4a65c5f5c39d Mon Sep 17 00:00:00 2001 From: matija-hustic Date: Sat, 3 May 2014 18:38:30 +0100 Subject: [PATCH] Bigger spawn points, numbers within. --- OpenRA.Game/Graphics/LineRenderer.cs | 13 + OpenRA.Game/Primitives/float2.cs | 1 + OpenRA.Game/Widgets/MapPreviewWidget.cs | 14 +- OpenRA.Game/Widgets/WidgetUtils.cs | 5 + OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs | 4 +- OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs | 15 +- artsrc/ra/spawnpoints.psd | Bin 27510 -> 0 bytes artsrc/ra/spawnpoints.svg | 460 +++++++++++++++++++++ mods/d2k/chrome.yaml | 12 +- mods/ra/chrome.yaml | 10 +- mods/ra/uibits/spawnpoints.png | Bin 5756 -> 3562 bytes mods/ts/chrome.yaml | 10 +- 12 files changed, 515 insertions(+), 29 deletions(-) delete mode 100644 artsrc/ra/spawnpoints.psd create mode 100644 artsrc/ra/spawnpoints.svg diff --git a/OpenRA.Game/Graphics/LineRenderer.cs b/OpenRA.Game/Graphics/LineRenderer.cs index 6ddc923fae..f3b7187d80 100644 --- a/OpenRA.Game/Graphics/LineRenderer.cs +++ b/OpenRA.Game/Graphics/LineRenderer.cs @@ -90,6 +90,19 @@ namespace OpenRA.Graphics DrawLine(new float2(r.Left, y), new float2(r.Right, y), color, color); } + public void FillEllipse(RectangleF r, Color color) + { + var a = (r.Right - r.Left) / 2; + var b = (r.Bottom - r.Top) / 2; + var xc = (r.Right + r.Left) / 2; + var yc = (r.Bottom + r.Top) / 2; + for (var y = r.Top; y <= r.Bottom; y++) + { + var dx = a * System.Convert.ToSingle(System.Math.Sqrt(1 - (y - yc) * (y - yc) / b / b)); + DrawLine(new float2(xc - dx, y), new float2(xc + dx, y), color, color); + } + } + public void SetViewportParams(Size screen, float zoom, float2 scroll) { shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y); diff --git a/OpenRA.Game/Primitives/float2.cs b/OpenRA.Game/Primitives/float2.cs index 83aa4fc000..4b09649bd7 100644 --- a/OpenRA.Game/Primitives/float2.cs +++ b/OpenRA.Game/Primitives/float2.cs @@ -66,6 +66,7 @@ namespace OpenRA public static float2 operator *(float2 b, float a) { return new float2(a * b.X, a * b.Y); } public static float2 operator *( float2 a, float2 b ) { return new float2( a.X * b.X, a.Y * b.Y ); } public static float2 operator /( float2 a, float2 b ) { return new float2( a.X / b.X, a.Y / b.Y ); } + public static float2 operator /(float2 a, float b) { return new float2(a.X / b, a.Y / b); } public static bool operator ==(float2 me, float2 other) { return (me.X == other.X && me.Y == other.Y); } public static bool operator !=(float2 me, float2 other) { return !(me == other); } diff --git a/OpenRA.Game/Widgets/MapPreviewWidget.cs b/OpenRA.Game/Widgets/MapPreviewWidget.cs index 6725b35750..cf58709fd1 100644 --- a/OpenRA.Game/Widgets/MapPreviewWidget.cs +++ b/OpenRA.Game/Widgets/MapPreviewWidget.cs @@ -117,15 +117,19 @@ namespace OpenRA.Widgets var owned = colors.ContainsKey(p); var pos = ConvertToPreview(p); var sprite = ChromeProvider.GetImage("lobby-bits", owned ? "spawn-claimed" : "spawn-unclaimed"); - var offset = new int2(-sprite.bounds.Width/2, -sprite.bounds.Height/2); + var offset = new int2(sprite.bounds.Width, sprite.bounds.Height) / 2; if (owned) - WidgetUtils.FillRectWithColor(new Rectangle(pos.X + offset.X + 2, pos.Y + offset.Y + 2, 12, 12), colors[p]); + WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X - offset.X + 1, pos.Y - offset.Y + 1, sprite.bounds.Width - 2, sprite.bounds.Height - 2), colors[p]); - Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos + offset); - Game.Renderer.Fonts[ChromeMetrics.Get("SpawnFont")].DrawTextWithContrast(Convert.ToString(spawnPoints.IndexOf(p) + 1), new int2(pos.X + offset.X + 4, pos.Y + offset.Y - 15), ChromeMetrics.Get("SpawnColor"), ChromeMetrics.Get("SpawnContrastColor"), 2); + Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos - offset); + var fonts = Game.Renderer.Fonts[ChromeMetrics.Get("SpawnFont")]; + var number = Convert.ToString(spawnPoints.IndexOf(p) + 1); + offset = fonts.Measure(number) / 2; + offset.Y += 1; // Does not center well vertically for some reason + fonts.DrawTextWithContrast(number, pos - offset, ChromeMetrics.Get("SpawnColor"), ChromeMetrics.Get("SpawnContrastColor"), 1); - if ((pos - Viewport.LastMousePos).LengthSquared < 64) + if (((pos - Viewport.LastMousePos).ToFloat2() * offset.ToFloat2()).LengthSquared < 1) TooltipSpawnIndex = spawnPoints.IndexOf(p) + 1; } } diff --git a/OpenRA.Game/Widgets/WidgetUtils.cs b/OpenRA.Game/Widgets/WidgetUtils.cs index 6465b4f3ea..68baa9809b 100644 --- a/OpenRA.Game/Widgets/WidgetUtils.cs +++ b/OpenRA.Game/Widgets/WidgetUtils.cs @@ -68,6 +68,11 @@ namespace OpenRA.Widgets Game.Renderer.LineRenderer.FillRect(new RectangleF(r.X, r.Y, r.Width, r.Height), c); } + public static void FillEllipseWithColor(Rectangle r, Color c) + { + Game.Renderer.LineRenderer.FillEllipse(new RectangleF(r.X, r.Y, r.Width, r.Height), c); + } + public static int[] GetBorderSizes(string collection) { var images = new[] { "border-t", "border-b", "border-l", "border-r" }; diff --git a/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs b/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs index 925e71b02f..5b10bc1aca 100755 --- a/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs +++ b/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs @@ -134,8 +134,8 @@ namespace OpenRA.Mods.RA.Widgets Game.Renderer.RgbaSpriteRenderer.DrawSprite(mixerSprite, RenderOrigin, new float2(RenderBounds.Size)); var sprite = ChromeProvider.GetImage("lobby-bits", "colorpicker"); - var pos = RenderOrigin + PxFromValue() - new int2(sprite.bounds.Width/2, sprite.bounds.Height/2); - WidgetUtils.FillRectWithColor(new Rectangle(pos.X + 3, pos.Y + 3, 10, 10), Color.RGB); + var pos = RenderOrigin + PxFromValue() - new int2(sprite.bounds.Width, sprite.bounds.Height) / 2; + WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X + 1, pos.Y + 1, sprite.bounds.Width - 2, sprite.bounds.Height - 2), Color.RGB); Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos); } diff --git a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs index 10e23cb9e8..f86208893a 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs @@ -95,7 +95,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic { var item = ScrollItemWidget.Setup(itemTemplate, () => client.SpawnPoint == ii, - () => orderManager.IssueOrder(Order.Command("spawn {0} {1}".F(client.Index, ii)))); + () => SetSpawnPoint(orderManager, client, ii)); item.Get("LABEL").GetText = () => ii == 0 ? "-" : ii.ToString(); return item; }; @@ -166,17 +166,20 @@ namespace OpenRA.Mods.RA.Widgets.Logic var selectedSpawn = preview.SpawnPoints .Select((sp, i) => Pair.New(mapPreview.ConvertToPreview(sp), i)) - .Where(a => (a.First - mi.Location).LengthSquared < 64) + .Where(a => ((a.First - mi.Location).ToFloat2() / new float2(ChromeProvider.GetImage("lobby-bits", "spawn-unclaimed").bounds.Width / 2, ChromeProvider.GetImage("lobby-bits", "spawn-unclaimed").bounds.Height / 2)).LengthSquared <= 1) .Select(a => a.Second + 1) .FirstOrDefault(); + var locals = orderManager.LobbyInfo.Clients.Where(c => c.Index == orderManager.LocalClient.Index || (Game.IsHost && c.Bot != null)); + var playerToMove = locals.FirstOrDefault(c => ((selectedSpawn == 0) ^ (c.SpawnPoint == 0) && !c.IsObserver)); + SetSpawnPoint(orderManager, playerToMove, selectedSpawn); + } + + private static void SetSpawnPoint(OrderManager orderManager, Session.Client playerToMove, int selectedSpawn) + { var owned = orderManager.LobbyInfo.Clients.Any(c => c.SpawnPoint == selectedSpawn); if (selectedSpawn == 0 || !owned) - { - var locals = orderManager.LobbyInfo.Clients.Where(c => c.Index == orderManager.LocalClient.Index || (Game.IsHost && c.Bot != null)); - var playerToMove = locals.FirstOrDefault(c => ((selectedSpawn == 0) ^ (c.SpawnPoint == 0) && !c.IsObserver)); orderManager.IssueOrder(Order.Command("spawn {0} {1}".F((playerToMove ?? orderManager.LocalClient).Index, selectedSpawn))); - } } public static Color LatencyColor(int latency) diff --git a/artsrc/ra/spawnpoints.psd b/artsrc/ra/spawnpoints.psd deleted file mode 100644 index 5e289493cbaeaa8c486898ddf4cd4a26c6e944a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27510 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 diff --git a/artsrc/ra/spawnpoints.svg b/artsrc/ra/spawnpoints.svg new file mode 100644 index 0000000000..0db5db141d --- /dev/null +++ b/artsrc/ra/spawnpoints.svg @@ -0,0 +1,460 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mods/d2k/chrome.yaml b/mods/d2k/chrome.yaml index 217eba2850..6581166bb5 100644 --- a/mods/d2k/chrome.yaml +++ b/mods/d2k/chrome.yaml @@ -225,12 +225,12 @@ dialog4: dialog.png corner-br: 571,446,6,6 lobby-bits: spawnpoints.png - spawn-unclaimed: 16,0,16,16 - spawn-claimed: 0,0,16,16 - admin: 37,5,7,5 - colorpicker: 0,0,16,16 - huepicker: 45,0,7,15 - + spawn-unclaimed: 32,0,32,32 + spawn-claimed: 0,0,32,32 + admin: 64,5,7,5 + colorpicker: 0,0,32,32 + huepicker: 71,0,7,15 + strategic: strategic.png unowned: 0,0,32,32 critical_unowned: 0,32,32,32 diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index 5ece00106e..68cefda086 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -169,11 +169,11 @@ dialog4: dialog.png corner-br: 571,446,6,6 lobby-bits: spawnpoints.png - spawn-unclaimed: 16,0,16,16 - spawn-claimed: 0,0,16,16 - admin: 37,5,7,5 - colorpicker: 0,0,16,16 - huepicker: 45,0,7,15 + spawn-unclaimed: 32,0,32,32 + spawn-claimed: 0,0,32,32 + admin: 64,5,7,5 + colorpicker: 0,0,32,32 + huepicker: 71,0,7,15 strategic: strategic.png unowned: 0,0,32,32 diff --git a/mods/ra/uibits/spawnpoints.png b/mods/ra/uibits/spawnpoints.png index 058dfc523a0371b178a13b181d94de3d7821accc..812af908710627adcc52f2b54c0eb87eb9102ab0 100644 GIT binary patch literal 3562 zcmeHK2Uk;D(>@8sNDFcS0Z~AtDN=-&BK1MD zEioDdgb2t53{^@lL_n!QO5SsS!S@HgS$ogyJ$tWp*39ggc}}X0wFx(e2nPTF+-9am zw?T>hcf!~~PSSNB0tIWJftei)q$rrjf5H7(e^bXm0JzZf?}WIBD#3{1r$l%xPs3WY%{8x7;m!;j>fFn85eH8Fm0$G;_L`Lc%PFe zYpd4aW39hYHC5A=$LFpuu-iE}A}!65x2(~h6AbOhj(=6+QhY!E;EC`rm9+{a9&?5JLl+59S=`3;j;t1P(DDYF; zZ|pH{?a^f8EI#bleHVGb$YNzdHvi67ujuPV{-PJy*nVEZ(pu-Vcov+1sXJrOgFPJ~ zcb%L_h3Jc8sv9e0GI?=(dwVu9JO0Ow3K|69H+FoZNQ(*x3JQ8rTU-17F-{WS*e8;4 zD~~>Vn3k3X09RZa(8p9iidqfIh4l8b=uZ{{6dCj;Tk#WR`Xd3m}AY#c72qsA*`t zyqY#PGdijqL%ArG_+z#!R1td~5EW1KX5lrB^$r|qf-uB@t^K{dyHtUB

M=Sx|yHax7Xtm>Z0 zZb7Du>uj^#>5i~dJws{tN0`d5~Yt-XfOzB~>!|MaauchQhx@#ZR zFCLG_`&7`%U*y{-8a&1MYoxm=!K}usFyC^a8ksEpkCoKbQ#@{@+Fkw6kkAEt{_2(Y zNt}~~-Y<(Z7Q)W5ra978uv~}g&-@5zNJ&ZU<(PhGlc#@~-S(?}MM6>0j~F?Pwi^HZG~d2<%e2stjaXI;*9G`lG&uB~Hk9YHY}`)m z5#w)*=ybXTWMOx0Tqbwm1xkpFnA}FC1&(l&7?`UC0f_RO!BAj-gL>x~=G)L3bx5kN zp+UzKHjOH+siEKGB4IJ5B?JXQBD`BHYFyP_h&{+T1yd>_;eqh+*&s&hWDciSLR>K3 z-l8@6g4R}68Q`1P@=EXF&$!jorpB9bONTsVAt@<2UtC%$@-$yiO-+plr8_)#3yg;{ z>PMTK(t~7@I|It#lNUJt=+)=yG8z0r@uD<%R9ag4z3mdkGr|7Ook#g&fB&1{~_b$q6cY$6y)e~l<7 zL5HZb4pI9@M@a?}|KNF$$b__K-GNTDbxp^RKY+VnJ$n;K8&NheB{CR{PPC)D^JHxA z9Jg@tFO{K|_e&swMI|>km+~YnO{8V$>%;`of8?6s(`*qKD=!zj3g18Y&DveGBBTc6 zIe18fvnRkU3)m+-DYmDUNqt}4BGwZ6Vy4iFL%5s^$3b#j}fO&=nJ&b zp+x!?IKxpf*tL?~M`6yr*?oMn*t895haL=Qc91Vp-lt|fOb5Axd?6=5ZTE=;cJj=H zVGyFS z90J^%O!A>}Li;*(Cxf5ZkFL17EgJETF`3XZ4>cRMH-@(S?={b$!$!*f;E5a^R?=rI9{R~Zw&@oECvHB^APKdVx{vLi4S5o=UUPf zn5<=2z6|A!h6zbvu z(wH!gv$PV&0NNSLvY99oebq~D|~E0J4dB5y36)Y)&z$|9~*t}mkuzse|!VG%gVdDy6Q#^sX6{0p-o|tSRTA3N{@IU#z=L9657dXtIg$JHGZffv=y@*w}z?|43 ze}(Vt=aG^7o}TO~Dk{b0<;ItDuxLlq>f6HSz)N5A1n=_@{M6PNnB*r;ozvKV|iM4aiFfFg99VmT}Ui&1P)VJL~G| z0(wL+4bcNo+CR1)fJG^o<(H^`W~*$z#oLHQ>>ZOMR7kYz!WG%#|8Sz zrET}@-K-goj~xo_1VKZ*^1iXJ@8;&<;NUor+1B3P82+abJ`y>`uHf<~cHH1`w zsHT2N!z3ayQV)VXIXZ}yk&*GbSz>v~@d;}~LqnX$jqoe#>Y+7HpDt1X|IL|q#o+DD zxA(e1!*u{JzSP9>>sUqN_f|bEPR2?U1XOS@SmLb*F5gJd1!2xjC8a9o-l#(^pslCp z>Ap?|0^5|gGZIpo7y@$^mz0$KHl$1NJyw}q&Lm^#P&b_rb!d~ zu=FcYZ0h5ho)(LT7o^Wy`x3%`M9*KeHoEQPeA0?wQcPiGC6gaG_*|m0#l_8iauM~T zs1SW}G~MbotA(8U@}+7Wf7+BkCWf@PubAtLWrhMT)&1s7Td8mZG`V*!}SMrUq734GVv`&2)Q zG+$~81h;?-Wnp{>p6vs$_4ROwtW@GL3zo)3VswK+|1>-tEea?&2lBe?kUh2N z#fgatEjwg1C&9%WL_p>bO3;gPfkmbia+S?a`T|VM%Rn>yK+bJ=7Zf*|2&d&a}O;-pC zAawS=&WBY@zSm@$7?>(!k9SSfHEF2CY}adP0o%uiJIs#45TpB6S;^P?i}oHAdu+U3 zU;I+86`F}eBCP}j1qJ1Q`Tx`K>Q2*~kdV;S_F8SFpkHo^p}J0}0Kw!-KS^EZnxKA* z=CtY~>Xn0JetrKJK)fUyuc#b$!4$%3!Xd748zAODVVVDb^nZDS3BMdab?Do?V*vh_ O0cOV5MvVq;@&5xR42{hI literal 5756 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