Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rubberduckycooly
GitHub Repository: rubberduckycooly/Sonic-Mania-Decompilation
Path: blob/master/SonicMania/Objects/Global/Localization.c
338 views
1
// ---------------------------------------------------------------------
2
// RSDK Project: Sonic Mania
3
// Object Description: Localization Object
4
// Object Author: Christian Whitehead/Simon Thomley/Hunter Bridges
5
// Decompiled by: Rubberduckycooly & RMGRich
6
// ---------------------------------------------------------------------
7
8
#include "Game.h"
9
10
ObjectLocalization *Localization;
11
12
void Localization_Update(void) {}
13
14
void Localization_LateUpdate(void) {}
15
16
void Localization_StaticUpdate(void) {}
17
18
void Localization_Draw(void) {}
19
20
void Localization_Create(void *data) {}
21
22
void Localization_StageLoad(void)
23
{
24
OptionsRAM *options = Options_GetOptionsRAM();
25
if (globals->optionsLoaded >= STATUS_OK && options->overrideLanguage) {
26
Localization->language = options->language;
27
Localization_LoadStrings();
28
}
29
else {
30
Localization->language = sku_language;
31
Localization_LoadStrings();
32
}
33
}
34
35
void Localization_LoadStrings(void)
36
{
37
RSDK.InitString(&Localization->text, "", 0);
38
39
switch (Localization->language) {
40
case LANGUAGE_EN:
41
LogHelpers_Print("Loading EN strings...");
42
RSDK.LoadStringList(&Localization->text, "StringsEN.txt", 16);
43
break;
44
45
case LANGUAGE_FR:
46
LogHelpers_Print("Loading FR strings...");
47
RSDK.LoadStringList(&Localization->text, "StringsFR.txt", 16);
48
break;
49
50
case LANGUAGE_IT:
51
LogHelpers_Print("Loading IT strings...");
52
RSDK.LoadStringList(&Localization->text, "StringsIT.txt", 16);
53
break;
54
55
case LANGUAGE_GE:
56
LogHelpers_Print("Loading GE strings...");
57
RSDK.LoadStringList(&Localization->text, "StringsGE.txt", 16);
58
break;
59
60
case LANGUAGE_SP:
61
LogHelpers_Print("Loading SP strings...");
62
RSDK.LoadStringList(&Localization->text, "StringsSP.txt", 16);
63
break;
64
65
case LANGUAGE_JP:
66
LogHelpers_Print("Loading JP strings...");
67
RSDK.LoadStringList(&Localization->text, "StringsJP.txt", 16);
68
break;
69
70
#if GAME_VERSION != VER_100
71
case LANGUAGE_KO:
72
LogHelpers_Print("Loading KO strings...");
73
RSDK.LoadStringList(&Localization->text, "StringsKO.txt", 16);
74
break;
75
76
case LANGUAGE_SC:
77
LogHelpers_Print("Loading Simp Chinese strings...");
78
RSDK.LoadStringList(&Localization->text, "StringsSC.txt", 16);
79
break;
80
81
case LANGUAGE_TC:
82
LogHelpers_Print("Loading Trad Chinese strings...");
83
RSDK.LoadStringList(&Localization->text, "StringsTC.txt", 16);
84
break;
85
#endif
86
87
default: break;
88
}
89
90
RSDK.SplitStringList(Localization->strings, &Localization->text, 0, STR_STRING_COUNT);
91
Localization->loaded = true;
92
93
#if MANIA_USE_EGS
94
if (API.CheckAchievementsEnabled()) {
95
String *names[STR_STRING_COUNT - STR_ACHIEVEMENT];
96
for (int32 i = 0; i < (STR_STRING_COUNT - STR_ACHIEVEMENT); ++i) {
97
names[i] = &Localization->strings[i + STR_ACHIEVEMENT];
98
}
99
100
API.SetAchievementNames(names, STR_STRING_COUNT - STR_ACHIEVEMENT);
101
}
102
#endif
103
}
104
105
void Localization_GetString(String *string, uint8 id)
106
{
107
memset(string, 0, sizeof(String));
108
RSDK.InitString(string, "", 0);
109
RSDK.CopyString(string, &Localization->strings[id]);
110
for (int32 c = 0; c < string->length; ++c) {
111
if (string->chars[c] == '\\')
112
string->chars[c] = '\n';
113
}
114
}
115
116
void Localization_GetZoneName(String *string, uint8 zone)
117
{
118
switch (zone) {
119
case ZONE_GHZ: RSDK.InitString(string, "GREEN HILL", 0); break;
120
case ZONE_CPZ: RSDK.InitString(string, "CHEMICAL PLANT", 0); break;
121
case ZONE_SPZ: RSDK.InitString(string, "STUDIOPOLIS", 0); break;
122
case ZONE_FBZ: RSDK.InitString(string, "FLYING BATTERY", 0); break;
123
case ZONE_PGZ: RSDK.InitString(string, "PRESS GARDEN", 0); break;
124
case ZONE_SSZ: RSDK.InitString(string, "STARDUST SPEEDWAY", 0); break;
125
case ZONE_HCZ: RSDK.InitString(string, "HYDROCITY", 0); break;
126
case ZONE_MSZ: RSDK.InitString(string, "MIRAGE SALOON", 0); break;
127
case ZONE_OOZ: RSDK.InitString(string, "OIL OCEAN", 0); break;
128
case ZONE_LRZ: RSDK.InitString(string, "LAVA REEF", 0); break;
129
case ZONE_MMZ: RSDK.InitString(string, "METALLIC MADNESS", 0); break;
130
case ZONE_TMZ: RSDK.InitString(string, "TITANIC MONARCH", 0); break;
131
case ZONE_ERZ: RSDK.InitString(string, "???", 0); break;
132
default: break;
133
}
134
}
135
void Localization_GetZoneInitials(String *string, uint8 zone)
136
{
137
switch (zone) {
138
case ZONE_GHZ: RSDK.InitString(string, "GHZ", 0); break;
139
case ZONE_CPZ: RSDK.InitString(string, "CPZ", 0); break;
140
case ZONE_SPZ: RSDK.InitString(string, "SPZ", 0); break;
141
case ZONE_FBZ: RSDK.InitString(string, "FBZ", 0); break;
142
case ZONE_PGZ: RSDK.InitString(string, "PGZ", 0); break;
143
case ZONE_SSZ: RSDK.InitString(string, "SSZ", 0); break;
144
case ZONE_HCZ: RSDK.InitString(string, "HCZ", 0); break;
145
case ZONE_MSZ: RSDK.InitString(string, "MSZ", 0); break;
146
case ZONE_OOZ: RSDK.InitString(string, "OOZ", 0); break;
147
case ZONE_LRZ: RSDK.InitString(string, "LRZ", 0); break;
148
case ZONE_MMZ: RSDK.InitString(string, "MMZ", 0); break;
149
case ZONE_TMZ: RSDK.InitString(string, "TMZ", 0); break;
150
case ZONE_ERZ: RSDK.InitString(string, "???", 0); break;
151
default: break;
152
}
153
}
154
155
#if GAME_INCLUDE_EDITOR
156
void Localization_EditorDraw(void) {}
157
158
void Localization_EditorLoad(void) {}
159
#endif
160
161
void Localization_Serialize(void) {}
162
163