v1.5.7.0 (Summer Update)

This commit is contained in:
Regalis11
2024-06-18 16:49:51 +03:00
parent 4a63dacbce
commit 230d1b6e78
263 changed files with 7792 additions and 2845 deletions
@@ -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