Client LuaCsForBarotrauma
TagLString.cs
1
#nullable enable
2
using
System;
3
using
System.Collections.Generic;
4
using
System.Collections.Immutable;
5
using
System.Linq;
6
using
Barotrauma
.
Extensions
;
7
8
namespace
Barotrauma
9
{
10
public
class
TagLString
:
LocalizedString
11
{
12
private
readonly ImmutableArray<Identifier> tags;
13
17
public
bool
UsingDefaultLanguageAsFallback
{
get
;
private
set
; }
18
19
public
TagLString
(params Identifier[] tags)
20
{
21
this.tags = tags.ToImmutableArray();
22
}
23
24
private
LoadedSuccessfully
loadedSuccessfully =
LoadedSuccessfully
.Unknown;
25
26
public
override
bool
Loaded
27
{
28
get
29
{
30
if
(loadedSuccessfully ==
LoadedSuccessfully
.Unknown) {
RetrieveValue
(); }
31
return
loadedSuccessfully ==
LoadedSuccessfully
.Yes;
32
}
33
}
34
35
public
override
void
RetrieveValue
()
36
{
37
UpdateLanguage
();
38
39
UsingDefaultLanguageAsFallback
=
false
;
40
41
(
string
value,
bool
loaded) tryLoad(
LanguageIdentifier
lang)
42
{
43
IReadOnlyList<
TextPack
.
Text
> candidates = Array.Empty<
TextPack
.
Text
>();
44
int
tagIndex = 0;
45
46
if
(TextManager.TextPacks.TryGetValue(lang, out var packs))
47
{
48
while
(candidates.Count == 0 && tagIndex < tags.Length)
49
{
50
foreach
(var pack
in
packs)
51
{
52
if
(pack.Texts.TryGetValue(tags[tagIndex], out var texts))
53
{
54
candidates = candidates.ListConcat(texts);
55
}
56
}
57
tagIndex++;
58
}
59
}
60
61
if
(candidates.Count == 0) {
return
(
string
.Empty, loaded:
false
); }
62
var firstOverride = candidates.FirstOrDefault(c => c.IsOverride);
63
if
(firstOverride !=
default
)
64
{
65
//if there's overrides defined, choose from the first pack that defines overrides
66
return
(candidates.Where(
static
c => c.IsOverride).Where(c => c.TextPack == firstOverride.TextPack).GetRandomUnsynced().String, loaded:
true
);
67
}
68
else
69
{
70
return
(candidates.GetRandomUnsynced().String, loaded:
true
);
71
}
72
}
73
74
var (value, loaded) = tryLoad(
Language
);
75
loadedSuccessfully = loaded ?
LoadedSuccessfully
.Yes :
LoadedSuccessfully
.No;
76
cachedValue
= value;
77
if
(!loaded &&
Language
!= TextManager.DefaultLanguage)
78
{
79
(value,
bool
fallbackLoaded) = tryLoad(TextManager.DefaultLanguage);
80
cachedValue
= value;
81
UsingDefaultLanguageAsFallback
= fallbackLoaded;
82
//Notice how we don't set loadedSuccessfully again here.
83
//This is by design; falling back to English means that
84
//this text did NOT load successfully, so Loaded must
85
//return false.
86
}
87
}
88
}
89
}
Barotrauma.LocalizedString
Definition:
LocalizedString.cs:8
Barotrauma.LocalizedString.Language
LanguageIdentifier Language
Definition:
LocalizedString.cs:16
Barotrauma.LocalizedString.cachedValue
string cachedValue
Definition:
LocalizedString.cs:19
Barotrauma.LocalizedString.UpdateLanguage
void UpdateLanguage()
Definition:
LocalizedString.cs:33
Barotrauma.LocalizedString.LoadedSuccessfully
LoadedSuccessfully
Definition:
LocalizedString.cs:10
Barotrauma.TagLString
Definition:
TagLString.cs:11
Barotrauma.TagLString.RetrieveValue
override void RetrieveValue()
Definition:
TagLString.cs:35
Barotrauma.TagLString.UsingDefaultLanguageAsFallback
bool UsingDefaultLanguageAsFallback
Did we end up using the text in the default language (English) due to the text not being found in the...
Definition:
TagLString.cs:17
Barotrauma.TagLString.TagLString
TagLString(params Identifier[] tags)
Definition:
TagLString.cs:19
Barotrauma.TagLString.Loaded
override bool Loaded
Definition:
TagLString.cs:27
Barotrauma.TextPack
Definition:
TextPack.cs:46
Barotrauma.TextPack.Text
readonly record struct Text(string String, bool IsOverride, TextPack TextPack)
Barotrauma.Extensions
Definition:
IEnumerableExtensions.cs:7
Barotrauma
Definition:
AchievementManager.cs:12
Barotrauma.LanguageIdentifier
Definition:
TextPack.cs:11
Barotrauma
BarotraumaShared
SharedSource
Text
LocalizedString
TagLString.cs
Generated by
1.9.1