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 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)

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
static List<Widget> GameButtons = new List<Widget>();
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<ScrollPanelWidget>("SERVER_LIST");
ServerTemplate = sl.GetWidget<LabelWidget>("SERVER_TEMPLATE");
ServerTemplate = sl.GetWidget<ScrollItemWidget>("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<LabelWidget>("TITLE").GetText = () => "{0} ({1})".F(game.Name, game.Address);
sl.AddChild(item);
if (i == 0) currentServer = game;
i++;
}

View File

@@ -2,4 +2,5 @@
Metrics:
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-tr: 722,0,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
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

View File

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