More lobby polish (mainly map chooser).

This commit is contained in:
Paul Chote
2010-11-30 21:20:57 +13:00
parent 564a4598b9
commit 08eeec4d99
8 changed files with 337 additions and 242 deletions

View File

@@ -24,6 +24,7 @@ namespace OpenRA.FileFormats
[FieldLoader.Load] public bool Selectable; [FieldLoader.Load] public bool Selectable;
[FieldLoader.Load] public string Title; [FieldLoader.Load] public string Title;
[FieldLoader.Load] public string Type = "Conquest";
[FieldLoader.Load] public string Description; [FieldLoader.Load] public string Description;
[FieldLoader.Load] public string Author; [FieldLoader.Load] public string Author;
[FieldLoader.Load] public int PlayerCount; [FieldLoader.Load] public int PlayerCount;

View File

@@ -346,11 +346,26 @@ namespace OpenRA.Widgets
} }
public class ContainerWidget : Widget { public class ContainerWidget : Widget {
public ContainerWidget() : base() { } public Func<string> GetBackground;
public string Background = null;
public ContainerWidget() : base()
{
GetBackground = () => Background;
}
public ContainerWidget(ContainerWidget other) : base(other)
{
Background = other.Background;
GetBackground = other.GetBackground;
}
public ContainerWidget(Widget other) : base(other) { } public override void DrawInner( WorldRenderer wr )
{
public override void DrawInner( WorldRenderer wr ) { } var bg = GetBackground();
if (bg != null)
WidgetUtils.DrawPanel(bg, RenderBounds );
}
public override string GetCursor(int2 pos) { return null; } public override string GetCursor(int2 pos) { return null; }
public override Widget Clone() { return new ContainerWidget(this); } public override Widget Clone() { return new ContainerWidget(this); }

View File

@@ -36,6 +36,7 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
bg.GetWidget<LabelWidget>("CURMAP_TITLE").GetText = () => Map.Title; bg.GetWidget<LabelWidget>("CURMAP_TITLE").GetText = () => Map.Title;
bg.GetWidget<LabelWidget>("CURMAP_AUTHOR").GetText = () => Map.Author; bg.GetWidget<LabelWidget>("CURMAP_AUTHOR").GetText = () => Map.Author;
bg.GetWidget<LabelWidget>("CURMAP_DESC").GetText = () => Map.Description; bg.GetWidget<LabelWidget>("CURMAP_DESC").GetText = () => Map.Description;
bg.GetWidget<LabelWidget>("CURMAP_DESC_LABEL").IsVisible = () => Map.Description != null;
bg.GetWidget<LabelWidget>("CURMAP_SIZE").GetText = () => "{0}x{1}".F(Map.Bounds.Width, Map.Bounds.Height); bg.GetWidget<LabelWidget>("CURMAP_SIZE").GetText = () => "{0}x{1}".F(Map.Bounds.Width, Map.Bounds.Height);
bg.GetWidget<LabelWidget>("CURMAP_THEATER").GetText = () => Rules.TileSets[Map.Tileset].Name; bg.GetWidget<LabelWidget>("CURMAP_THEATER").GetText = () => Rules.TileSets[Map.Tileset].Name;
bg.GetWidget<LabelWidget>("CURMAP_PLAYERS").GetText = () => Map.PlayerCount.ToString(); bg.GetWidget<LabelWidget>("CURMAP_PLAYERS").GetText = () => Map.PlayerCount.ToString();
@@ -53,23 +54,23 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
return true; return true;
}; };
var itemTemplate = ml.GetWidget<LabelWidget>("MAP_TEMPLATE"); var itemTemplate = ml.GetWidget<ContainerWidget>("MAP_TEMPLATE");
int offset = itemTemplate.Bounds.Y; int offset = itemTemplate.Bounds.Y;
foreach (var kv in Game.modData.AvailableMaps) foreach (var kv in Game.modData.AvailableMaps.OrderBy(kv => kv.Value.Title))
{ {
var map = kv.Value; var map = kv.Value;
if (!map.Selectable) if (!map.Selectable)
continue; continue;
var template = itemTemplate.Clone() as LabelWidget; var template = itemTemplate.Clone() as ContainerWidget;
template.Id = "MAP_{0}".F(map.Uid); template.Id = "MAP_{0}".F(map.Uid);
template.GetText = () => " " + map.Title;
template.GetBackground = () => ((Map == map) ? "dialog2" : null); template.GetBackground = () => ((Map == map) ? "dialog2" : null);
template.OnMouseDown = mi => { Map = map; return true; }; template.OnMouseDown = mi => { Map = map; return true; };
template.Parent = ml; template.Parent = ml;
template.Bounds = new Rectangle(template.Bounds.X, offset, template.Bounds.Width, template.Bounds.Height); template.Bounds = new Rectangle(template.Bounds.X, offset, template.Bounds.Width, template.Bounds.Height);
template.IsVisible = () => true; template.IsVisible = () => true;
template.GetWidget<LabelWidget>("TITLE").GetText = () => " " + map.Title;
template.GetWidget<LabelWidget>("TYPE").GetText = () => map.Type + " ";
ml.AddChild(template); ml.AddChild(template);
offset += template.Bounds.Height; offset += template.Bounds.Height;

View File

@@ -9,7 +9,7 @@ Background@SERVER_LOBBY:
Label@LOBBY_TITLE: Label@LOBBY_TITLE:
Id:LOBBY_TITLE Id:LOBBY_TITLE
X:0 X:0
Y:20 Y:17
Align:Center Align:Center
Width:800 Width:800
Height:20 Height:20
@@ -290,7 +290,7 @@ Background@SERVER_LOBBY:
Bold:True Bold:True
Button@CHANGEMAP_BUTTON: Button@CHANGEMAP_BUTTON:
Id:CHANGEMAP_BUTTON Id:CHANGEMAP_BUTTON
X:PARENT_RIGHT-160 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM-269 Y:PARENT_BOTTOM-269
Width:120 Width:120
Height:25 Height:25
@@ -319,7 +319,7 @@ Background@SERVER_LOBBY:
Height:25 Height:25
Button@START_GAME_BUTTON: Button@START_GAME_BUTTON:
Id:START_GAME_BUTTON Id:START_GAME_BUTTON
X:PARENT_RIGHT-160 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM-49 Y:PARENT_BOTTOM-49
Width:120 Width:120
Height:25 Height:25
@@ -327,7 +327,7 @@ Background@SERVER_LOBBY:
Bold:True Bold:True
Button@DISCONNECT_BUTTON: Button@DISCONNECT_BUTTON:
Id:DISCONNECT_BUTTON Id:DISCONNECT_BUTTON
X:PARENT_RIGHT-160 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM-189 Y:PARENT_BOTTOM-189
Width:120 Width:120
Height:25 Height:25
@@ -335,7 +335,7 @@ Background@SERVER_LOBBY:
Bold:True Bold:True
Checkbox@LOCKTEAMS_CHECKBOX: Checkbox@LOCKTEAMS_CHECKBOX:
Id:LOCKTEAMS_CHECKBOX Id:LOCKTEAMS_CHECKBOX
X: PARENT_RIGHT-160 X: PARENT_RIGHT-154
Y: PARENT_BOTTOM-229 Y: PARENT_BOTTOM-229
Width: 80 Width: 80
Height: 20 Height: 20
@@ -428,7 +428,7 @@ Background@MAP_CHOOSER:
Children: Children:
Label@MAPCHOOSER_TITLE: Label@MAPCHOOSER_TITLE:
X:0 X:0
Y:20 Y:17
Align:Center Align:Center
Width:800 Width:800
Height:20 Height:20
@@ -437,18 +437,49 @@ Background@MAP_CHOOSER:
ScrollPanel@MAP_LIST: ScrollPanel@MAP_LIST:
Id:MAP_LIST Id:MAP_LIST
X:20 X:20
Y:50 Y:67
Width:500 Width:504
Height:480 Height:474
Children: Children:
Label@MAP_TEMPLATE: Container@MAP_TEMPLATE:
Id:MAP_TEMPLATE Id:MAP_TEMPLATE
Width:PARENT_RIGHT-28 Width:PARENT_RIGHT-28
Height:25 Height:25
ClickThrough:false ClickThrough:false
X:2 X:2
Y:0 Y:2
Visible:false Visible:false
Children:
Label@TITLE:
Id:TITLE
Width:PARENT_RIGHT-100
Height:25
Label@TYPE:
Id:TYPE
Width:100
X:PARENT_RIGHT-100
Align:Right
Height:25
Container@MAP_LABELS:
Width:494
Height:25
X:25
Y:40
Children:
Label@TITLE:
Width:150
Height:25
X:0
Y:0
Text:Title
Align:Center
Bold:True
Label@TYPE:
Text:Type
Bold:true
Width:50
X:415
Height:25
Background@MAPCHOOSER_MAP_BG: Background@MAPCHOOSER_MAP_BG:
X:PARENT_RIGHT-268 X:PARENT_RIGHT-268
Y:50 Y:50
@@ -462,117 +493,123 @@ Background@MAP_CHOOSER:
Y:4 Y:4
Width:244 Width:244
Height:244 Height:244
Label@CURMAP_TITLE_LABEL: Container@MAP_LABEL_CONTAINER:
Id:CURMAP_TITLE_LABEL Width:70
X:PARENT_RIGHT - 200 - WIDTH Height:200
X:PARENT_RIGHT - 255
Y:311 Y:311
Align:Right Children:
Width:70 Label@CURMAP_TITLE_LABEL:
Height:20 Id:CURMAP_TITLE_LABEL
Text:Title: X:0
Bold:True Y:0
Label@CURMAP_TITLE: Align:Right
Id:CURMAP_TITLE Width:70
X:PARENT_RIGHT - 195 Height:20
Y:311 Text:Title:
Align:Left Bold:True
Width:70 Label@CURMAP_TITLE:
Height:20 Id:CURMAP_TITLE
Label@CURMAP_AUTHOR_LABEL: X:75
Id:CURMAP_AUTHOR_LABEL Y:0
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:331 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_AUTHOR_LABEL:
Height:20 Id:CURMAP_AUTHOR_LABEL
Text:Author: X:0
Bold:True Y:20
Label@CURMAP_AUTHOR: Align:Right
Id:CURMAP_AUTHOR Width:70
X:PARENT_RIGHT - 195 Height:20
Y:331 Text:Author:
Align:Left Bold:True
Width:175 Label@CURMAP_AUTHOR:
Height:20 Id:CURMAP_AUTHOR
WordWrap:True X:75
Label@CURMAP_SIZE_LABEL: Y:20
Id:CURMAP_SIZE_LABEL Align:Left
X:PARENT_RIGHT - 200 - WIDTH Width:175
Y:371 Height:20
Align:Right WordWrap:True
Width:70 Label@CURMAP_SIZE_LABEL:
Height:20 Id:CURMAP_SIZE_LABEL
Text:Size: X:0
Bold:True Y:40
Label@CURMAP_SIZE: Align:Right
Id:CURMAP_SIZE Width:70
X:PARENT_RIGHT - 195 Height:20
Y:371 Text:Size:
Align:Left Bold:True
Width:70 Label@CURMAP_SIZE:
Height:20 Id:CURMAP_SIZE
Label@CURMAP_THEATER_LABEL: X:75
Id:CURMAP_THEATER_LABEL Y:40
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:391 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_THEATER_LABEL:
Height:20 Id:CURMAP_THEATER_LABEL
Text:Theater: X:0
Bold:True Y:60
Label@CURMAP_THEATER: Align:Right
Id:CURMAP_THEATER Width:70
X:PARENT_RIGHT - 195 Height:20
Y:391 Text:Theater:
Align:Left Bold:True
Width:70 Label@CURMAP_THEATER:
Height:20 Id:CURMAP_THEATER
Label@CURMAP_PLAYERS_LABEL: X:75
Id:CURMAP_PLAYERS_LABEL Y:60
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:411 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_PLAYERS_LABEL:
Height:20 Id:CURMAP_PLAYERS_LABEL
Text:Players: X:0
Bold:True Y:80
Label@CURMAP_PLAYERS: Align:Right
Id:CURMAP_PLAYERS Width:70
X:PARENT_RIGHT - 195 Height:20
Y:411 Text:Players:
Align:Left Bold:True
Width:70 Label@CURMAP_PLAYERS:
Height:20 Id:CURMAP_PLAYERS
Label@CURMAP_DESC_LABEL: X:75
Id:CURMAP_DESC_LABEL Y:80
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:431 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_DESC_LABEL:
Height:20 Id:CURMAP_DESC_LABEL
Text:Desc.: X:0
Bold:True Y:100
Label@CURMAP_DESC: Align:Right
Id:CURMAP_DESC Width:70
X:PARENT_RIGHT - 195 Height:20
Y:431 Text:Desc:
Align:Left Bold:True
Width:175 Label@CURMAP_DESC:
Height:20 Id:CURMAP_DESC
WordWrap:True X:75
Y:100
Align:Left
Width:170
Height:20
WordWrap:True
Button@BUTTON_OK: Button@BUTTON_OK:
Id:BUTTON_OK Id:BUTTON_OK
X:PARENT_RIGHT - 360 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM-49
Width:160 Width:120
Height:25 Height:25
Text:Ok Text:Ok
Bold:True Bold:True
Button@BUTTON_CANCEL: Button@BUTTON_CANCEL:
Id:BUTTON_CANCEL Id:BUTTON_CANCEL
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 295
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 49
Width:160 Width:120
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True

View File

@@ -9,7 +9,7 @@ Background@SERVER_LOBBY:
Label@LOBBY_TITLE: Label@LOBBY_TITLE:
Id:LOBBY_TITLE Id:LOBBY_TITLE
X:0 X:0
Y:20 Y:17
Align:Center Align:Center
Width:800 Width:800
Height:20 Height:20
@@ -290,7 +290,7 @@ Background@SERVER_LOBBY:
Bold:True Bold:True
Button@CHANGEMAP_BUTTON: Button@CHANGEMAP_BUTTON:
Id:CHANGEMAP_BUTTON Id:CHANGEMAP_BUTTON
X:PARENT_RIGHT-160 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM-269 Y:PARENT_BOTTOM-269
Width:120 Width:120
Height:25 Height:25
@@ -319,7 +319,7 @@ Background@SERVER_LOBBY:
Height:25 Height:25
Button@START_GAME_BUTTON: Button@START_GAME_BUTTON:
Id:START_GAME_BUTTON Id:START_GAME_BUTTON
X:PARENT_RIGHT-160 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM-49 Y:PARENT_BOTTOM-49
Width:120 Width:120
Height:25 Height:25
@@ -327,7 +327,7 @@ Background@SERVER_LOBBY:
Bold:True Bold:True
Button@DISCONNECT_BUTTON: Button@DISCONNECT_BUTTON:
Id:DISCONNECT_BUTTON Id:DISCONNECT_BUTTON
X:PARENT_RIGHT-160 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM-189 Y:PARENT_BOTTOM-189
Width:120 Width:120
Height:25 Height:25
@@ -335,7 +335,7 @@ Background@SERVER_LOBBY:
Bold:True Bold:True
Checkbox@LOCKTEAMS_CHECKBOX: Checkbox@LOCKTEAMS_CHECKBOX:
Id:LOCKTEAMS_CHECKBOX Id:LOCKTEAMS_CHECKBOX
X: PARENT_RIGHT-160 X: PARENT_RIGHT-154
Y: PARENT_BOTTOM-229 Y: PARENT_BOTTOM-229
Width: 80 Width: 80
Height: 20 Height: 20
@@ -428,7 +428,7 @@ Background@MAP_CHOOSER:
Children: Children:
Label@MAPCHOOSER_TITLE: Label@MAPCHOOSER_TITLE:
X:0 X:0
Y:20 Y:17
Align:Center Align:Center
Width:800 Width:800
Height:20 Height:20
@@ -437,18 +437,49 @@ Background@MAP_CHOOSER:
ScrollPanel@MAP_LIST: ScrollPanel@MAP_LIST:
Id:MAP_LIST Id:MAP_LIST
X:20 X:20
Y:50 Y:67
Width:500 Width:504
Height:480 Height:474
Children: Children:
Label@MAP_TEMPLATE: Container@MAP_TEMPLATE:
Id:MAP_TEMPLATE Id:MAP_TEMPLATE
Width:PARENT_RIGHT-28 Width:PARENT_RIGHT-28
Height:25 Height:25
ClickThrough:false ClickThrough:false
X:2 X:2
Y:0 Y:2
Visible:false Visible:false
Children:
Label@TITLE:
Id:TITLE
Width:PARENT_RIGHT-100
Height:25
Label@TYPE:
Id:TYPE
Width:100
X:PARENT_RIGHT-100
Align:Right
Height:25
Container@MAP_LABELS:
Width:494
Height:25
X:25
Y:40
Children:
Label@TITLE:
Width:150
Height:25
X:0
Y:0
Text:Title
Align:Center
Bold:True
Label@TYPE:
Text:Type
Bold:true
Width:50
X:415
Height:25
Background@MAPCHOOSER_MAP_BG: Background@MAPCHOOSER_MAP_BG:
X:PARENT_RIGHT-268 X:PARENT_RIGHT-268
Y:50 Y:50
@@ -462,117 +493,123 @@ Background@MAP_CHOOSER:
Y:4 Y:4
Width:244 Width:244
Height:244 Height:244
Label@CURMAP_TITLE_LABEL: Container@MAP_LABEL_CONTAINER:
Id:CURMAP_TITLE_LABEL Width:70
X:PARENT_RIGHT - 200 - WIDTH Height:200
X:PARENT_RIGHT - 255
Y:311 Y:311
Align:Right Children:
Width:70 Label@CURMAP_TITLE_LABEL:
Height:20 Id:CURMAP_TITLE_LABEL
Text:Title: X:0
Bold:True Y:0
Label@CURMAP_TITLE: Align:Right
Id:CURMAP_TITLE Width:70
X:PARENT_RIGHT - 195 Height:20
Y:311 Text:Title:
Align:Left Bold:True
Width:70 Label@CURMAP_TITLE:
Height:20 Id:CURMAP_TITLE
Label@CURMAP_AUTHOR_LABEL: X:75
Id:CURMAP_AUTHOR_LABEL Y:0
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:331 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_AUTHOR_LABEL:
Height:20 Id:CURMAP_AUTHOR_LABEL
Text:Author: X:0
Bold:True Y:20
Label@CURMAP_AUTHOR: Align:Right
Id:CURMAP_AUTHOR Width:70
X:PARENT_RIGHT - 195 Height:20
Y:331 Text:Author:
Align:Left Bold:True
Width:175 Label@CURMAP_AUTHOR:
Height:20 Id:CURMAP_AUTHOR
WordWrap:True X:75
Label@CURMAP_SIZE_LABEL: Y:20
Id:CURMAP_SIZE_LABEL Align:Left
X:PARENT_RIGHT - 200 - WIDTH Width:175
Y:371 Height:20
Align:Right WordWrap:True
Width:70 Label@CURMAP_SIZE_LABEL:
Height:20 Id:CURMAP_SIZE_LABEL
Text:Size: X:0
Bold:True Y:40
Label@CURMAP_SIZE: Align:Right
Id:CURMAP_SIZE Width:70
X:PARENT_RIGHT - 195 Height:20
Y:371 Text:Size:
Align:Left Bold:True
Width:70 Label@CURMAP_SIZE:
Height:20 Id:CURMAP_SIZE
Label@CURMAP_THEATER_LABEL: X:75
Id:CURMAP_THEATER_LABEL Y:40
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:391 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_THEATER_LABEL:
Height:20 Id:CURMAP_THEATER_LABEL
Text:Theater: X:0
Bold:True Y:60
Label@CURMAP_THEATER: Align:Right
Id:CURMAP_THEATER Width:70
X:PARENT_RIGHT - 195 Height:20
Y:391 Text:Theater:
Align:Left Bold:True
Width:70 Label@CURMAP_THEATER:
Height:20 Id:CURMAP_THEATER
Label@CURMAP_PLAYERS_LABEL: X:75
Id:CURMAP_PLAYERS_LABEL Y:60
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:411 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_PLAYERS_LABEL:
Height:20 Id:CURMAP_PLAYERS_LABEL
Text:Players: X:0
Bold:True Y:80
Label@CURMAP_PLAYERS: Align:Right
Id:CURMAP_PLAYERS Width:70
X:PARENT_RIGHT - 195 Height:20
Y:411 Text:Players:
Align:Left Bold:True
Width:70 Label@CURMAP_PLAYERS:
Height:20 Id:CURMAP_PLAYERS
Label@CURMAP_DESC_LABEL: X:75
Id:CURMAP_DESC_LABEL Y:80
X:PARENT_RIGHT - 200 - WIDTH Align:Left
Y:431 Width:70
Align:Right Height:20
Width:70 Label@CURMAP_DESC_LABEL:
Height:20 Id:CURMAP_DESC_LABEL
Text:Desc.: X:0
Bold:True Y:100
Label@CURMAP_DESC: Align:Right
Id:CURMAP_DESC Width:70
X:PARENT_RIGHT - 195 Height:20
Y:431 Text:Desc:
Align:Left Bold:True
Width:175 Label@CURMAP_DESC:
Height:20 Id:CURMAP_DESC
WordWrap:True X:75
Y:100
Align:Left
Width:170
Height:20
WordWrap:True
Button@BUTTON_OK: Button@BUTTON_OK:
Id:BUTTON_OK Id:BUTTON_OK
X:PARENT_RIGHT - 360 X:PARENT_RIGHT-154
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM-49
Width:160 Width:120
Height:25 Height:25
Text:Ok Text:Ok
Bold:True Bold:True
Button@BUTTON_CANCEL: Button@BUTTON_CANCEL:
Id:BUTTON_CANCEL Id:BUTTON_CANCEL
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 295
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 49
Width:160 Width:120
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True

View File

@@ -4,7 +4,7 @@ MapFormat: 3
Title: Caffeinated Title: Caffeinated
Author: Chris Forbes & Bob Pepperell Author: C. Forbes & R. Pepperell
PlayerCount: 8 PlayerCount: 8

View File

@@ -2,9 +2,11 @@ Selectable: True
MapFormat: 3 MapFormat: 3
Title: Crossroads (KoTH) Title: Crossroads
Description: Classic KoTH map for 2-man teams Type: KotH
Description: Classic King of the Hill map for 2-man teams
Author: Chris Forbes Author: Chris Forbes

View File

@@ -2,9 +2,11 @@ Selectable: True
MapFormat: 3 MapFormat: 3
Title: Island Hoppers (KoTH) Title: Island Hoppers
Description: Island Hoppers, Modified for King Of The Hill Type: KotH
Description: Island Hoppers, Modified for King of the Hill
Author: Westwood Studios Author: Westwood Studios