Extract unit names and descriptions
This commit is contained in:
committed by
Matthias Mailänder
parent
a5e472dfe6
commit
0f5b78442b
@@ -185,8 +185,10 @@ namespace OpenRA.Mods.Common.Scripting
|
||||
get
|
||||
{
|
||||
var tooltip = tooltips.FirstEnabledConditionalTraitOrDefault();
|
||||
if (tooltip == null)
|
||||
return null;
|
||||
|
||||
return tooltip?.Info.Name;
|
||||
return TranslationProvider.GetString(tooltip.Info.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -56,7 +56,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public readonly int BuildPaletteOrder = 9999;
|
||||
|
||||
[Desc("Text shown in the production tooltip.")]
|
||||
public readonly string Description = "";
|
||||
[TranslationReference(optional: true)]
|
||||
public readonly string Description;
|
||||
|
||||
public static string GetInitialFaction(ActorInfo ai, string defaultFaction)
|
||||
{
|
||||
|
||||
@@ -16,7 +16,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public class EncyclopediaInfo : TraitInfo
|
||||
{
|
||||
[Desc("Explains the purpose in the in-game encyclopedia.")]
|
||||
public readonly string Description = null;
|
||||
[TranslationReference]
|
||||
public readonly string Description;
|
||||
|
||||
[Desc("Number for ordering the list.")]
|
||||
public readonly int Order;
|
||||
|
||||
@@ -15,7 +15,8 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
public abstract class TooltipInfoBase : ConditionalTraitInfo, Requires<IMouseBoundsInfo>
|
||||
{
|
||||
public readonly string Name = "";
|
||||
[TranslationReference]
|
||||
public readonly string Name;
|
||||
}
|
||||
|
||||
[Desc("Shown in map editor.")]
|
||||
@@ -29,19 +30,23 @@ namespace OpenRA.Mods.Common.Traits
|
||||
{
|
||||
[Desc("An optional generic name (i.e. \"Soldier\" or \"Structure\")" +
|
||||
"to be shown to chosen players.")]
|
||||
public readonly string GenericName = null;
|
||||
[TranslationReference(optional: true)]
|
||||
public readonly string GenericName;
|
||||
|
||||
[Desc("Prefix generic tooltip name with 'Ally/Neutral/EnemyPrefix'.")]
|
||||
public readonly bool GenericStancePrefix = true;
|
||||
|
||||
[Desc("Prefix to display in the tooltip for allied units.")]
|
||||
public readonly string AllyPrefix = "Allied";
|
||||
[TranslationReference(optional: true)]
|
||||
public readonly string AllyPrefix = "label-tooltip-prefix.ally";
|
||||
|
||||
[Desc("Prefix to display in the tooltip for neutral units.")]
|
||||
public readonly string NeutralPrefix = null;
|
||||
[TranslationReference(optional: true)]
|
||||
public readonly string NeutralPrefix;
|
||||
|
||||
[Desc("Prefix to display in the tooltip for enemy units.")]
|
||||
public readonly string EnemyPrefix = "Enemy";
|
||||
[TranslationReference(optional: true)]
|
||||
public readonly string EnemyPrefix = "label-tooltip-prefix.enemy";
|
||||
|
||||
[Desc("Player stances that the generic name should be shown to.")]
|
||||
public readonly PlayerRelationship GenericVisibility = PlayerRelationship.None;
|
||||
@@ -54,18 +59,22 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public string TooltipForPlayerStance(PlayerRelationship relationship)
|
||||
{
|
||||
if (relationship == PlayerRelationship.None || !GenericVisibility.HasRelationship(relationship))
|
||||
return Name;
|
||||
return TranslationProvider.GetString(Name);
|
||||
|
||||
if (GenericStancePrefix && !string.IsNullOrEmpty(AllyPrefix) && relationship == PlayerRelationship.Ally)
|
||||
return AllyPrefix + " " + GenericName;
|
||||
var genericName = string.IsNullOrEmpty(GenericName) ? "" : TranslationProvider.GetString(GenericName);
|
||||
if (GenericStancePrefix)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(AllyPrefix) && relationship == PlayerRelationship.Ally)
|
||||
return TranslationProvider.GetString(AllyPrefix) + " " + genericName;
|
||||
|
||||
if (GenericStancePrefix && !string.IsNullOrEmpty(NeutralPrefix) && relationship == PlayerRelationship.Neutral)
|
||||
return NeutralPrefix + " " + GenericName;
|
||||
if (!string.IsNullOrEmpty(NeutralPrefix) && relationship == PlayerRelationship.Neutral)
|
||||
return TranslationProvider.GetString(NeutralPrefix) + " " + genericName;
|
||||
|
||||
if (GenericStancePrefix && !string.IsNullOrEmpty(EnemyPrefix) && relationship == PlayerRelationship.Enemy)
|
||||
return EnemyPrefix + " " + GenericName;
|
||||
if (!string.IsNullOrEmpty(EnemyPrefix) && relationship == PlayerRelationship.Enemy)
|
||||
return TranslationProvider.GetString(EnemyPrefix) + " " + genericName;
|
||||
}
|
||||
|
||||
return GenericName;
|
||||
return genericName;
|
||||
}
|
||||
|
||||
public bool IsOwnerRowVisible => ShowOwnerRow;
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public readonly SelectionBoxAnnotationRenderable SelectionBox;
|
||||
|
||||
public string Tooltip =>
|
||||
(tooltip == null ? " < " + Info.Name + " >" : tooltip.Name) + "\n" + Owner.Name + " (" + Owner.Faction + ")"
|
||||
(tooltip == null ? " < " + Info.Name + " >" : TranslationProvider.GetString(tooltip.Name)) + "\n" + Owner.Name + " (" + Owner.Faction + ")"
|
||||
+ "\nID: " + ID + "\nType: " + Info.Name;
|
||||
|
||||
public string Type => reference.Type;
|
||||
|
||||
@@ -111,13 +111,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
var tooltip = a.TraitInfos<EditorOnlyTooltipInfo>().FirstOrDefault(ti => ti.EnabledByDefault) as TooltipInfoBase
|
||||
?? a.TraitInfos<TooltipInfo>().FirstOrDefault(ti => ti.EnabledByDefault);
|
||||
|
||||
var actorType = TranslationProvider.GetString(ActorTypeTooltip, Translation.Arguments("actorType", a.Name));
|
||||
|
||||
var searchTerms = new List<string>() { a.Name };
|
||||
if (tooltip != null)
|
||||
searchTerms.Add(tooltip.Name);
|
||||
|
||||
var actorType = TranslationProvider.GetString(ActorTypeTooltip, Translation.Arguments("actorType", a.Name));
|
||||
var tooltipText = tooltip == null ? actorType : tooltip.Name + $"\n{actorType}";
|
||||
allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), tooltipText));
|
||||
{
|
||||
var actorName = TranslationProvider.GetString(tooltip.Name);
|
||||
searchTerms.Add(actorName);
|
||||
allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), actorName + $"\n{actorType}"));
|
||||
}
|
||||
else
|
||||
allActorsTemp.Add(new ActorSelectorActor(a, editorData.Categories, searchTerms.ToArray(), actorType));
|
||||
}
|
||||
|
||||
allActors = allActorsTemp.ToArray();
|
||||
|
||||
@@ -116,7 +116,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
var label = item.Get<LabelWithTooltipWidget>("TITLE");
|
||||
var name = actor.TraitInfoOrDefault<TooltipInfo>()?.Name;
|
||||
if (!string.IsNullOrEmpty(name))
|
||||
WidgetUtils.TruncateLabelToTooltip(label, name);
|
||||
WidgetUtils.TruncateLabelToTooltip(label, TranslationProvider.GetString(name));
|
||||
|
||||
if (firstItem == null)
|
||||
{
|
||||
@@ -159,7 +159,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
|
||||
var info = actor.TraitInfoOrDefault<EncyclopediaInfo>();
|
||||
if (info != null && !string.IsNullOrEmpty(info.Description))
|
||||
text += WidgetUtils.WrapText(info.Description.Replace("\\n", "\n") + "\n\n", descriptionLabel.Bounds.Width, descriptionFont);
|
||||
text += WidgetUtils.WrapText(TranslationProvider.GetString(info.Description) + "\n\n", descriptionLabel.Bounds.Width, descriptionFont);
|
||||
|
||||
var height = descriptionFont.Measure(text).Y;
|
||||
descriptionLabel.Text = text;
|
||||
@@ -175,7 +175,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
{
|
||||
var actorTooltip = actor.TraitInfos<TooltipInfo>().FirstOrDefault(info => info.EnabledByDefault);
|
||||
if (actorTooltip != null)
|
||||
return actorTooltip.Name;
|
||||
return TranslationProvider.GetString(actorTooltip.Name);
|
||||
}
|
||||
|
||||
return name;
|
||||
|
||||
@@ -38,15 +38,16 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
return;
|
||||
|
||||
var tooltip = armyUnit.TooltipInfo;
|
||||
var name = tooltip?.Name ?? armyUnit.ActorInfo.Name;
|
||||
var name = tooltip != null ? TranslationProvider.GetString(tooltip.Name) : armyUnit.ActorInfo.Name;
|
||||
var buildable = armyUnit.BuildableInfo;
|
||||
|
||||
nameLabel.Text = name;
|
||||
|
||||
var nameSize = font.Measure(name);
|
||||
|
||||
descLabel.Text = buildable.Description.Replace("\\n", "\n");
|
||||
var descSize = descFont.Measure(descLabel.Text);
|
||||
var desc = string.IsNullOrEmpty(buildable.Description) ? "" : TranslationProvider.GetString(buildable.Description);
|
||||
descLabel.Text = desc;
|
||||
var descSize = descFont.Measure(desc);
|
||||
descLabel.Bounds.Width = descSize.X;
|
||||
descLabel.Bounds.Height = descSize.Y + descLabelPadding;
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
return;
|
||||
|
||||
var tooltip = actor.TraitInfos<TooltipInfo>().FirstOrDefault(info => info.EnabledByDefault);
|
||||
var name = tooltip?.Name ?? actor.Name;
|
||||
var name = tooltip != null ? TranslationProvider.GetString(tooltip.Name) : actor.Name;
|
||||
var buildable = actor.TraitInfo<BuildableInfo>();
|
||||
|
||||
var cost = 0;
|
||||
@@ -137,8 +137,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
costLabel.GetColor = () => pr.GetCashAndResources() >= cost ? Color.White : Color.Red;
|
||||
var costSize = font.Measure(costLabel.Text);
|
||||
|
||||
descLabel.Text = buildable.Description.Replace("\\n", "\n");
|
||||
var descSize = descFont.Measure(descLabel.Text);
|
||||
var desc = string.IsNullOrEmpty(buildable.Description) ? "" : TranslationProvider.GetString(buildable.Description);
|
||||
descLabel.Text = desc;
|
||||
var descSize = descFont.Measure(desc);
|
||||
descLabel.Bounds.Width = descSize.X;
|
||||
descLabel.Bounds.Height = descSize.Y + descLabelPadding;
|
||||
|
||||
@@ -170,7 +171,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
||||
{
|
||||
var actorTooltip = ai.TraitInfos<TooltipInfo>().FirstOrDefault(info => info.EnabledByDefault);
|
||||
if (actorTooltip != null)
|
||||
return actorTooltip.Name;
|
||||
return TranslationProvider.GetString(actorTooltip.Name);
|
||||
}
|
||||
|
||||
return a;
|
||||
|
||||
@@ -54,3 +54,8 @@ dropdown-starting-units =
|
||||
dropdown-time-limit =
|
||||
.label = Time Limit
|
||||
.description = Player or team with the highest score after this time wins
|
||||
|
||||
## Tooltip
|
||||
label-tooltip-prefix =
|
||||
.ally = Ally
|
||||
.enemy = Enemy
|
||||
|
||||
Reference in New Issue
Block a user