Add game speed option for missions.

This commit is contained in:
Paul Chote
2015-09-06 18:55:59 +01:00
parent 699a7f8227
commit 3322f34e7b
4 changed files with 134 additions and 44 deletions

View File

@@ -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,27 +189,57 @@ namespace OpenRA.Mods.Common.Widgets.Logic
descriptionPanel.ScrollToTop();
descriptionPanel.Layout.AdjustChildren();
difficultyButton.IsVisible = () => map.Options.Difficulties.Any();
if (!map.Options.Difficulties.Any())
return;
difficulty = map.Options.Difficulties.First();
difficultyButton.OnMouseDown = _ =>
if (difficultyButton != null)
{
var options = map.Options.Difficulties.Select(d => new DropDownOption
difficultyButton.IsDisabled = () => !map.Options.Difficulties.Any();
difficulty = map.Options.Difficulties.FirstOrDefault();
difficultyButton.GetText = () => difficulty ?? "Normal";
difficultyButton.OnMouseDown = _ =>
{
Title = d,
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;
var options = map.Options.Difficulties.Select(d => new DropDownOption
{
Title = d,
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);
};
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;
@@ -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();

View File

@@ -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,13 +74,31 @@ Container@MISSIONBROWSER_PANEL:
Width: PARENT_RIGHT - 32
VAlign: Top
Font: Small
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
X: 15
Y: 337
Width: 239
Height: 25
Text: Difficulty
Font: Regular
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
Font: Regular
Button@BACK_BUTTON:
Y: 376
Width: 140

View File

@@ -16,7 +16,7 @@ Background@MISSIONBROWSER_PANEL:
X: 20
Y: 50
Width: 270
Height: 542
Height: 504
Children:
ScrollItem@HEADER:
BaseName: scrollheader
@@ -39,6 +39,32 @@ Background@MISSIONBROWSER_PANEL:
X: 10
Width: PARENT_RIGHT-20
Height: 25
Label@DIFFICULTY_DESC:
X: 290 - WIDTH - 125
Y: 567
Width: 56
Height: 25
Text: Mission Difficulty:
Align: Right
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
X: 290 - WIDTH
Y: 567
Width: 120
Height: 25
Font: Regular
Label@GAMESPEED_DESC:
X: 290 - WIDTH - 125
Y: 607
Width: 120
Height: 25
Text: Mission Speed:
Align: Right
DropDownButton@GAMESPEED_DROPDOWNBUTTON:
X: 290 - WIDTH
Y: 607
Width: 120
Height: 25
Font: Regular
Container@MISSION_INFO:
X: 300
Y: 50
@@ -112,13 +138,6 @@ 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
Y: 50

View File

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