Allow mission use LobbyOptions as options and remove unused translation

This commit is contained in:
dnqbob
2023-06-20 20:31:22 +08:00
committed by Matthias Mailänder
parent cd40d150c1
commit b1f5367822
21 changed files with 393 additions and 216 deletions

View File

@@ -17,6 +17,7 @@ using System.Threading;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Traits;
using OpenRA.Network;
using OpenRA.Traits;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets.Logic
@@ -24,6 +25,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public class MissionBrowserLogic : ChromeLogic
{
enum PlayingVideo { None, Info, Briefing, GameStart }
enum PanelType { MissionInfo, Options }
[TranslationReference]
const string NoVideoTitle = "dialog-no-video.title";
@@ -43,16 +45,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
[TranslationReference]
const string CantPlayCancel = "dialog-cant-play-video.cancel";
[TranslationReference]
const string DifficultyNormal = "options-difficulty.normal";
readonly ModData modData;
readonly Action onStart;
readonly Widget missionDetail;
readonly Widget optionsContainer;
readonly Widget checkboxRowTemplate;
readonly Widget dropdownRowTemplate;
readonly ScrollPanelWidget descriptionPanel;
readonly LabelWidget description;
readonly SpriteFont descriptionFont;
readonly DropDownButtonWidget difficultyButton;
readonly DropDownButtonWidget gameSpeedButton;
readonly ButtonWidget startBriefingVideoButton;
readonly ButtonWidget stopBriefingVideoButton;
readonly ButtonWidget startInfoVideoButton;
@@ -66,9 +67,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
MapPreview selectedMap;
PlayingVideo playingVideo;
string difficulty;
string gameSpeed;
readonly Dictionary<string, string> missionOptions = new();
PanelType panel = PanelType.MissionInfo;
[ObjectCreator.UseCtor]
public MissionBrowserLogic(Widget widget, ModData modData, World world, Action onStart, Action onExit, string initialMap)
@@ -96,13 +96,18 @@ namespace OpenRA.Mods.Common.Widgets.Logic
widget.Get("MISSION_BIN").IsVisible = () => playingVideo != PlayingVideo.None;
fullscreenVideoPlayer = Ui.LoadWidget<BackgroundWidget>("FULLSCREEN_PLAYER", Ui.Root, new WidgetArgs { { "world", world } });
descriptionPanel = widget.Get<ScrollPanelWidget>("MISSION_DESCRIPTION_PANEL");
missionDetail = widget.Get("MISSION_DETAIL");
descriptionPanel = missionDetail.Get<ScrollPanelWidget>("MISSION_DESCRIPTION_PANEL");
descriptionPanel.IsVisible = () => panel == PanelType.MissionInfo;
description = descriptionPanel.Get<LabelWidget>("MISSION_DESCRIPTION");
descriptionFont = Game.Renderer.Fonts[description.Font];
difficultyButton = widget.Get<DropDownButtonWidget>("DIFFICULTY_DROPDOWNBUTTON");
gameSpeedButton = widget.GetOrNull<DropDownButtonWidget>("GAMESPEED_DROPDOWNBUTTON");
optionsContainer = missionDetail.Get("MISSION_OPTIONS");
optionsContainer.IsVisible = () => panel == PanelType.Options;
checkboxRowTemplate = optionsContainer.Get("CHECKBOX_ROW_TEMPLATE");
dropdownRowTemplate = optionsContainer.Get("DROPDOWN_ROW_TEMPLATE");
startBriefingVideoButton = widget.Get<ButtonWidget>("START_BRIEFING_VIDEO_BUTTON");
stopBriefingVideoButton = widget.Get<ButtonWidget>("STOP_BRIEFING_VIDEO_BUTTON");
@@ -191,6 +196,19 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Ui.CloseWindow();
onExit();
};
var tabContainer = widget.Get("MISSION_TABS");
tabContainer.IsVisible = () => true;
var optionsTab = tabContainer.Get<ButtonWidget>("OPTIONS_TAB");
optionsTab.IsHighlighted = () => panel == PanelType.Options;
optionsTab.IsDisabled = () => false;
optionsTab.OnClick = () => panel = PanelType.Options;
var missionTab = tabContainer.Get<ButtonWidget>("MISSIONINFO_TAB");
missionTab.IsHighlighted = () => panel == PanelType.MissionInfo;
missionTab.IsDisabled = () => false;
missionTab.OnClick = () => panel = PanelType.MissionInfo;
}
void OnGameStart()
@@ -238,28 +256,16 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
selectedMap = preview;
// Cache the rules on a background thread to avoid jank
var difficultyDisabled = true;
var difficulties = new Dictionary<string, string>();
var briefingVideo = "";
var briefingVideoVisible = false;
var infoVideo = "";
var infoVideoVisible = false;
panel = PanelType.MissionInfo;
new Thread(() =>
{
var mapDifficulty = preview.WorldActorInfo.TraitInfos<ScriptLobbyDropdownInfo>()
.FirstOrDefault(sld => sld.ID == "difficulty");
if (mapDifficulty != null)
{
difficulty = mapDifficulty.Default;
difficulties = mapDifficulty.Values;
difficultyDisabled = mapDifficulty.Locked;
}
var missionData = preview.WorldActorInfo.TraitInfoOrDefault<MissionDataInfo>();
if (missionData != null)
{
@@ -291,58 +297,107 @@ namespace OpenRA.Mods.Common.Widgets.Logic
descriptionPanel.ScrollToTop();
if (difficultyButton != null)
RebuildOptions();
}
void RebuildOptions()
{
if (selectedMap == null || selectedMap.WorldActorInfo == null)
return;
missionOptions.Clear();
optionsContainer.RemoveChildren();
var allOptions = selectedMap.PlayerActorInfo.TraitInfos<ILobbyOptions>()
.Concat(selectedMap.WorldActorInfo.TraitInfos<ILobbyOptions>())
.SelectMany(t => t.LobbyOptions(selectedMap))
.Where(o => o.IsVisible)
.OrderBy(o => o.DisplayOrder).ToArray();
Widget row = null;
var checkboxColumns = new Queue<CheckboxWidget>();
var dropdownColumns = new Queue<DropDownButtonWidget>();
var yOffset = 0;
foreach (var option in allOptions.Where(o => o is LobbyBooleanOption))
{
var difficultyName = new CachedTransform<string, string>(id => preview.GetLocalisedString(
id == null || !difficulties.ContainsKey(id) ? DifficultyNormal : difficulties[id]));
missionOptions[option.Id] = option.DefaultValue;
difficultyButton.IsDisabled = () => difficultyDisabled;
difficultyButton.GetText = () => difficultyName.Update(difficulty);
difficultyButton.OnMouseDown = _ =>
if (checkboxColumns.Count == 0)
{
var options = difficulties.Select(kv => new DropDownOption
{
Title = preview.GetLocalisedString(kv.Value),
IsSelected = () => difficulty == kv.Key,
OnClick = () => difficulty = kv.Key
});
row = checkboxRowTemplate.Clone();
row.Bounds.Y = yOffset;
yOffset += row.Bounds.Height;
foreach (var child in row.Children)
if (child is CheckboxWidget childCheckbox)
checkboxColumns.Enqueue(childCheckbox);
ScrollItemWidget SetupItem(DropDownOption option, ScrollItemWidget template)
{
var item = ScrollItemWidget.Setup(template, option.IsSelected, option.OnClick);
item.Get<LabelWidget>("LABEL").GetText = () => option.Title;
return item;
}
optionsContainer.AddChild(row);
}
difficultyButton.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", options.Count() * 30, options, SetupItem);
var checkbox = checkboxColumns.Dequeue();
checkbox.GetText = () => option.Name;
if (option.Description != null)
checkbox.GetTooltipText = () => option.Description;
checkbox.IsVisible = () => true;
checkbox.IsChecked = () => missionOptions[option.Id] == "True";
checkbox.IsDisabled = () => option.IsLocked;
checkbox.OnClick = () =>
{
if (missionOptions[option.Id] == "True")
missionOptions[option.Id] = "False";
else
missionOptions[option.Id] = "True";
};
}
if (gameSpeedButton != null)
foreach (var option in allOptions.Where(o => o is not LobbyBooleanOption))
{
var speeds = modData.Manifest.Get<GameSpeeds>().Speeds;
gameSpeed = "default";
missionOptions[option.Id] = option.DefaultValue;
var speedText = new CachedTransform<string, string>(s => TranslationProvider.GetString(speeds[s].Name));
gameSpeedButton.GetText = () => speedText.Update(gameSpeed);
gameSpeedButton.OnMouseDown = _ =>
if (dropdownColumns.Count == 0)
{
var options = speeds.Select(s => new DropDownOption
{
Title = TranslationProvider.GetString(s.Value.Name),
IsSelected = () => gameSpeed == s.Key,
OnClick = () => gameSpeed = s.Key
});
row = dropdownRowTemplate.Clone();
row.Bounds.Y = yOffset;
yOffset += row.Bounds.Height;
foreach (var child in row.Children)
if (child is DropDownButtonWidget dropDown)
dropdownColumns.Enqueue(dropDown);
ScrollItemWidget SetupItem(DropDownOption option, ScrollItemWidget template)
optionsContainer.AddChild(row);
}
var dropdown = dropdownColumns.Dequeue();
dropdown.GetText = () => option.Values[missionOptions[option.Id]];
if (option.Description != null)
dropdown.GetTooltipText = () => option.Description;
dropdown.IsVisible = () => true;
dropdown.IsDisabled = () => option.IsLocked;
dropdown.OnMouseDown = _ =>
{
ScrollItemWidget SetupItem(KeyValuePair<string, string> c, ScrollItemWidget template)
{
var item = ScrollItemWidget.Setup(template, option.IsSelected, option.OnClick);
item.Get<LabelWidget>("LABEL").GetText = () => option.Title;
bool IsSelected() => missionOptions[option.Id] == c.Key;
void OnClick() => missionOptions[option.Id] = c.Key;
var item = ScrollItemWidget.Setup(template, IsSelected, OnClick);
item.Get<LabelWidget>("LABEL").GetText = () => c.Value;
return item;
}
gameSpeedButton.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", options.Count() * 30, options, SetupItem);
dropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", option.Values.Count * 30, option.Values, SetupItem);
};
var label = row.GetOrNull<LabelWidget>(dropdown.Id + "_DESC");
if (label != null)
{
label.GetText = () => option.Name + ":";
label.IsVisible = () => true;
}
}
}
@@ -432,10 +487,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
selectedMap = modData.MapCache[map];
var orders = new List<Order>();
if (difficulty != null)
orders.Add(Order.Command($"option difficulty {difficulty}"));
orders.Add(Order.Command($"option gamespeed {gameSpeed}"));
foreach (var option in missionOptions)
orders.Add(Order.Command($"option {option.Key} {option.Value}"));
orders.Add(Order.Command($"state {Session.ClientState.Ready}"));
var missionData = selectedMap.WorldActorInfo.TraitInfoOrDefault<MissionDataInfo>();
@@ -449,12 +504,5 @@ namespace OpenRA.Mods.Common.Widgets.Logic
else
Game.CreateAndStartLocalServer(selectedMap.Uid, orders);
}
sealed class DropDownOption
{
public string Title;
public Func<bool> IsSelected;
public Action OnClick;
}
}
}

View File

@@ -67,42 +67,89 @@ Container@MISSIONBROWSER_PANEL:
IgnoreMouseOver: True
IgnoreMouseInput: True
ShowSpawnPoints: False
ScrollPanel@MISSION_DESCRIPTION_PANEL:
Container@MISSION_DETAIL:
Y: 213
Width: PARENT_RIGHT
Height: 157
TopBottomSpacing: 5
Height: 170
Children:
Label@MISSION_DESCRIPTION:
X: 4
Width: PARENT_RIGHT - 32
VAlign: Top
Font: Small
Label@DIFFICULTY_DESC:
Y: PARENT_BOTTOM - HEIGHT
Width: 56
Height: 25
Text: label-mission-info-difficulty-desc
Align: Right
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
X: 61
Y: PARENT_BOTTOM - HEIGHT
Width: 120
Height: 25
Font: Regular
Label@GAMESPEED_DESC:
X: PARENT_RIGHT - WIDTH - 125
Y: PARENT_BOTTOM - HEIGHT
Width: 120
Height: 25
Text: label-mission-info-gamespeed-desc
Align: Right
DropDownButton@GAMESPEED_DROPDOWNBUTTON:
X: PARENT_RIGHT - WIDTH
Y: PARENT_BOTTOM - HEIGHT
Width: 120
Height: 25
Font: Regular
ScrollPanel@MISSION_DESCRIPTION_PANEL:
Height: PARENT_BOTTOM
Width: PARENT_RIGHT
TopBottomSpacing: 5
Children:
Label@MISSION_DESCRIPTION:
X: 4
Width: PARENT_RIGHT - 32
VAlign: Top
Font: Small
ScrollPanel@MISSION_OPTIONS:
Height: PARENT_BOTTOM
Width: PARENT_RIGHT
TopBottomSpacing: 5
Children:
Container@CHECKBOX_ROW_TEMPLATE:
Width: PARENT_RIGHT
Height: 30
Children:
Checkbox@A:
X: 10
Width: PARENT_RIGHT / 2 - 25
Height: 20
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Checkbox@B:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 25
Height: 20
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Container@DROPDOWN_ROW_TEMPLATE:
Height: 60
Width: PARENT_RIGHT
Children:
LabelForInput@A_DESC:
X: 10
Width: PARENT_RIGHT / 2 - 35
Height: 20
Visible: False
For: A
DropDownButton@A:
X: 10
Width: PARENT_RIGHT / 2 - 35
Y: 25
Height: 25
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
LabelForInput@B_DESC:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 35
Height: 20
Visible: False
For: B
DropDownButton@B:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 35
Y: 25
Height: 25
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Container@MISSION_TABS:
Width: PARENT_RIGHT
Y: PARENT_BOTTOM - 50
Children:
Button@MISSIONINFO_TAB:
Width: PARENT_RIGHT / 2
Y: 25
Height: 28
Font: Bold
Text: button-missionbrowser-panel-mission-info
Button@OPTIONS_TAB:
X: PARENT_RIGHT / 2
Width: PARENT_RIGHT / 2
Y: 25
Height: 28
Font: Bold
Text: button-missionbrowser-panel-mission-options
Button@BACK_BUTTON:
Y: PARENT_BOTTOM - 1
Width: 140

View File

@@ -513,9 +513,9 @@ button-bg-cancel = Back
## missionbrowser.yaml
label-missionbrowser-panel-title = Missions
label-mission-info-difficulty-desc = Difficulty:
label-mission-info-gamespeed-desc = Speed:
button-missionbrowser-panel-back = Back
button-missionbrowser-panel-mission-info = Mission Info
button-missionbrowser-panel-mission-options = Options
button-missionbrowser-panel-start-briefing-video = Watch Briefing
button-missionbrowser-panel-stop-briefing-video = Stop Briefing
button-missionbrowser-panel-start-info-video = Watch Info Video

View File

@@ -4,4 +4,5 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard

View File

@@ -30,9 +30,6 @@ dropdown-map-creeps =
.label = Creep Actors
.description = Hostile forces spawn on the battlefield
options-difficulty =
.normal = Normal
## Structures
notification-construction-complete = Construction complete.
notification-unit-ready = Unit ready.

View File

@@ -4,5 +4,6 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard
.tough = Real tough guy

View File

@@ -4,5 +4,6 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard
.tough = Real tough guy

View File

@@ -61,42 +61,89 @@ Background@MISSIONBROWSER_PANEL:
IgnoreMouseOver: True
IgnoreMouseInput: True
ShowSpawnPoints: False
ScrollPanel@MISSION_DESCRIPTION_PANEL:
Container@MISSION_DETAIL:
Y: 212
Width: PARENT_RIGHT
Height: 143
TopBottomSpacing: 5
Height: 155
Children:
Label@MISSION_DESCRIPTION:
X: 4
Width: PARENT_RIGHT - 32
VAlign: Top
Font: Small
Label@DIFFICULTY_DESC:
Y: PARENT_BOTTOM - HEIGHT
Width: 56
Height: 25
Text: label-mission-info-difficulty-desc
Align: Right
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
X: 61
Y: PARENT_BOTTOM - HEIGHT
Width: 135
Height: 25
Font: Regular
Label@GAMESPEED_DESC:
X: PARENT_RIGHT - WIDTH - 115
Y: PARENT_BOTTOM - HEIGHT
Width: 120
Height: 25
Text: label-mission-info-gamespeed-desc
Align: Right
DropDownButton@GAMESPEED_DROPDOWNBUTTON:
X: PARENT_RIGHT - WIDTH
Y: PARENT_BOTTOM - HEIGHT
Width: 110
Height: 25
Font: Regular
ScrollPanel@MISSION_DESCRIPTION_PANEL:
Height: PARENT_BOTTOM
Width: PARENT_RIGHT
TopBottomSpacing: 5
Children:
Label@MISSION_DESCRIPTION:
X: 4
Width: PARENT_RIGHT - 32
VAlign: Top
Font: Small
ScrollPanel@MISSION_OPTIONS:
Height: PARENT_BOTTOM
Width: PARENT_RIGHT
TopBottomSpacing: 5
Children:
Container@CHECKBOX_ROW_TEMPLATE:
Width: PARENT_RIGHT
Height: 30
Children:
Checkbox@A:
X: 10
Width: PARENT_RIGHT / 2 - 25
Height: 20
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Checkbox@B:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 25
Height: 20
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Container@DROPDOWN_ROW_TEMPLATE:
Height: 60
Width: PARENT_RIGHT
Children:
LabelForInput@A_DESC:
X: 10
Width: PARENT_RIGHT / 2 - 35
Height: 20
Visible: False
For: A
DropDownButton@A:
X: 10
Width: PARENT_RIGHT / 2 - 35
Y: 25
Height: 25
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
LabelForInput@B_DESC:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 35
Height: 20
Visible: False
For: B
DropDownButton@B:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 35
Y: 25
Height: 25
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Container@MISSION_TABS:
Width: PARENT_RIGHT
Y: PARENT_BOTTOM - 50
Children:
Button@MISSIONINFO_TAB:
Width: PARENT_RIGHT / 2
Y: 25
Height: 28
Font: Bold
Text: button-missionbrowser-panel-mission-info
Button@OPTIONS_TAB:
X: PARENT_RIGHT / 2
Width: PARENT_RIGHT / 2
Y: 25
Height: 28
Font: Bold
Text: button-missionbrowser-panel-mission-options
Button@START_BRIEFING_VIDEO_BUTTON:
X: 20
Y: PARENT_BOTTOM - 45

View File

@@ -368,6 +368,8 @@ button-missionbrowser-panel-start-info-video = Watch Info Video
button-missionbrowser-panel-stop-info-video = Stop Info Video
button-missionbrowser-panel-startgame = Play
button-missionbrowser-panel-back = Back
button-missionbrowser-panel-mission-info = Mission Info
button-missionbrowser-panel-mission-options = Options
## multiplayer-browser.yaml
label-multiplayer-panel-title = Multiplayer

View File

@@ -42,32 +42,34 @@ Background@MISSIONBROWSER_PANEL:
Height: 25
TooltipContainer: TOOLTIP_CONTAINER
TooltipTemplate: SIMPLE_TOOLTIP
Label@DIFFICULTY_DESC:
X: 210 - WIDTH - 125
Y: 468
Width: 56
Button@START_BRIEFING_VIDEO_BUTTON:
X: 20
Y: 455
Width: 190
Height: 25
Text: label-missionbrowser-panel-difficulty-desc
Align: Right
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
X: 210 - WIDTH
Y: 468
Width: 120
Text: button-missionbrowser-panel-start-briefing-video
Font: Bold
Button@STOP_BRIEFING_VIDEO_BUTTON:
X: 20
Y: 455 + HEIGHT
Width: 190
Height: 25
Font: Regular
Label@GAMESPEED_DESC:
X: 210 - WIDTH - 125
Y: 508
Width: 120
Text: button-missionbrowser-panel-stop-briefing-video
Font: Bold
Button@START_INFO_VIDEO_BUTTON:
X: 20
Y: 455 + 2 * HEIGHT
Width: 190
Height: 25
Text: label-missionbrowser-panel-gamespeed-desc
Align: Right
DropDownButton@GAMESPEED_DROPDOWNBUTTON:
X: 210 - WIDTH
Y: 508
Width: 120
Text: button-missionbrowser-panel-start-info-video
Font: Bold
Button@STOP_INFO_VIDEO_BUTTON:
X: 20
Y: 455 + 3 * HEIGHT
Width: 190
Height: 25
Font: Regular
Text: button-missionbrowser-panel-stop-info-video
Font: Bold
Container@MISSION_INFO:
X: 220
Y: 50
@@ -87,45 +89,90 @@ Background@MISSIONBROWSER_PANEL:
IgnoreMouseOver: True
IgnoreMouseInput: True
ShowSpawnPoints: False
ScrollPanel@MISSION_DESCRIPTION_PANEL:
Container@MISSION_DETAIL:
Y: 337
Width: PARENT_RIGHT
Height: 146
Children:
Label@MISSION_DESCRIPTION:
X: 4
Y: 1
Width: PARENT_RIGHT - 32
VAlign: Top
Font: Small
Button@START_BRIEFING_VIDEO_BUTTON:
ScrollPanel@MISSION_DESCRIPTION_PANEL:
Height: PARENT_BOTTOM
Width: PARENT_RIGHT
TopBottomSpacing: 5
Children:
Label@MISSION_DESCRIPTION:
X: 4
Width: PARENT_RIGHT - 32
VAlign: Top
Font: Small
ScrollPanel@MISSION_OPTIONS:
Height: PARENT_BOTTOM
Width: PARENT_RIGHT
TopBottomSpacing: 5
Children:
Container@CHECKBOX_ROW_TEMPLATE:
Width: PARENT_RIGHT
Height: 30
Children:
Checkbox@A:
X: 10
Width: PARENT_RIGHT / 2 - 25
Height: 20
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Checkbox@B:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 25
Height: 20
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Container@DROPDOWN_ROW_TEMPLATE:
Height: 60
Width: PARENT_RIGHT
Children:
LabelForInput@A_DESC:
X: 10
Width: PARENT_RIGHT / 2 - 35
Height: 20
Visible: False
For: A
DropDownButton@A:
X: 10
Width: PARENT_RIGHT / 2 - 35
Y: 25
Height: 25
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
LabelForInput@B_DESC:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 35
Height: 20
Visible: False
For: B
DropDownButton@B:
X: PARENT_RIGHT / 2 + 5
Width: PARENT_RIGHT / 2 - 35
Y: 25
Height: 25
Visible: False
TooltipContainer: TOOLTIP_CONTAINER
Container@MISSION_TABS:
Width: 320
X: 220
Y: PARENT_BOTTOM - 45
Width: 130
Height: 25
Text: button-missionbrowser-panel-start-briefing-video
Font: Bold
Button@STOP_BRIEFING_VIDEO_BUTTON:
X: 220
Y: PARENT_BOTTOM - 45
Width: 130
Height: 25
Text: button-missionbrowser-panel-stop-briefing-video
Font: Bold
Button@START_INFO_VIDEO_BUTTON:
X: 360
Y: PARENT_BOTTOM - 45
Width: 130
Height: 25
Text: button-missionbrowser-panel-start-info-video
Font: Bold
Button@STOP_INFO_VIDEO_BUTTON:
X: 360
Y: PARENT_BOTTOM - 45
Width: 130
Height: 25
Text: button-missionbrowser-panel-stop-info-video
Font: Bold
Y: PARENT_BOTTOM - 84
Children:
Button@MISSIONINFO_TAB:
Width: PARENT_RIGHT / 2
Y: 25
Height: 28
Font: Bold
Text: button-missionbrowser-panel-mission-info
Button@OPTIONS_TAB:
X: PARENT_RIGHT / 2
Width: PARENT_RIGHT / 2
Y: 25
Height: 28
Font: Bold
Text: button-missionbrowser-panel-mission-options
Button@STARTGAME_BUTTON:
X: PARENT_RIGHT - 140 - 130
Y: PARENT_BOTTOM - 45

View File

@@ -245,8 +245,6 @@ label-update-notice-b = Download the latest version from www.openra.net
## missionbrowser.yaml
label-missionbrowser-panel-title = Missions
label-missionbrowser-panel-difficulty-desc = Difficulty:
label-missionbrowser-panel-gamespeed-desc = Speed:
button-missionbrowser-panel-start-briefing-video = Watch Briefing
button-missionbrowser-panel-stop-briefing-video = Stop Briefing
button-missionbrowser-panel-start-info-video = Watch Info Video

View File

@@ -4,4 +4,5 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard

View File

@@ -31,9 +31,6 @@ options-starting-units =
.light-support = Light Support
.heavy-support = Heavy Support
options-difficulty =
.normal = Normal
## Arrakis
notification-worm-attack = Worm attack.
notification-worm-sign = Worm sign.

View File

@@ -2,10 +2,6 @@
label-gamesave-loading-screen-title = Loading Saved Game
label-gamesave-loading-screen-desc = Press Escape to cancel loading and return to the main menu
## missionbrowser.yaml
label-mission-info-difficulty-desc = Difficulty:
label-mission-info-gamespeed-desc = Speed:
## ingame-observer.yaml
button-observer-widgets-pause-tooltip = Pause
button-observer-widgets-play-tooltip = Play

View File

@@ -4,4 +4,5 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard

View File

@@ -32,9 +32,6 @@ options-starting-units =
.light-support = Light Support
.heavy-support = Heavy Support
options-difficulty =
.normal = Normal
## Structures
notification-construction-complete = Construction complete.
notification-unit-ready = Unit ready.

View File

@@ -4,5 +4,6 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard
.tough = Real tough guy

View File

@@ -4,5 +4,6 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard
.tough = Real tough guy

View File

@@ -4,5 +4,6 @@ dropdown-difficulty =
options-difficulty =
.easy = Easy
.normal = Normal
.hard = Hard
.tough = Real tough guy

View File

@@ -13,10 +13,6 @@ label-voxel-selector-pitch = Pitch
label-voxel-selector-yaw = Yaw
button-assetbrowser-panel-close = Close
## missionbrowser.yaml
label-mission-info-difficulty-desc = Difficulty:
label-mission-info-gamespeed-desc = Speed:
## color-picker.yaml
button-color-chooser-random = Random
button-color-chooser-store = Store

View File

@@ -29,9 +29,6 @@ dropdown-map-creeps =
.label = Creep Actors
.description = Hostile forces spawn on the battlefield
options-difficulty =
.normal = Normal
## Structures
notification-construction-complete = Construction complete.
notification-unit-ready = Unit ready.