44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
#nullable enable
|
|
namespace Barotrauma
|
|
{
|
|
public class FallbackLString : LocalizedString
|
|
{
|
|
private readonly LocalizedString primary;
|
|
private readonly LocalizedString fallback;
|
|
|
|
private bool primaryIsLoaded = false;
|
|
|
|
public FallbackLString(LocalizedString primary, LocalizedString fallback)
|
|
{
|
|
if (primary is FallbackLString {primary: { } innerPrimary, fallback: { } innerFallback})
|
|
{
|
|
this.primary = innerPrimary;
|
|
this.fallback = innerFallback.Fallback(fallback);
|
|
}
|
|
else
|
|
{
|
|
this.primary = primary;
|
|
this.fallback = fallback;
|
|
}
|
|
}
|
|
|
|
protected override bool MustRetrieveValue()
|
|
{
|
|
return base.MustRetrieveValue()
|
|
|| MustRetrieveValue(primary)
|
|
|| MustRetrieveValue(fallback)
|
|
|| primaryIsLoaded != primary.Loaded;
|
|
}
|
|
|
|
public override bool Loaded => primary.Loaded || fallback.Loaded;
|
|
public override void RetrieveValue()
|
|
{
|
|
cachedValue = primary.Value;
|
|
primaryIsLoaded = primary.Loaded;
|
|
if (!primary.Loaded)
|
|
{
|
|
cachedValue = fallback.Value;
|
|
}
|
|
}
|
|
}
|
|
} |