From 1d24c5f49c6bd257074f9d28ea9007b5236a6915 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 22 May 2011 14:14:26 +1200 Subject: [PATCH] Use ScrollItem in ra server browser --- OpenRA.Game/Widgets/ScrollItem.cs | 4 +++- .../Widgets/Delegates/ServerBrowserDelegate.cs | 17 +++++------------ mods/cnc/metrics.yaml | 3 ++- mods/ra/chrome.yaml | 14 +++++++++++++- mods/ra/chrome/serverbrowser.yaml | 11 ++++++++--- mods/ra/metrics.yaml | 3 ++- 6 files changed, 33 insertions(+), 19 deletions(-) diff --git a/OpenRA.Game/Widgets/ScrollItem.cs b/OpenRA.Game/Widgets/ScrollItem.cs index e77594b898..5c0b7e847d 100644 --- a/OpenRA.Game/Widgets/ScrollItem.cs +++ b/OpenRA.Game/Widgets/ScrollItem.cs @@ -16,6 +16,8 @@ namespace OpenRA.Widgets { public class ScrollItemWidget : ButtonWidget { + public int EnableHover = ChromeMetrics.GetInt("EnableHover"); + public ScrollItemWidget() : base() { @@ -33,7 +35,7 @@ namespace OpenRA.Widgets public override void DrawInner() { var state = IsSelected() ? "scrollitem-selected" : - RenderBounds.Contains(Viewport.LastMousePos) ? "scrollitem-hover" : + EnableHover == 1 && RenderBounds.Contains(Viewport.LastMousePos) ? "scrollitem-hover" : null; if (state != null) diff --git a/OpenRA.Mods.RA/Widgets/Delegates/ServerBrowserDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/ServerBrowserDelegate.cs index adf85775f0..52eafe22e6 100644 --- a/OpenRA.Mods.RA/Widgets/Delegates/ServerBrowserDelegate.cs +++ b/OpenRA.Mods.RA/Widgets/Delegates/ServerBrowserDelegate.cs @@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates static List GameButtons = new List(); GameServer currentServer = null; - Widget ServerTemplate; + ScrollItemWidget ServerTemplate; [ObjectCreator.UseCtor] public ServerBrowserDelegate( [ObjectCreator.Param] Widget widget ) @@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates var sl = bg.GetWidget("SERVER_LIST"); - ServerTemplate = sl.GetWidget("SERVER_TEMPLATE"); + ServerTemplate = sl.GetWidget("SERVER_TEMPLATE"); bg.GetWidget("REFRESH_BUTTON").OnMouseUp = mi => { @@ -146,16 +146,9 @@ namespace OpenRA.Mods.RA.Widgets.Delegates foreach (var loop in gamesWaiting) { var game = loop; - var template = ServerTemplate.Clone() as LabelWidget; - template.Id = "JOIN_GAME_{0}".F(i); - template.GetText = () => " {0} ({1})".F( /* /8 = hack */ - game.Name, - game.Address); - template.GetBackground = () => (currentServer == game) ? "dialog2" : null; - template.OnMouseDown = mi => { if (mi.Button != MouseButton.Left) return false; currentServer = game; return true; }; - template.IsVisible = () => true; - sl.AddChild(template); - + var item = ScrollItemWidget.Setup(ServerTemplate, () => currentServer == game, () => currentServer = game); + item.GetWidget("TITLE").GetText = () => "{0} ({1})".F(game.Name, game.Address); + sl.AddChild(item); if (i == 0) currentServer = game; i++; } diff --git a/mods/cnc/metrics.yaml b/mods/cnc/metrics.yaml index 764337ef91..5564c881c1 100644 --- a/mods/cnc/metrics.yaml +++ b/mods/cnc/metrics.yaml @@ -2,4 +2,5 @@ Metrics: ButtonDepth: 0 - ButtonFont: Bold \ No newline at end of file + ButtonFont: Bold + EnableHover: 1 \ No newline at end of file diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index 11ffa04419..9f8d1f35a2 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -420,4 +420,16 @@ checkbox-pressed: dialog.png corner-tl: 640,0,1,1 corner-tr: 722,0,1,1 corner-bl: 640,82,1,1 - corner-br: 722,82,1,1 \ No newline at end of file + corner-br: 722,82,1,1 + +# A copy of dialog2 +scrollitem-selected: dialog.png + background: 513,1,126,126 + border-r: 639,1,1,126 + border-l: 512,1,1,126 + border-b: 513,127,126,1 + border-t: 513,0,126,1 + corner-tl: 512,0,1,1 + corner-tr: 594,0,1,1 + corner-bl: 512,82,1,1 + corner-br: 594,82,1,1 \ No newline at end of file diff --git a/mods/ra/chrome/serverbrowser.yaml b/mods/ra/chrome/serverbrowser.yaml index 4b0c4973c1..02b2806ec6 100644 --- a/mods/ra/chrome/serverbrowser.yaml +++ b/mods/ra/chrome/serverbrowser.yaml @@ -109,13 +109,18 @@ Background@JOINSERVER_BG: Width:390 Height:300 Children: - Label@SERVER_TEMPLATE: + ScrollItem@SERVER_TEMPLATE: Id:SERVER_TEMPLATE - Width:PARENT_RIGHT-28 + Width:PARENT_RIGHT-27 Height:25 X:2 Y:0 - Visible:false + Children: + Label@TITLE: + X:10 + Id:TITLE + Width:200 + Height:25 Label@JOINSERVER_PROGRESS_TITLE: Id:JOINSERVER_PROGRESS_TITLE X:150 diff --git a/mods/ra/metrics.yaml b/mods/ra/metrics.yaml index c4561b9523..524d698939 100644 --- a/mods/ra/metrics.yaml +++ b/mods/ra/metrics.yaml @@ -2,4 +2,5 @@ Metrics: ButtonDepth: 1 - ButtonFont: Regular \ No newline at end of file + ButtonFont: Regular + EnableHover: 0 \ No newline at end of file