Merge pull request #9387 from pchote/mission-gamespeed
Add game speed dropdown to the mission browser.
This commit is contained in:
@@ -30,6 +30,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
readonly LabelWidget description;
|
||||
readonly SpriteFont descriptionFont;
|
||||
readonly DropDownButtonWidget difficultyButton;
|
||||
readonly DropDownButtonWidget gameSpeedButton;
|
||||
readonly ButtonWidget startBriefingVideoButton;
|
||||
readonly ButtonWidget stopBriefingVideoButton;
|
||||
readonly ButtonWidget startInfoVideoButton;
|
||||
@@ -46,6 +47,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
PlayingVideo playingVideo;
|
||||
|
||||
string difficulty;
|
||||
string gameSpeed;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public MissionBrowserLogic(Widget widget, World world, Action onStart, Action onExit)
|
||||
@@ -77,6 +79,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
descriptionFont = Game.Renderer.Fonts[description.Font];
|
||||
|
||||
difficultyButton = widget.Get<DropDownButtonWidget>("DIFFICULTY_DROPDOWNBUTTON");
|
||||
gameSpeedButton = widget.GetOrNull<DropDownButtonWidget>("GAMESPEED_DROPDOWNBUTTON");
|
||||
|
||||
startBriefingVideoButton = widget.Get<ButtonWidget>("START_BRIEFING_VIDEO_BUTTON");
|
||||
stopBriefingVideoButton = widget.Get<ButtonWidget>("STOP_BRIEFING_VIDEO_BUTTON");
|
||||
@@ -186,11 +189,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
descriptionPanel.ScrollToTop();
|
||||
descriptionPanel.Layout.AdjustChildren();
|
||||
|
||||
difficultyButton.IsVisible = () => map.Options.Difficulties.Any();
|
||||
if (!map.Options.Difficulties.Any())
|
||||
return;
|
||||
if (difficultyButton != null)
|
||||
{
|
||||
difficultyButton.IsDisabled = () => !map.Options.Difficulties.Any();
|
||||
|
||||
difficulty = map.Options.Difficulties.First();
|
||||
difficulty = map.Options.Difficulties.FirstOrDefault();
|
||||
difficultyButton.GetText = () => difficulty ?? "Normal";
|
||||
difficultyButton.OnMouseDown = _ =>
|
||||
{
|
||||
var options = map.Options.Difficulties.Select(d => new DropDownOption
|
||||
@@ -199,16 +203,45 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
IsSelected = () => difficulty == d,
|
||||
OnClick = () => difficulty = d
|
||||
});
|
||||
|
||||
Func<DropDownOption, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) =>
|
||||
{
|
||||
var item = ScrollItemWidget.Setup(template, option.IsSelected, option.OnClick);
|
||||
item.Get<LabelWidget>("LABEL").GetText = () => option.Title;
|
||||
return item;
|
||||
};
|
||||
|
||||
difficultyButton.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", options.Count() * 30, options, setupItem);
|
||||
};
|
||||
}
|
||||
|
||||
if (gameSpeedButton != null)
|
||||
{
|
||||
var speeds = Game.ModData.Manifest.Get<GameSpeeds>().Speeds;
|
||||
gameSpeed = "default";
|
||||
|
||||
gameSpeedButton.GetText = () => speeds[gameSpeed].Name;
|
||||
gameSpeedButton.OnMouseDown = _ =>
|
||||
{
|
||||
var options = speeds.Select(s => new DropDownOption
|
||||
{
|
||||
Title = s.Value.Name,
|
||||
IsSelected = () => gameSpeed == s.Key,
|
||||
OnClick = () => gameSpeed = s.Key
|
||||
});
|
||||
|
||||
Func<DropDownOption, ScrollItemWidget, ScrollItemWidget> setupItem = (option, template) =>
|
||||
{
|
||||
var item = ScrollItemWidget.Setup(template, option.IsSelected, option.OnClick);
|
||||
item.Get<LabelWidget>("LABEL").GetText = () => option.Title;
|
||||
return item;
|
||||
};
|
||||
|
||||
gameSpeedButton.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", options.Count() * 30, options, setupItem);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
float cachedSoundVolume;
|
||||
float cachedMusicVolume;
|
||||
void MuteSounds()
|
||||
@@ -280,6 +313,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
Action lobbyReady = null;
|
||||
lobbyReady = () =>
|
||||
{
|
||||
om.IssueOrder(Order.Command("gamespeed {0}".F(gameSpeed)));
|
||||
om.IssueOrder(Order.Command("difficulty {0}".F(difficulty)));
|
||||
Game.LobbyInfoChanged -= lobbyReady;
|
||||
onStart();
|
||||
|
||||
@@ -21,7 +21,7 @@ Container@MISSIONBROWSER_PANEL:
|
||||
X: 15
|
||||
Y: 15
|
||||
Width: 239
|
||||
Height: 307
|
||||
Height: 347
|
||||
Children:
|
||||
ScrollItem@HEADER:
|
||||
Width: PARENT_RIGHT-27
|
||||
@@ -66,7 +66,7 @@ Container@MISSIONBROWSER_PANEL:
|
||||
ScrollPanel@MISSION_DESCRIPTION_PANEL:
|
||||
Y: 213
|
||||
Width: PARENT_RIGHT
|
||||
Height: 134
|
||||
Height: 99
|
||||
Children:
|
||||
Label@MISSION_DESCRIPTION:
|
||||
X: 4
|
||||
@@ -74,12 +74,30 @@ Container@MISSIONBROWSER_PANEL:
|
||||
Width: PARENT_RIGHT - 32
|
||||
VAlign: Top
|
||||
Font: Small
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X: 15
|
||||
Y: 337
|
||||
Width: 239
|
||||
Label@DIFFICULTY_DESC:
|
||||
Y: 322
|
||||
Width: 56
|
||||
Height: 25
|
||||
Text: Difficulty:
|
||||
Align: Right
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X: 61
|
||||
Y: 322
|
||||
Width: 120
|
||||
Height: 25
|
||||
Font: Regular
|
||||
Label@GAMESPEED_DESC:
|
||||
X: PARENT_RIGHT - WIDTH - 125
|
||||
Y: 322
|
||||
Width: 120
|
||||
Height: 25
|
||||
Text: Speed:
|
||||
Align: Right
|
||||
DropDownButton@GAMESPEED_DROPDOWNBUTTON:
|
||||
X: PARENT_RIGHT - WIDTH
|
||||
Y: 322
|
||||
Width: 120
|
||||
Height: 25
|
||||
Text: Difficulty
|
||||
Font: Regular
|
||||
Button@BACK_BUTTON:
|
||||
Y: 376
|
||||
|
||||
@@ -223,7 +223,7 @@ GameSpeeds:
|
||||
Timestep: 50
|
||||
OrderLatency: 3
|
||||
default:
|
||||
Name: Default
|
||||
Name: Normal
|
||||
Timestep: 40
|
||||
OrderLatency: 3
|
||||
faster:
|
||||
|
||||
@@ -2,8 +2,8 @@ Background@MISSIONBROWSER_PANEL:
|
||||
Logic: MissionBrowserLogic
|
||||
X: (WINDOW_RIGHT - WIDTH)/2
|
||||
Y: (WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width: 960
|
||||
Height: 690
|
||||
Width: 880
|
||||
Height: 591
|
||||
Children:
|
||||
Label@MISSIONBROWSER_TITLE:
|
||||
Y: 20
|
||||
@@ -15,8 +15,8 @@ Background@MISSIONBROWSER_PANEL:
|
||||
ScrollPanel@MISSION_LIST:
|
||||
X: 20
|
||||
Y: 50
|
||||
Width: 270
|
||||
Height: 542
|
||||
Width: 190
|
||||
Height: 405
|
||||
Children:
|
||||
ScrollItem@HEADER:
|
||||
BaseName: scrollheader
|
||||
@@ -39,15 +39,41 @@ Background@MISSIONBROWSER_PANEL:
|
||||
X: 10
|
||||
Width: PARENT_RIGHT-20
|
||||
Height: 25
|
||||
Label@DIFFICULTY_DESC:
|
||||
X: 210 - WIDTH - 125
|
||||
Y: 468
|
||||
Width: 56
|
||||
Height: 25
|
||||
Text: Difficulty:
|
||||
Align: Right
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X: 210 - WIDTH
|
||||
Y: 468
|
||||
Width: 120
|
||||
Height: 25
|
||||
Font: Regular
|
||||
Label@GAMESPEED_DESC:
|
||||
X: 210 - WIDTH - 125
|
||||
Y: 508
|
||||
Width: 120
|
||||
Height: 25
|
||||
Text: Speed:
|
||||
Align: Right
|
||||
DropDownButton@GAMESPEED_DROPDOWNBUTTON:
|
||||
X: 210 - WIDTH
|
||||
Y: 508
|
||||
Width: 120
|
||||
Height: 25
|
||||
Font: Regular
|
||||
Container@MISSION_INFO:
|
||||
X: 300
|
||||
X: 220
|
||||
Y: 50
|
||||
Width: 642
|
||||
Height: 800
|
||||
Children:
|
||||
Background@MISSION_BG:
|
||||
Width: PARENT_RIGHT
|
||||
Height: 402
|
||||
Height: 327
|
||||
Background: dialog3
|
||||
Children:
|
||||
MapPreview@MISSION_PREVIEW:
|
||||
@@ -59,9 +85,9 @@ Background@MISSIONBROWSER_PANEL:
|
||||
IgnoreMouseInput: True
|
||||
ShowSpawnPoints: False
|
||||
ScrollPanel@MISSION_DESCRIPTION_PANEL:
|
||||
Y: 412
|
||||
Y: 337
|
||||
Width: PARENT_RIGHT
|
||||
Height: 170
|
||||
Height: 146
|
||||
Children:
|
||||
Label@MISSION_DESCRIPTION:
|
||||
X: 4
|
||||
@@ -70,28 +96,28 @@ Background@MISSIONBROWSER_PANEL:
|
||||
VAlign: Top
|
||||
Font: Small
|
||||
Button@START_BRIEFING_VIDEO_BUTTON:
|
||||
X: 20
|
||||
X: 220
|
||||
Y: PARENT_BOTTOM - 45
|
||||
Width: 130
|
||||
Height: 25
|
||||
Text: Watch Briefing
|
||||
Font: Bold
|
||||
Button@STOP_BRIEFING_VIDEO_BUTTON:
|
||||
X: 20
|
||||
X: 220
|
||||
Y: PARENT_BOTTOM - 45
|
||||
Width: 130
|
||||
Height: 25
|
||||
Text: Stop Briefing
|
||||
Font: Bold
|
||||
Button@START_INFO_VIDEO_BUTTON:
|
||||
X: 160
|
||||
X: 360
|
||||
Y: PARENT_BOTTOM - 45
|
||||
Width: 130
|
||||
Height: 25
|
||||
Text: Watch Info Video
|
||||
Font: Bold
|
||||
Button@STOP_INFO_VIDEO_BUTTON:
|
||||
X: 160
|
||||
X: 360
|
||||
Y: PARENT_BOTTOM - 45
|
||||
Width: 130
|
||||
Height: 25
|
||||
@@ -112,26 +138,19 @@ Background@MISSIONBROWSER_PANEL:
|
||||
Text: Back
|
||||
Font: Bold
|
||||
Key: escape
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X: 20
|
||||
Y: 632 - HEIGHT
|
||||
Width: 270
|
||||
Height: 25
|
||||
Text: Difficulty
|
||||
Font: Bold
|
||||
Background@MISSION_BIN:
|
||||
X: 300
|
||||
X: 220
|
||||
Y: 50
|
||||
Width: 642
|
||||
Height: 402
|
||||
Height: 483
|
||||
Background: dialog3
|
||||
Children:
|
||||
VqaPlayer@MISSION_VIDEO:
|
||||
X: 1
|
||||
Y: 1
|
||||
Width: 640
|
||||
Height: 400
|
||||
AspectRatio: 1
|
||||
Height: 480
|
||||
AspectRatio: 1.2
|
||||
DrawOverlay: False
|
||||
Background@FULLSCREEN_PLAYER:
|
||||
Width: WINDOW_RIGHT
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 208 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 73 KiB |
@@ -199,7 +199,7 @@ GameSpeeds:
|
||||
Timestep: 50
|
||||
OrderLatency: 3
|
||||
default:
|
||||
Name: Default
|
||||
Name: Normal
|
||||
Timestep: 40
|
||||
OrderLatency: 3
|
||||
faster:
|
||||
|
||||
@@ -16,7 +16,7 @@ Background@MISSIONBROWSER_PANEL:
|
||||
X: 20
|
||||
Y: 50
|
||||
Width: 270
|
||||
Height: 332
|
||||
Height: 377
|
||||
Children:
|
||||
ScrollItem@HEADER:
|
||||
BaseName: scrollheader
|
||||
@@ -61,7 +61,7 @@ Background@MISSIONBROWSER_PANEL:
|
||||
ScrollPanel@MISSION_DESCRIPTION_PANEL:
|
||||
Y: 212
|
||||
Width: PARENT_RIGHT
|
||||
Height: 165
|
||||
Height: 130
|
||||
Children:
|
||||
Label@MISSION_DESCRIPTION:
|
||||
X: 4
|
||||
@@ -69,6 +69,32 @@ Background@MISSIONBROWSER_PANEL:
|
||||
Width: PARENT_RIGHT - 32
|
||||
VAlign: Top
|
||||
Font: Small
|
||||
Label@DIFFICULTY_DESC:
|
||||
Y: 352
|
||||
Width: 56
|
||||
Height: 25
|
||||
Text: Difficulty:
|
||||
Align: Right
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X: 61
|
||||
Y: 352
|
||||
Width: 120
|
||||
Height: 25
|
||||
Font: Regular
|
||||
Label@GAMESPEED_DESC:
|
||||
X: PARENT_RIGHT - WIDTH - 125
|
||||
Y: 352
|
||||
Width: 120
|
||||
Height: 25
|
||||
Text: Speed:
|
||||
Align: Right
|
||||
DropDownButton@GAMESPEED_DROPDOWNBUTTON:
|
||||
X: PARENT_RIGHT - WIDTH
|
||||
Y: 352
|
||||
Width: 120
|
||||
Height: 25
|
||||
Font: Regular
|
||||
|
||||
Button@START_BRIEFING_VIDEO_BUTTON:
|
||||
X: 20
|
||||
Y: PARENT_BOTTOM - 45
|
||||
@@ -112,13 +138,6 @@ Background@MISSIONBROWSER_PANEL:
|
||||
Text: Back
|
||||
Font: Bold
|
||||
Key: escape
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X: 20
|
||||
Y: 427 - HEIGHT
|
||||
Width: 270
|
||||
Height: 25
|
||||
Text: Difficulty
|
||||
Font: Bold
|
||||
Background@MISSION_BIN:
|
||||
X: 20
|
||||
Y: 50
|
||||
|
||||
@@ -222,7 +222,7 @@ GameSpeeds:
|
||||
Timestep: 50
|
||||
OrderLatency: 3
|
||||
default:
|
||||
Name: Default
|
||||
Name: Normal
|
||||
Timestep: 40
|
||||
OrderLatency: 3
|
||||
faster:
|
||||
|
||||
@@ -263,7 +263,7 @@ GameSpeeds:
|
||||
Timestep: 50
|
||||
OrderLatency: 3
|
||||
default:
|
||||
Name: Default
|
||||
Name: Normal
|
||||
Timestep: 40
|
||||
OrderLatency: 3
|
||||
faster:
|
||||
|
||||
Reference in New Issue
Block a user