Use ScrollItem in ra server browser

This commit is contained in:
Paul Chote
2011-05-22 14:14:26 +12:00
parent dc6bd60fcc
commit 1d24c5f49c
6 changed files with 33 additions and 19 deletions

View File

@@ -16,6 +16,8 @@ namespace OpenRA.Widgets
{ {
public class ScrollItemWidget : ButtonWidget public class ScrollItemWidget : ButtonWidget
{ {
public int EnableHover = ChromeMetrics.GetInt("EnableHover");
public ScrollItemWidget() public ScrollItemWidget()
: base() : base()
{ {
@@ -33,7 +35,7 @@ namespace OpenRA.Widgets
public override void DrawInner() public override void DrawInner()
{ {
var state = IsSelected() ? "scrollitem-selected" : var state = IsSelected() ? "scrollitem-selected" :
RenderBounds.Contains(Viewport.LastMousePos) ? "scrollitem-hover" : EnableHover == 1 && RenderBounds.Contains(Viewport.LastMousePos) ? "scrollitem-hover" :
null; null;
if (state != null) if (state != null)

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
static List<Widget> GameButtons = new List<Widget>(); static List<Widget> GameButtons = new List<Widget>();
GameServer currentServer = null; GameServer currentServer = null;
Widget ServerTemplate; ScrollItemWidget ServerTemplate;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public ServerBrowserDelegate( [ObjectCreator.Param] Widget widget ) public ServerBrowserDelegate( [ObjectCreator.Param] Widget widget )
@@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
var sl = bg.GetWidget<ScrollPanelWidget>("SERVER_LIST"); var sl = bg.GetWidget<ScrollPanelWidget>("SERVER_LIST");
ServerTemplate = sl.GetWidget<LabelWidget>("SERVER_TEMPLATE"); ServerTemplate = sl.GetWidget<ScrollItemWidget>("SERVER_TEMPLATE");
bg.GetWidget("REFRESH_BUTTON").OnMouseUp = mi => bg.GetWidget("REFRESH_BUTTON").OnMouseUp = mi =>
{ {
@@ -146,16 +146,9 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
foreach (var loop in gamesWaiting) foreach (var loop in gamesWaiting)
{ {
var game = loop; var game = loop;
var template = ServerTemplate.Clone() as LabelWidget; var item = ScrollItemWidget.Setup(ServerTemplate, () => currentServer == game, () => currentServer = game);
template.Id = "JOIN_GAME_{0}".F(i); item.GetWidget<LabelWidget>("TITLE").GetText = () => "{0} ({1})".F(game.Name, game.Address);
template.GetText = () => " {0} ({1})".F( /* /8 = hack */ sl.AddChild(item);
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);
if (i == 0) currentServer = game; if (i == 0) currentServer = game;
i++; i++;
} }

View File

@@ -2,4 +2,5 @@
Metrics: Metrics:
ButtonDepth: 0 ButtonDepth: 0
ButtonFont: Bold ButtonFont: Bold
EnableHover: 1

View File

@@ -420,4 +420,16 @@ checkbox-pressed: dialog.png
corner-tl: 640,0,1,1 corner-tl: 640,0,1,1
corner-tr: 722,0,1,1 corner-tr: 722,0,1,1
corner-bl: 640,82,1,1 corner-bl: 640,82,1,1
corner-br: 722,82,1,1 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

View File

@@ -109,13 +109,18 @@ Background@JOINSERVER_BG:
Width:390 Width:390
Height:300 Height:300
Children: Children:
Label@SERVER_TEMPLATE: ScrollItem@SERVER_TEMPLATE:
Id:SERVER_TEMPLATE Id:SERVER_TEMPLATE
Width:PARENT_RIGHT-28 Width:PARENT_RIGHT-27
Height:25 Height:25
X:2 X:2
Y:0 Y:0
Visible:false Children:
Label@TITLE:
X:10
Id:TITLE
Width:200
Height:25
Label@JOINSERVER_PROGRESS_TITLE: Label@JOINSERVER_PROGRESS_TITLE:
Id:JOINSERVER_PROGRESS_TITLE Id:JOINSERVER_PROGRESS_TITLE
X:150 X:150

View File

@@ -2,4 +2,5 @@
Metrics: Metrics:
ButtonDepth: 1 ButtonDepth: 1
ButtonFont: Regular ButtonFont: Regular
EnableHover: 0