Externalize briefing strings.

This commit is contained in:
Matthias Mailänder
2024-08-03 19:37:28 +02:00
committed by Gustas Kažukauskas
parent efa673d999
commit 81147bc3f3
5 changed files with 14 additions and 5 deletions

View File

@@ -17,6 +17,7 @@ namespace OpenRA.Mods.Common.Traits
[TraitLocation(SystemActors.World)]
public class MissionDataInfo : TraitInfo<MissionData>
{
[FluentReference(optional: true)]
[Desc("Briefing text displayed in the mission browser.")]
public readonly string Briefing;

View File

@@ -214,6 +214,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
var candidate = grouping.First();
var key = $"{candidate.Actor}-{candidate.Key}";
if (key == "actor-world-missiondata-briefing")
key = "briefing";
build += $"{key} = {candidate.Value}\n";
foreach (var node in candidate.Nodes)
node.Value.Value = key;

View File

@@ -29,7 +29,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var missionData = world.Map.Rules.Actors[SystemActors.World].TraitInfoOrDefault<MissionDataInfo>();
if (missionData != null)
{
var text = WidgetUtils.WrapText(missionData.Briefing?.Replace("\\n", "\n"), mapDescription.Bounds.Width, mapFont);
var briefing = previewWidget.Preview().TryGetMessage(missionData.Briefing, out var translation) ? translation : missionData.Briefing;
var text = WidgetUtils.WrapText(briefing, mapDescription.Bounds.Width, mapFont);
mapDescription.GetText = () => text;
mapDescription.Bounds.Height = mapFont.Measure(text).Y;
mapDescriptionPanel.ScrollToTop();

View File

@@ -678,7 +678,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var missionData = map.WorldActorInfo.TraitInfoOrDefault<MissionDataInfo>();
if (missionData != null && !string.IsNullOrEmpty(missionData.Briefing))
TextNotificationsManager.AddSystemLine(missionData.Briefing.Replace("\\n", "\n"));
{
var briefing = map.TryGetMessage(missionData.Briefing, out var translation) ? translation : missionData.Briefing;
TextNotificationsManager.AddSystemLine(briefing);
}
var allOptions = map.PlayerActorInfo.TraitInfos<ILobbyOptions>()
.Concat(map.WorldActorInfo.TraitInfos<ILobbyOptions>())

View File

@@ -299,13 +299,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
infoVideo = missionData.BackgroundVideo;
infoVideoVisible = infoVideo != null;
var briefing = WidgetUtils.WrapText(missionData.Briefing?.Replace("\\n", "\n"), description.Bounds.Width, descriptionFont);
var height = descriptionFont.Measure(briefing).Y;
var briefing = preview.TryGetMessage(missionData.Briefing, out var translation) ? translation : missionData.Briefing;
var wrapped = WidgetUtils.WrapText(briefing, description.Bounds.Width, descriptionFont);
var height = descriptionFont.Measure(wrapped).Y;
Game.RunAfterTick(() =>
{
if (preview == selectedMap)
{
description.GetText = () => briefing;
description.GetText = () => wrapped;
description.Bounds.Height = height;
descriptionPanel.Layout.AdjustChildren();
panel = PanelType.MissionInfo;