Skip to content

Commit 578caae

Browse files
authored
Updated translations update event to go through the Localization wrapper (#5052)
* Updated translations update event to go through the Localization wrapper * Removed useless looking GameWorld compare to null in translations update in CreatureStageBase.cs * Fixed a few random comments that some new text checker in Rider complained about
1 parent c640eaa commit 578caae

34 files changed

+380
-212
lines changed

simulation_parameters/SimulationParameters.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,16 @@ public override void _Ready()
211211
GD.Print("SimulationParameters are good");
212212
}
213213

214-
public override void _Notification(int what)
214+
public override void _EnterTree()
215215
{
216-
if (what == NotificationTranslationChanged)
217-
{
218-
ApplyTranslations();
219-
}
216+
base._EnterTree();
217+
Localization.Instance.OnTranslationsChanged += ApplyTranslations;
218+
}
219+
220+
public override void _ExitTree()
221+
{
222+
base._ExitTree();
223+
Localization.Instance.OnTranslationsChanged -= ApplyTranslations;
220224
}
221225

222226
public OrganelleDefinition GetOrganelleType(string name)

src/awakening_stage/gui/RecipeListItem.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,18 @@ public override void _Ready()
6060
UpdateShownRecipe();
6161
}
6262

63+
public override void _EnterTree()
64+
{
65+
base._EnterTree();
66+
Localization.Instance.OnTranslationsChanged += UpdateShownRecipe;
67+
}
68+
69+
public override void _ExitTree()
70+
{
71+
base._ExitTree();
72+
Localization.Instance.OnTranslationsChanged -= UpdateShownRecipe;
73+
}
74+
6375
public override void _Notification(int what)
6476
{
6577
base._Notification(what);
@@ -68,10 +80,6 @@ public override void _Notification(int what)
6880
{
6981
SetLabelSize();
7082
}
71-
else if (what == NotificationTranslationChanged)
72-
{
73-
UpdateShownRecipe();
74-
}
7583
}
7684

7785
private void SetLabelSize()

src/engine/Localization.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,15 @@ private Localization()
2424
instance = this;
2525
}
2626

27-
public Localization Instance => instance ?? throw new InstanceNotLoadedYetException();
27+
public delegate void TranslationsChangedEventHandler();
2828

29-
// TODO: event for when language changes
29+
/// <summary>
30+
/// Event to listen to, to know when translations text / language has changed and some GUI elements may need to
31+
/// update their state
32+
/// </summary>
33+
public event TranslationsChangedEventHandler? OnTranslationsChanged;
34+
35+
public static Localization Instance => instance ?? throw new InstanceNotLoadedYetException();
3036

3137
/// <summary>
3238
/// Returns text for a translation key for the current language
@@ -105,7 +111,7 @@ private void OnLanguageChanged()
105111

106112
try
107113
{
108-
// TODO: trigger localization change callback
114+
OnTranslationsChanged?.Invoke();
109115
}
110116
catch (Exception e)
111117
{

src/general/HelpScreen.cs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,18 +58,20 @@ public override void _Ready()
5858
}
5959
}
6060

61-
public override void _Notification(int what)
61+
public override void _EnterTree()
6262
{
63-
if (what == NotificationTranslationChanged)
64-
{
65-
leftColumn.QueueFreeChildren();
66-
rightColumn.QueueFreeChildren();
67-
BuildHelpTexts(Category);
68-
}
63+
base._EnterTree();
64+
Localization.Instance.OnTranslationsChanged += OnTranslationsChanged;
65+
}
66+
67+
public override void _ExitTree()
68+
{
69+
base._ExitTree();
70+
Localization.Instance.OnTranslationsChanged -= OnTranslationsChanged;
6971
}
7072

7173
/// <summary>
72-
/// Randomizes the easter egg messages
74+
/// Randomizes the Easter egg messages
7375
/// and its chance of showing up.
7476
/// </summary>
7577
public void RandomizeEasterEgg()
@@ -147,4 +149,11 @@ private void OnCloseButtonPressed()
147149
{
148150
EmitSignal(SignalName.HelpScreenClosed);
149151
}
152+
153+
private void OnTranslationsChanged()
154+
{
155+
leftColumn.QueueFreeChildren();
156+
rightColumn.QueueFreeChildren();
157+
BuildHelpTexts(Category);
158+
}
150159
}

src/general/MainMenu.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ public override void _EnterTree()
256256

257257
Settings.Instance.Menu3DBackgroundEnabled.OnChanged += OnMenuBackgroundTypeChanged;
258258
ThriveopediaManager.Instance.OnPageOpenedHandler += OnThriveopediaOpened;
259+
Localization.Instance.OnTranslationsChanged += OnTranslationsChanged;
259260
}
260261

261262
public override void _ExitTree()
@@ -264,6 +265,7 @@ public override void _ExitTree()
264265

265266
Settings.Instance.Menu3DBackgroundEnabled.OnChanged -= OnMenuBackgroundTypeChanged;
266267
ThriveopediaManager.Instance.OnPageOpenedHandler -= OnThriveopediaOpened;
268+
Localization.Instance.OnTranslationsChanged -= OnTranslationsChanged;
267269
}
268270

269271
public override void _Process(double delta)
@@ -340,13 +342,6 @@ public override void _Notification(int notification)
340342
GD.Print("Main window close signal detected");
341343
Invoke.Instance.Queue(QuitPressed);
342344
}
343-
else if (notification == NotificationTranslationChanged)
344-
{
345-
if (SteamHandler.Instance.IsLoaded)
346-
{
347-
UpdateSteamLoginText();
348-
}
349-
}
350345
}
351346

352347
public void StartMusic()
@@ -1175,4 +1170,12 @@ private void ResetPerformanceTracking()
11751170
secondsInMenu = 0;
11761171
averageFrameRate = 0;
11771172
}
1173+
1174+
private void OnTranslationsChanged()
1175+
{
1176+
if (SteamHandler.Instance.IsLoaded)
1177+
{
1178+
UpdateSteamLoginText();
1179+
}
1180+
}
11781181
}

src/general/OptionsMenu.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -674,29 +674,22 @@ public override void _EnterTree()
674674
guiLightEffectsToggle.RegisterToolTipForControl("guiLightEffects", "options", false);
675675
assumeHyperthreading.RegisterToolTipForControl("assumeHyperthreading", "options", false);
676676
unsavedProgressWarningEnabled.RegisterToolTipForControl("unsavedProgressWarning", "options", false);
677+
678+
Localization.Instance.OnTranslationsChanged += OnTranslationsChanged;
677679
}
678680

679681
public override void _ExitTree()
680682
{
681683
base._ExitTree();
682684

685+
Localization.Instance.OnTranslationsChanged -= OnTranslationsChanged;
686+
683687
cloudResolutionTitle.UnRegisterToolTipForControl("cloudResolution", "options");
684688
guiLightEffectsToggle.UnRegisterToolTipForControl("guiLightEffects", "options");
685689
assumeHyperthreading.UnRegisterToolTipForControl("assumeHyperthreading", "options");
686690
unsavedProgressWarningEnabled.UnRegisterToolTipForControl("unsavedProgressWarning", "options");
687691
}
688692

689-
public override void _Notification(int what)
690-
{
691-
if (what == NotificationTranslationChanged)
692-
{
693-
BuildInputRebindControls();
694-
UpdateDefaultAudioOutputDeviceText();
695-
DisplayResolution();
696-
DisplayGpuInfo();
697-
}
698-
}
699-
700693
/// <summary>
701694
/// Opens the options menu with main menu configuration settings.
702695
/// </summary>
@@ -1102,6 +1095,14 @@ private void DisplayGpuInfo()
11021095
.FormatSafe(Math.Round(videoMemoryInMebibytes, 2));
11031096
}
11041097

1098+
private void OnTranslationsChanged()
1099+
{
1100+
BuildInputRebindControls();
1101+
UpdateDefaultAudioOutputDeviceText();
1102+
DisplayResolution();
1103+
DisplayGpuInfo();
1104+
}
1105+
11051106
/// <summary>
11061107
/// Changes the active settings tab that is displayed, or returns if the tab is already active.
11071108
/// </summary>

src/general/base_stage/CreatureStageBase.cs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -161,16 +161,6 @@ public override void _Process(double delta)
161161
}
162162
}
163163

164-
public override void _Notification(int what)
165-
{
166-
if (what == NotificationTranslationChanged)
167-
{
168-
// TODO: the following doesn't seem to do anything so confirm that and remove
169-
if (CurrentGame?.GameWorld.Map.CurrentPatch == null)
170-
throw new InvalidOperationException("Stage not initialized properly");
171-
}
172-
}
173-
174164
public override void StartNewGame()
175165
{
176166
SpawnPlayer();
@@ -194,15 +184,15 @@ public virtual void OnReturnFromEditor()
194184
GameWorld.GenerationHistory[lastGeneration].UpdateSpeciesData(GameWorld.PlayerSpecies);
195185
}
196186

197-
// Now the editor increases the generation so we don't do that here anymore
187+
// Now the editor increases the generation, so we don't do that here anymore
198188

199189
// Make sure player is spawned
200190
SpawnPlayer();
201191

202192
BaseHUD.OnEnterStageTransition(false, true);
203193
BaseHUD.HideReproductionDialog();
204194

205-
// Pass some extra time to hud messages to make short lived messages from the previous life (like editor ready
195+
// Pass some extra time to hud messages to make short-lived messages from the previous life (like editor ready
206196
// disappear)
207197
BaseHUD.HUDMessages.PassExtraTime(Constants.HUD_MESSAGES_EXTRA_ELAPSE_TIME_FROM_EDITOR);
208198

src/general/base_stage/EditorComponentBase.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,18 @@ public override void _Ready()
5959
finishOrNextButton = GetNode<Button>(FinishOrNextButtonPath);
6060
}
6161

62+
public override void _EnterTree()
63+
{
64+
base._EnterTree();
65+
Localization.Instance.OnTranslationsChanged += OnTranslationsChanged;
66+
}
67+
68+
public override void _ExitTree()
69+
{
70+
base._ExitTree();
71+
Localization.Instance.OnTranslationsChanged -= OnTranslationsChanged;
72+
}
73+
6274
public virtual void Init(TEditor owningEditor, bool fresh)
6375
{
6476
editor = owningEditor;
@@ -94,20 +106,11 @@ public void Init(IEditor owningEditor, bool fresh)
94106
Init((TEditor)owningEditor, fresh);
95107
}
96108

97-
public override void _Notification(int what)
98-
{
99-
// Rebuilds and recalculates all value dependent UI elements on language change
100-
if (what == NotificationTranslationChanged)
101-
{
102-
OnTranslationsChanged();
103-
}
104-
}
105-
106109
/// <summary>
107110
/// Called
108111
/// </summary>
109112
/// <param name="species">
110-
/// The species that was setup, accessing more specific data through <see cref="Editor"/> rather than casting
113+
/// The species that was set up, accessing more specific data through <see cref="Editor"/> rather than casting
111114
/// to a derived class is recommended.
112115
/// </param>
113116
public virtual void OnEditorSpeciesSetup(Species species)

src/gui_common/ChemicalEquation.cs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,18 @@ public override void _Ready()
9999
UpdateEquation();
100100
}
101101

102+
public override void _EnterTree()
103+
{
104+
base._EnterTree();
105+
Localization.Instance.OnTranslationsChanged += OnTranslationsChanged;
106+
}
107+
108+
public override void _ExitTree()
109+
{
110+
base._ExitTree();
111+
Localization.Instance.OnTranslationsChanged -= OnTranslationsChanged;
112+
}
113+
102114
public override void _Process(double delta)
103115
{
104116
if (ShowSpinner && EquationFromProcess != null)
@@ -115,16 +127,13 @@ public override void _Process(double delta)
115127
UpdateEquation();
116128
}
117129

118-
public override void _Notification(int what)
130+
private void OnTranslationsChanged()
119131
{
120-
if (what == NotificationTranslationChanged)
121-
{
122-
if (perSecondLabel != null)
123-
perSecondLabel.Text = Localization.Translate("PER_SECOND_SLASH");
132+
if (perSecondLabel != null)
133+
perSecondLabel.Text = Localization.Translate("PER_SECOND_SLASH");
124134

125-
if (environmentSeparator != null)
126-
environmentSeparator.Text = GetEnvironmentLabelText();
127-
}
135+
if (environmentSeparator != null)
136+
environmentSeparator.Text = GetEnvironmentLabelText();
128137
}
129138

130139
private void UpdateEquation()

src/gui_common/CompoundAmount.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,16 @@ public override void _Ready()
151151
UpdateColour();
152152
}
153153

154-
public override void _Notification(int what)
154+
public override void _EnterTree()
155155
{
156-
if (what == NotificationTranslationChanged)
157-
{
158-
UpdateTooltip();
156+
base._EnterTree();
157+
Localization.Instance.OnTranslationsChanged += OnTranslationsChanged;
158+
}
159159

160-
UpdateLabel();
161-
}
160+
public override void _ExitTree()
161+
{
162+
base._ExitTree();
163+
Localization.Instance.OnTranslationsChanged -= OnTranslationsChanged;
162164
}
163165

164166
protected override void Dispose(bool disposing)
@@ -233,4 +235,10 @@ private void UpdateTooltip()
233235
if (icon != null)
234236
icon.TooltipText = compound!.Name;
235237
}
238+
239+
private void OnTranslationsChanged()
240+
{
241+
UpdateTooltip();
242+
UpdateLabel();
243+
}
236244
}

0 commit comments

Comments
 (0)