v1.5.7.0 (Summer Update)
This commit is contained in:
@@ -8,8 +8,12 @@ namespace Barotrauma
|
||||
|
||||
public bool PrimaryIsLoaded { get; private set; }
|
||||
|
||||
public FallbackLString(LocalizedString primary, LocalizedString fallback)
|
||||
private readonly bool useDefaultLanguageIfFound;
|
||||
|
||||
/// <param name="useDefaultLanguageIfFound">If the text is available in the default language (English), should it be used instead of this fallback?</param>
|
||||
public FallbackLString(LocalizedString primary, LocalizedString fallback, bool useDefaultLanguageIfFound = true)
|
||||
{
|
||||
this.useDefaultLanguageIfFound = useDefaultLanguageIfFound;
|
||||
if (primary is FallbackLString { primary: { } innerPrimary, fallback: { } innerFallback })
|
||||
{
|
||||
this.primary = innerPrimary;
|
||||
@@ -35,7 +39,11 @@ namespace Barotrauma
|
||||
{
|
||||
cachedValue = primary.Value;
|
||||
PrimaryIsLoaded = primary.Loaded;
|
||||
if (!primary.Loaded)
|
||||
|
||||
bool defaultLanguageFallbackAvailable = primary is TagLString { UsingDefaultLanguageAsFallback: true };
|
||||
|
||||
if (!primary.Loaded &&
|
||||
(!defaultLanguageFallbackAvailable || !useDefaultLanguageIfFound))
|
||||
{
|
||||
cachedValue = fallback.Value;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#nullable enable
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
@@ -108,9 +108,14 @@ namespace Barotrauma
|
||||
return new JoinLString(separator, subStrs);
|
||||
}
|
||||
|
||||
public LocalizedString Fallback(LocalizedString fallback)
|
||||
/// <summary>
|
||||
/// Use this text instead if the original text cannot be found.
|
||||
/// </summary>
|
||||
/// <param name="fallback">The text to use as a fallback</param>
|
||||
/// <param name="useDefaultLanguageIfFound">Should the default language (English) text be used instead of this fallback if there is a text available in the default language?</param>
|
||||
public LocalizedString Fallback(LocalizedString fallback, bool useDefaultLanguageIfFound = true)
|
||||
{
|
||||
return new FallbackLString(this, fallback);
|
||||
return new FallbackLString(this, fallback, useDefaultLanguageIfFound);
|
||||
}
|
||||
|
||||
public IReadOnlyList<LocalizedString> Split(params char[] separators)
|
||||
|
||||
@@ -11,6 +11,11 @@ namespace Barotrauma
|
||||
{
|
||||
private readonly ImmutableArray<Identifier> tags;
|
||||
|
||||
/// <summary>
|
||||
/// Did we end up using the text in the default language (English) due to the text not being found in the selected language?
|
||||
/// </summary>
|
||||
public bool UsingDefaultLanguageAsFallback { get; private set; }
|
||||
|
||||
public TagLString(params Identifier[] tags)
|
||||
{
|
||||
this.tags = tags.ToImmutableArray();
|
||||
@@ -31,6 +36,8 @@ namespace Barotrauma
|
||||
{
|
||||
UpdateLanguage();
|
||||
|
||||
UsingDefaultLanguageAsFallback = false;
|
||||
|
||||
(string value, bool loaded) tryLoad(LanguageIdentifier lang)
|
||||
{
|
||||
IReadOnlyList<TextPack.Text> candidates = Array.Empty<TextPack.Text>();
|
||||
@@ -69,8 +76,9 @@ namespace Barotrauma
|
||||
cachedValue = value;
|
||||
if (!loaded && Language != TextManager.DefaultLanguage)
|
||||
{
|
||||
(value, _) = tryLoad(TextManager.DefaultLanguage);
|
||||
(value, bool fallbackLoaded) = tryLoad(TextManager.DefaultLanguage);
|
||||
cachedValue = value;
|
||||
UsingDefaultLanguageAsFallback = fallbackLoaded;
|
||||
//Notice how we don't set loadedSuccessfully again here.
|
||||
//This is by design; falling back to English means that
|
||||
//this text did NOT load successfully, so Loaded must
|
||||
|
||||
Reference in New Issue
Block a user