diff --git a/OpenRA.Game/OpenRA.Game.csproj b/OpenRA.Game/OpenRA.Game.csproj
index 58c9a9b3c9..9fd3df9b19 100755
--- a/OpenRA.Game/OpenRA.Game.csproj
+++ b/OpenRA.Game/OpenRA.Game.csproj
@@ -201,6 +201,7 @@
+
diff --git a/OpenRA.Game/Widgets/Delegates/ReplayBrowserDelegate.cs b/OpenRA.Game/Widgets/Delegates/ReplayBrowserDelegate.cs
new file mode 100644
index 0000000000..1481136279
--- /dev/null
+++ b/OpenRA.Game/Widgets/Delegates/ReplayBrowserDelegate.cs
@@ -0,0 +1,21 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2010 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see LICENSE.
+ */
+#endregion
+
+namespace OpenRA.Widgets.Delegates
+{
+ public class ReplayBrowserDelegate : IWidgetDelegate
+ {
+ [ObjectCreator.UseCtor]
+ public ReplayBrowserDelegate( [ObjectCreator.Param] Widget widget )
+ {
+ /* todo */
+ }
+ }
+}
diff --git a/OpenRA.Mods.RA/Widgets/Delegates/MainMenuButtonsDelegate.cs b/OpenRA.Mods.RA/Widgets/Delegates/MainMenuButtonsDelegate.cs
index 2762301e14..353e09fba3 100755
--- a/OpenRA.Mods.RA/Widgets/Delegates/MainMenuButtonsDelegate.cs
+++ b/OpenRA.Mods.RA/Widgets/Delegates/MainMenuButtonsDelegate.cs
@@ -21,14 +21,15 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
static bool FirstInit = true;
[ObjectCreator.UseCtor]
- public MainMenuButtonsDelegate( [ObjectCreator.Param] Widget widget )
+ public MainMenuButtonsDelegate([ObjectCreator.Param] Widget widget)
{
// Main menu is the default window
- widget.GetWidget( "MAINMENU_BUTTON_JOIN" ).OnMouseUp = mi => { Widget.OpenWindow( "JOINSERVER_BG" ); return true; };
- widget.GetWidget( "MAINMENU_BUTTON_CREATE" ).OnMouseUp = mi => { Widget.OpenWindow( "CREATESERVER_BG" ); return true; };
- widget.GetWidget( "MAINMENU_BUTTON_SETTINGS" ).OnMouseUp = mi => { Widget.OpenWindow( "SETTINGS_MENU" ); return true; };
- widget.GetWidget( "MAINMENU_BUTTON_MUSIC" ).OnMouseUp = mi => { Widget.OpenWindow( "MUSIC_MENU" ); return true; };
- widget.GetWidget( "MAINMENU_BUTTON_QUIT" ).OnMouseUp = mi => { Game.Exit(); return true; };
+ widget.GetWidget("MAINMENU_BUTTON_JOIN").OnMouseUp = mi => { Widget.OpenWindow("JOINSERVER_BG"); return true; };
+ widget.GetWidget("MAINMENU_BUTTON_CREATE").OnMouseUp = mi => { Widget.OpenWindow("CREATESERVER_BG"); return true; };
+ widget.GetWidget("MAINMENU_BUTTON_SETTINGS").OnMouseUp = mi => { Widget.OpenWindow("SETTINGS_MENU"); return true; };
+ widget.GetWidget("MAINMENU_BUTTON_MUSIC").OnMouseUp = mi => { Widget.OpenWindow("MUSIC_MENU"); return true; };
+ widget.GetWidget("MAINMENU_BUTTON_REPLAY_VIEWER").OnMouseUp = mi => { Widget.OpenWindow("REPLAYBROWSER_BG"); return true; };
+ widget.GetWidget("MAINMENU_BUTTON_QUIT").OnMouseUp = mi => { Game.Exit(); return true; };
var version = widget.GetWidget("VERSION_STRING");
diff --git a/mods/ra/chrome/mainmenu.yaml b/mods/ra/chrome/mainmenu.yaml
index 190bb0aee8..60f75c19f8 100644
--- a/mods/ra/chrome/mainmenu.yaml
+++ b/mods/ra/chrome/mainmenu.yaml
@@ -1,285 +1,294 @@
-Background@MAINMENU_BG:
- Id:MAINMENU_BG
- X:(WINDOW_RIGHT - WIDTH)/2
- Y:(WINDOW_BOTTOM - HEIGHT)/2
- Width:250
- Height:290
- Delegate:MainMenuButtonsDelegate
- Children:
- Background@MOTD_BG:
- Id:MOTD_BG
- X:0 - PARENT_LEFT + WINDOW_RIGHT/3
- Y:0 - PARENT_TOP + 44
- Width:WINDOW_RIGHT/3
- Height:30
- Background:dialog4
- Children:
- ScrollingText@MOTD_SCROLLER:
- Id:MOTD_SCROLLER
- X:15
- Y:2
- Width:PARENT_RIGHT - 30
- Height:25
- ScrollRate:8
- Text:Welcome to OpenRA. Enjoy your stay.
- Background@MOTD_LABEL_BG
- Id:MOTD_LABEL_BG
- X:0 - PARENT_LEFT + (WINDOW_RIGHT/16)*7
- Y:0 - PARENT_TOP + 15
- Width:(WINDOW_RIGHT/16)*2
- Height:30
- Background:dialog4
- Children:
- Label@MOTD_LABEL
- Id:MOTD_LABEL
- X:0
- Y:2
- Width:(WINDOW_RIGHT/16)*2
- Height:25
- Text:Message of the Day
- Align:Center
- Bold:True
- Label@MAINMENU_LABEL_TITLE:
- Id:MAINMENU_LABEL_TITLE
- X:0
- Y:20
- Width:250
- Height:25
- Text:OpenRA Main Menu
- Align:Center
- Bold:True
- Button@MAINMENU_BUTTON_JOIN:
- Id:MAINMENU_BUTTON_JOIN
- X:45
- Y:70
- Width:160
- Height:25
- Text:Join Game
- Bold:True
- Button@MAINMENU_BUTTON_CREATE:
- Id:MAINMENU_BUTTON_CREATE
- X:45
- Y:110
- Width:160
- Height:25
- Text:Create Game
- Bold:True
- Button@MAINMENU_BUTTON_SETTINGS:
- Id:MAINMENU_BUTTON_SETTINGS
- X:45
- Y:150
- Width:160
- Height:25
- Text:Settings
- Bold:True
- Button@MAINMENU_BUTTON_MUSIC:
- Id:MAINMENU_BUTTON_MUSIC
- X:45
- Y:190
- Width:160
- Height:25
- Text:Music
- Bold:True
- Button@MAINMENU_BUTTON_QUIT:
- Id:MAINMENU_BUTTON_QUIT
- X:45
- Y:230
- Width:160
- Height:25
- Text:Quit
- Bold:True
- Button@MAINMENU_BUTTON_VIDEOPLAYER:
- Id:MAINMENU_BUTTON_VIDEOPLAYER
- Visible:false
- X:45
- Y:260
- Width:160
- Height:25
- Text:Video Player
- Bold:True
- Label@VERSION_STRING:
- Id:VERSION_STRING
- X:WINDOW_RIGHT - PARENT_LEFT - WIDTH - 15
- Y:WINDOW_BOTTOM - PARENT_TOP - 65
- Width:400
- Height:70
- Text:
- Align:Right
- Bold:True
-Background@PERF_BG:
- ClickThrough:true
- Id:PERF_BG
- Background:dialog4
- Delegate:PerfDebugDelegate
- X:10
- Y:WINDOW_BOTTOM - 250
- Width: 210
- Height: 250
- Children:
- PerfGraph@GRAPH:
- Id:GRAPH
- X:5
- Y:5
- Width:200
- Height:200
- Label@TEXT:
- Id:TEXT
- Bold: false
- X:20
- Y:205
- Width:170
- Height:40
-Background@MUSIC_MENU:
- Id:MUSIC_MENU
- Delegate:MusicPlayerDelegate
- X:(WINDOW_RIGHT - WIDTH)/2
- Y:(WINDOW_BOTTOM - HEIGHT)/2
- Width: 450
- Height: 250
- Children:
- Label@SETTINGS_LABEL_TITLE:
- Id:SETTINGS_LABEL_TITLE
- X:0
- Y:20
- Width:450
- Height:25
- Text:Music
- Align:Center
- Bold:True
- Button@BUTTON_CLOSE:
- Id:BUTTON_CLOSE
- X:PARENT_RIGHT - 180
- Y:PARENT_BOTTOM - 45
- Width:160
- Height:25
- Text:Close
- Bold:True
- Container@BUTTONS:
- X:PARENT_RIGHT - 150
- Y:50
- Children:
- Button@BUTTON_PLAY:
- Id:BUTTON_PLAY
- X:35
- Y:0
- Width:25
- Height:25
- Children:
- Image@IMAGE_PLAY:
- Id:IMAGE_PLAY
- X:0
- Y:0
- Width:25
- Height:25
- ImageCollection:music
- ImageName:play
- Button@BUTTON_PAUSE:
- Id:BUTTON_PAUSE
- Visible:false
- X:35
- Y:0
- Width:25
- Height:25
- Children:
- Image@IMAGE_PAUSE:
- Id:IMAGE_PAUSE
- X:0
- Y:0
- Width:25
- Height:25
- ImageCollection:music
- ImageName:pause
- Button@BUTTON_STOP:
- Id:BUTTON_STOP
- X:70
- Y:0
- Width:25
- Height:25
- Children:
- Image@IMAGE_STOP:
- Id:IMAGE_STOP
- X:0
- Y:0
- Width:25
- Height:25
- ImageCollection:music
- ImageName:stop
- Button@BUTTON_NEXT:
- Id:BUTTON_NEXT
- X:105
- Y:0
- Width:25
- Height:25
- Children:
- Image@IMAGE_NEXT:
- Id:IMAGE_NEXT
- X:0
- Y:0
- Width:25
- Height:25
- ImageCollection:music
- ImageName:next
- Button@BUTTON_PREV:
- Id:BUTTON_PREV
- X:0
- Y:0
- Width:25
- Height:25
- Children:
- Image@IMAGE_PREV:
- Id:IMAGE_PREV
- X:0
- Y:0
- Width:25
- Height:25
- ImageCollection:music
- ImageName:prev
- Label@TIME:
- Id:TIME
- X:PARENT_RIGHT - 150
- Y:75
- Width:140
- Height:25
- Align: Center
- ScrollPanel@MUSIC_LIST:
- Id:MUSIC_LIST
- X:10
- Y:50
- Width:280
- Height:140
- Children:
- Label@MUSIC_TEMPLATE:
- Id:MUSIC_TEMPLATE
- Width:PARENT_RIGHT-28
- Height:25
- ClickThrough:false
- X:2
- Y:0
- Visible:false
- Children:
- Label@TITLE:
- Id:TITLE
- X:5
- Width:PARENT_RIGHT - 10
- Height:PARENT_BOTTOM
- Align: Left
- Label@LENGTH:
- Id:LENGTH
- X:5
- Width:PARENT_RIGHT - 10
- Height:PARENT_BOTTOM
- Align: Right
- Checkbox@SHUFFLE:
- Id:SHUFFLE
- X:PARENT_RIGHT - 150
- Y:110
- Width:100
- Height:20
- Text:Shuffle
- Checkbox@REPEAT:
- Id:REPEAT
- X:PARENT_RIGHT - 150
- Y:140
- Width:100
- Height:20
- Text:Loop
\ No newline at end of file
+Background@MAINMENU_BG:
+ Id:MAINMENU_BG
+ X:(WINDOW_RIGHT - WIDTH)/2
+ Y:(WINDOW_BOTTOM - HEIGHT)/2
+ Width:250
+ Height:330
+ Delegate:MainMenuButtonsDelegate
+ Children:
+ Background@MOTD_BG:
+ Id:MOTD_BG
+ X:0 - PARENT_LEFT + WINDOW_RIGHT/3
+ Y:0 - PARENT_TOP + 44
+ Width:WINDOW_RIGHT/3
+ Height:30
+ Background:dialog4
+ Children:
+ ScrollingText@MOTD_SCROLLER:
+ Id:MOTD_SCROLLER
+ X:15
+ Y:2
+ Width:PARENT_RIGHT - 30
+ Height:25
+ ScrollRate:8
+ Text:Welcome to OpenRA. Enjoy your stay.
+ Background@MOTD_LABEL_BG
+ Id:MOTD_LABEL_BG
+ X:0 - PARENT_LEFT + (WINDOW_RIGHT/16)*7
+ Y:0 - PARENT_TOP + 15
+ Width:(WINDOW_RIGHT/16)*2
+ Height:30
+ Background:dialog4
+ Children:
+ Label@MOTD_LABEL
+ Id:MOTD_LABEL
+ X:0
+ Y:2
+ Width:(WINDOW_RIGHT/16)*2
+ Height:25
+ Text:Message of the Day
+ Align:Center
+ Bold:True
+ Label@MAINMENU_LABEL_TITLE:
+ Id:MAINMENU_LABEL_TITLE
+ X:0
+ Y:20
+ Width:250
+ Height:25
+ Text:OpenRA Main Menu
+ Align:Center
+ Bold:True
+ Button@MAINMENU_BUTTON_JOIN:
+ Id:MAINMENU_BUTTON_JOIN
+ X:45
+ Y:70
+ Width:160
+ Height:25
+ Text:Join Game
+ Bold:True
+ Button@MAINMENU_BUTTON_CREATE:
+ Id:MAINMENU_BUTTON_CREATE
+ X:45
+ Y:110
+ Width:160
+ Height:25
+ Text:Create Game
+ Bold:True
+ Button@MAINMENU_BUTTON_SETTINGS:
+ Id:MAINMENU_BUTTON_SETTINGS
+ X:45
+ Y:150
+ Width:160
+ Height:25
+ Text:Settings
+ Bold:True
+ Button@MAINMENU_BUTTON_MUSIC:
+ Id:MAINMENU_BUTTON_MUSIC
+ X:45
+ Y:190
+ Width:160
+ Height:25
+ Text:Music
+ Bold:True
+ Button@MAINMENU_BUTTON_REPLAY_VIEWER:
+ Id:MAINMENU_BUTTON_REPLAY_VIEWER
+ X:45
+ Y:230
+ Width:160
+ Height:25
+ Text: Replay Viewer
+ Bold: True
+ Button@MAINMENU_BUTTON_QUIT:
+ Id:MAINMENU_BUTTON_QUIT
+ X:45
+ Y:270
+ Width:160
+ Height:25
+ Text:Quit
+ Bold:True
+ Button@MAINMENU_BUTTON_VIDEOPLAYER:
+ Id:MAINMENU_BUTTON_VIDEOPLAYER
+ Visible:false
+ X:45
+ Y:260
+ Width:160
+ Height:25
+ Text:Video Player
+ Bold:True
+ Label@VERSION_STRING:
+ Id:VERSION_STRING
+ X:WINDOW_RIGHT - PARENT_LEFT - WIDTH - 15
+ Y:WINDOW_BOTTOM - PARENT_TOP - 65
+ Width:400
+ Height:70
+ Text:
+ Align:Right
+ Bold:True
+Background@PERF_BG:
+ ClickThrough:true
+ Id:PERF_BG
+ Background:dialog4
+ Delegate:PerfDebugDelegate
+ X:10
+ Y:WINDOW_BOTTOM - 250
+ Width: 210
+ Height: 250
+ Children:
+ PerfGraph@GRAPH:
+ Id:GRAPH
+ X:5
+ Y:5
+ Width:200
+ Height:200
+ Label@TEXT:
+ Id:TEXT
+ Bold: false
+ X:20
+ Y:205
+ Width:170
+ Height:40
+Background@MUSIC_MENU:
+ Id:MUSIC_MENU
+ Delegate:MusicPlayerDelegate
+ X:(WINDOW_RIGHT - WIDTH)/2
+ Y:(WINDOW_BOTTOM - HEIGHT)/2
+ Width: 450
+ Height: 250
+ Visible: true
+ Children:
+ Label@SETTINGS_LABEL_TITLE:
+ Id:SETTINGS_LABEL_TITLE
+ X:0
+ Y:20
+ Width:450
+ Height:25
+ Text:Music
+ Align:Center
+ Bold:True
+ Button@BUTTON_CLOSE:
+ Id:BUTTON_CLOSE
+ X:PARENT_RIGHT - 180
+ Y:PARENT_BOTTOM - 45
+ Width:160
+ Height:25
+ Text:Close
+ Bold:True
+ Container@BUTTONS:
+ X:PARENT_RIGHT - 150
+ Y:50
+ Children:
+ Button@BUTTON_PLAY:
+ Id:BUTTON_PLAY
+ X:35
+ Y:0
+ Width:25
+ Height:25
+ Children:
+ Image@IMAGE_PLAY:
+ Id:IMAGE_PLAY
+ X:0
+ Y:0
+ Width:25
+ Height:25
+ ImageCollection:music
+ ImageName:play
+ Button@BUTTON_PAUSE:
+ Id:BUTTON_PAUSE
+ Visible:false
+ X:35
+ Y:0
+ Width:25
+ Height:25
+ Children:
+ Image@IMAGE_PAUSE:
+ Id:IMAGE_PAUSE
+ X:0
+ Y:0
+ Width:25
+ Height:25
+ ImageCollection:music
+ ImageName:pause
+ Button@BUTTON_STOP:
+ Id:BUTTON_STOP
+ X:70
+ Y:0
+ Width:25
+ Height:25
+ Children:
+ Image@IMAGE_STOP:
+ Id:IMAGE_STOP
+ X:0
+ Y:0
+ Width:25
+ Height:25
+ ImageCollection:music
+ ImageName:stop
+ Button@BUTTON_NEXT:
+ Id:BUTTON_NEXT
+ X:105
+ Y:0
+ Width:25
+ Height:25
+ Children:
+ Image@IMAGE_NEXT:
+ Id:IMAGE_NEXT
+ X:0
+ Y:0
+ Width:25
+ Height:25
+ ImageCollection:music
+ ImageName:next
+ Button@BUTTON_PREV:
+ Id:BUTTON_PREV
+ X:0
+ Y:0
+ Width:25
+ Height:25
+ Children:
+ Image@IMAGE_PREV:
+ Id:IMAGE_PREV
+ X:0
+ Y:0
+ Width:25
+ Height:25
+ ImageCollection:music
+ ImageName:prev
+ Label@TIME:
+ Id:TIME
+ X:PARENT_RIGHT - 150
+ Y:75
+ Width:140
+ Height:25
+ Align: Center
+ ListBox@MUSIC_LIST:
+ Id:MUSIC_LIST
+ X:10
+ Y:50
+ Width:280
+ Height:140
+ Children:
+ Label@MUSIC_TEMPLATE:
+ Id:MUSIC_TEMPLATE
+ Width:PARENT_RIGHT-28
+ Height:25
+ ClickThrough:false
+ X:2
+ Y:0
+ Visible:false
+ Children:
+ Label@TITLE:
+ Id:TITLE
+ X:5
+ Width:PARENT_RIGHT - 10
+ Height:PARENT_BOTTOM
+ Align: Left
+ Label@LENGTH:
+ Id:LENGTH
+ X:5
+ Width:PARENT_RIGHT - 10
+ Height:PARENT_BOTTOM
+ Align: Right
+ Checkbox@SHUFFLE:
+ Id:SHUFFLE
+ X:PARENT_RIGHT - 150
+ Y:110
+ Width:100
+ Height:20
+ Text:Shuffle
+ Checkbox@REPEAT:
+ Id:REPEAT
+ X:PARENT_RIGHT - 150
+ Y:140
+ Width:100
+ Height:20
+ Text:Loop
diff --git a/mods/ra/chrome/replaybrowser.yaml b/mods/ra/chrome/replaybrowser.yaml
new file mode 100644
index 0000000000..66cfb49265
--- /dev/null
+++ b/mods/ra/chrome/replaybrowser.yaml
@@ -0,0 +1,94 @@
+Background@REPLAYBROWSER_BG:
+ Id:REPLAYBROWSER_BG
+ Delegate:ReplayBrowserDelegate
+ X:(WINDOW_RIGHT - WIDTH)/2
+ Y:(WINDOW_BOTTOM - HEIGHT)/2
+ Width:700
+ Height:410
+ Children:
+ Label@REPLAYBROWSER_LABEL_TITLE:
+ Id:REPLAYBROWSER_LABEL_TITLE
+ X:0
+ Y:20
+ Width:PARENT_RIGHT
+ Height:25
+ Text:Choose Replay
+ Align:Center
+ Bold:True
+ ListBox@REPLAY_LIST:
+ Id:REPLAY_LIST
+ X:20
+ Y:50
+ Width:390
+ Height:300
+ Children:
+ Label@REPLAY_TEMPLATE:
+ Id:REPLAY_TEMPLATE
+ Width:PARENT_RIGHT-28
+ Height:25
+ ClickThrough:false
+ X:2
+ Y:0
+ Visible:false
+ Container@REPLAY_INFO:
+ Id:REPLAY_INFO
+ X:0
+ Y:0
+ Width:PARENT_RIGHT
+ Height:PARENT_BOTTOM
+ Visible:false
+ Children:
+ MapPreview@MAP_PREVIEW:
+ Id:MAP_PREVIEW
+ X:PARENT_RIGHT-241
+ Y:30
+ Width:192
+ Height:192
+ Label@MAP_TITLE_LABEL:
+ Id:MAP_TITLE_LABEL
+ X:PARENT_RIGHT - 200 - WIDTH
+ Y:250
+ Align:Right
+ Width:70
+ Height:20
+ Text:Map:
+ Bold:True
+ Label@MAP_TITLE:
+ Id:MAP_TITLE
+ X:PARENT_RIGHT - 195
+ Y:250
+ Align:Left
+ Width:70
+ Height:20
+ Label@MAP_PLAYERS_LABEL:
+ Id:MAP_PLAYERS_LABEL
+ X:PARENT_RIGHT - 200 - WIDTH
+ Y:270
+ Align:Right
+ Width:70
+ Height:20
+ Text:Players:
+ Bold:True
+ Label@MAP_PLAYERS:
+ Id:MAP_PLAYERS
+ X:PARENT_RIGHT - 195
+ Y:270
+ Align:Left
+ Width:70
+ Height:20
+ Button@WATCH_BUTTON:
+ Id:WATCH_BUTTON
+ X:PARENT_RIGHT - 140 - 130
+ Y:PARENT_BOTTOM - 45
+ Width:120
+ Height:25
+ Text:Watch
+ Bold:True
+ Button@CANCEL_BUTTON:
+ Id:CANCEL_BUTTON
+ X:PARENT_RIGHT - 140
+ Y:PARENT_BOTTOM - 45
+ Width:120
+ Height:25
+ Text:Cancel
+ Bold:True
diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml
index 6726528409..3b70eb98bc 100644
--- a/mods/ra/mod.yaml
+++ b/mods/ra/mod.yaml
@@ -57,6 +57,7 @@ ChromeLayout:
mods/ra/chrome/settings.yaml
mods/ra/chrome/gamelobby.yaml
mods/ra/chrome/serverbrowser.yaml
+ mods/ra/chrome/replaybrowser.yaml
Weapons:
mods/ra/weapons.yaml