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(Widget other) : base(other) { } public ContainerWidget() : base()
{
GetBackground = () => Background;
}
public override void DrawInner( WorldRenderer wr ) { } public ContainerWidget(ContainerWidget other) : base(other)
{
Background = other.Background;
GetBackground = other.GetBackground;
}
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,10 +493,16 @@ Background@MAP_CHOOSER:
Y:4 Y:4
Width:244 Width:244
Height:244 Height:244
Container@MAP_LABEL_CONTAINER:
Width:70
Height:200
X:PARENT_RIGHT - 255
Y:311
Children:
Label@CURMAP_TITLE_LABEL: Label@CURMAP_TITLE_LABEL:
Id:CURMAP_TITLE_LABEL Id:CURMAP_TITLE_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:311 Y:0
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -473,15 +510,15 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_TITLE: Label@CURMAP_TITLE:
Id:CURMAP_TITLE Id:CURMAP_TITLE
X:PARENT_RIGHT - 195 X:75
Y:311 Y:0
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_AUTHOR_LABEL: Label@CURMAP_AUTHOR_LABEL:
Id:CURMAP_AUTHOR_LABEL Id:CURMAP_AUTHOR_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:331 Y:20
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -489,16 +526,16 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_AUTHOR: Label@CURMAP_AUTHOR:
Id:CURMAP_AUTHOR Id:CURMAP_AUTHOR
X:PARENT_RIGHT - 195 X:75
Y:331 Y:20
Align:Left Align:Left
Width:175 Width:175
Height:20 Height:20
WordWrap:True WordWrap:True
Label@CURMAP_SIZE_LABEL: Label@CURMAP_SIZE_LABEL:
Id:CURMAP_SIZE_LABEL Id:CURMAP_SIZE_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:371 Y:40
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -506,15 +543,15 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_SIZE: Label@CURMAP_SIZE:
Id:CURMAP_SIZE Id:CURMAP_SIZE
X:PARENT_RIGHT - 195 X:75
Y:371 Y:40
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_THEATER_LABEL: Label@CURMAP_THEATER_LABEL:
Id:CURMAP_THEATER_LABEL Id:CURMAP_THEATER_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:391 Y:60
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -522,15 +559,15 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_THEATER: Label@CURMAP_THEATER:
Id:CURMAP_THEATER Id:CURMAP_THEATER
X:PARENT_RIGHT - 195 X:75
Y:391 Y:60
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_PLAYERS_LABEL: Label@CURMAP_PLAYERS_LABEL:
Id:CURMAP_PLAYERS_LABEL Id:CURMAP_PLAYERS_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:411 Y:80
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -538,41 +575,41 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_PLAYERS: Label@CURMAP_PLAYERS:
Id:CURMAP_PLAYERS Id:CURMAP_PLAYERS
X:PARENT_RIGHT - 195 X:75
Y:411 Y:80
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_DESC_LABEL: Label@CURMAP_DESC_LABEL:
Id:CURMAP_DESC_LABEL Id:CURMAP_DESC_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:431 Y:100
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
Text:Desc.: Text:Desc:
Bold:True Bold:True
Label@CURMAP_DESC: Label@CURMAP_DESC:
Id:CURMAP_DESC Id:CURMAP_DESC
X:PARENT_RIGHT - 195 X:75
Y:431 Y:100
Align:Left Align:Left
Width:175 Width:170
Height:20 Height:20
WordWrap:True 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,10 +493,16 @@ Background@MAP_CHOOSER:
Y:4 Y:4
Width:244 Width:244
Height:244 Height:244
Container@MAP_LABEL_CONTAINER:
Width:70
Height:200
X:PARENT_RIGHT - 255
Y:311
Children:
Label@CURMAP_TITLE_LABEL: Label@CURMAP_TITLE_LABEL:
Id:CURMAP_TITLE_LABEL Id:CURMAP_TITLE_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:311 Y:0
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -473,15 +510,15 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_TITLE: Label@CURMAP_TITLE:
Id:CURMAP_TITLE Id:CURMAP_TITLE
X:PARENT_RIGHT - 195 X:75
Y:311 Y:0
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_AUTHOR_LABEL: Label@CURMAP_AUTHOR_LABEL:
Id:CURMAP_AUTHOR_LABEL Id:CURMAP_AUTHOR_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:331 Y:20
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -489,16 +526,16 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_AUTHOR: Label@CURMAP_AUTHOR:
Id:CURMAP_AUTHOR Id:CURMAP_AUTHOR
X:PARENT_RIGHT - 195 X:75
Y:331 Y:20
Align:Left Align:Left
Width:175 Width:175
Height:20 Height:20
WordWrap:True WordWrap:True
Label@CURMAP_SIZE_LABEL: Label@CURMAP_SIZE_LABEL:
Id:CURMAP_SIZE_LABEL Id:CURMAP_SIZE_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:371 Y:40
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -506,15 +543,15 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_SIZE: Label@CURMAP_SIZE:
Id:CURMAP_SIZE Id:CURMAP_SIZE
X:PARENT_RIGHT - 195 X:75
Y:371 Y:40
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_THEATER_LABEL: Label@CURMAP_THEATER_LABEL:
Id:CURMAP_THEATER_LABEL Id:CURMAP_THEATER_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:391 Y:60
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -522,15 +559,15 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_THEATER: Label@CURMAP_THEATER:
Id:CURMAP_THEATER Id:CURMAP_THEATER
X:PARENT_RIGHT - 195 X:75
Y:391 Y:60
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_PLAYERS_LABEL: Label@CURMAP_PLAYERS_LABEL:
Id:CURMAP_PLAYERS_LABEL Id:CURMAP_PLAYERS_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:411 Y:80
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
@@ -538,41 +575,41 @@ Background@MAP_CHOOSER:
Bold:True Bold:True
Label@CURMAP_PLAYERS: Label@CURMAP_PLAYERS:
Id:CURMAP_PLAYERS Id:CURMAP_PLAYERS
X:PARENT_RIGHT - 195 X:75
Y:411 Y:80
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@CURMAP_DESC_LABEL: Label@CURMAP_DESC_LABEL:
Id:CURMAP_DESC_LABEL Id:CURMAP_DESC_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:0
Y:431 Y:100
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
Text:Desc.: Text:Desc:
Bold:True Bold:True
Label@CURMAP_DESC: Label@CURMAP_DESC:
Id:CURMAP_DESC Id:CURMAP_DESC
X:PARENT_RIGHT - 195 X:75
Y:431 Y:100
Align:Left Align:Left
Width:175 Width:170
Height:20 Height:20
WordWrap:True 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