Skip to content

Commit 46e911e

Browse files
committed
Add option for installer translation output format
1 parent a9ef5f3 commit 46e911e

File tree

1 file changed

+66
-29
lines changed

1 file changed

+66
-29
lines changed

build.py

Lines changed: 66 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@
3030
}
3131

3232
class BuildVariant:
33-
def __init__(self,chapter, unity, system, target_crc32=None):
33+
def __init__(self, short_description, chapter, unity, system, target_crc32=None, translation_default=False):
3434
self.chapter = chapter
3535
self.unity = unity
3636
self.system = system
3737
self.target_crc32 = target_crc32
3838
self.chapter_number = chapter_to_chapter_number[chapter]
39-
self.data_dir = f"HigurashiEp{self.chapter_number}_Data"
39+
self.data_dir = f"HigurashiEp{self.chapter_number:02}_Data"
40+
self.translation_default = translation_default
41+
self.short_description = short_description
4042

4143
def get_build_command(self) -> str:
4244
args = [self.chapter, self.unity, self.system]
@@ -46,63 +48,83 @@ def get_build_command(self) -> str:
4648

4749
return " ".join(args)
4850

51+
def get_translation_sharedassets_name(self) -> str:
52+
operatingSystem = None
53+
if self.system == "win":
54+
operatingSystem = "Windows"
55+
elif self.system == "unix":
56+
operatingSystem = "LinuxMac"
57+
elif self.system == "mac":
58+
operatingSystem = "Mac"
59+
else:
60+
raise Exception(f"Unknown system {self.system}")
61+
62+
args = [operatingSystem, self.short_description, self.unity]
63+
64+
if self.target_crc32 is not None:
65+
args.append(self.target_crc32)
66+
67+
name_no_ext = "-".join(args)
68+
69+
return f"{name_no_ext}.languagespecificassets"
70+
4971
# List of build variants for any given chapter
5072
#
5173
# There must be a corresponding vanilla sharedassets0.assets file located at:
5274
# assets\vanilla\{CHAPTER_NAME}[-{CRC32}]\{OS}-{UNITY_VERSION}\sharedassets0.assets
5375
# for each entry.
5476
chapter_to_build_variants = {
5577
"onikakushi": [
56-
BuildVariant("onikakushi", "5.2.2f1", "win"),
57-
BuildVariant("onikakushi", "5.2.2f1", "unix"),
78+
BuildVariant("GOG-MG-Steam", "onikakushi", "5.2.2f1", "win", translation_default=True),
79+
BuildVariant("GOG-MG-Steam", "onikakushi", "5.2.2f1", "unix"),
5880
],
5981
"watanagashi": [
60-
BuildVariant("watanagashi", "5.2.2f1", "win"),
61-
BuildVariant("watanagashi", "5.2.2f1", "unix"),
82+
BuildVariant("GOG-MG-Steam", "watanagashi", "5.2.2f1", "win", translation_default=True),
83+
BuildVariant("GOG-MG-Steam", "watanagashi", "5.2.2f1", "unix"),
6284
],
6385
"tatarigoroshi": [
64-
BuildVariant("tatarigoroshi", "5.4.0f1", "win"),
65-
BuildVariant("tatarigoroshi", "5.4.0f1", "unix"),
66-
BuildVariant("tatarigoroshi", "5.3.5f1", "win"),
67-
BuildVariant("tatarigoroshi", "5.3.4p1", "win"),
68-
BuildVariant("tatarigoroshi", "5.3.4p1", "unix"),
86+
BuildVariant("GOG-Steam", "tatarigoroshi", "5.4.0f1", "win", translation_default=True),
87+
BuildVariant("GOG-Steam", "tatarigoroshi", "5.4.0f1", "unix"),
88+
BuildVariant("MG", "tatarigoroshi", "5.3.5f1", "win"),
89+
BuildVariant("Legacy", "tatarigoroshi", "5.3.4p1", "win"),
90+
BuildVariant("MG", "tatarigoroshi", "5.3.4p1", "unix"),
6991
],
7092
"himatsubushi": [
71-
BuildVariant("himatsubushi", "5.4.1f1", "win"),
72-
BuildVariant("himatsubushi", "5.4.1f1", "unix"),
93+
BuildVariant("GOG-MG-Steam", "himatsubushi", "5.4.1f1", "win", translation_default=True),
94+
BuildVariant("GOG-MG-Steam", "himatsubushi", "5.4.1f1", "unix"),
7395
],
7496
"meakashi": [
75-
BuildVariant("meakashi", "5.5.3p3", "win"),
76-
BuildVariant("meakashi", "5.5.3p3", "unix"),
77-
BuildVariant("meakashi", "5.5.3p1", "win"),
78-
BuildVariant("meakashi", "5.5.3p1", "unix"),
97+
BuildVariant("MG-Steam-GOG_old", "meakashi", "5.5.3p3", "win", translation_default=True), #also used by GOG old?
98+
BuildVariant("MG-Steam-GOG_old", "meakashi", "5.5.3p3", "unix"), #also used by GOG old?
99+
BuildVariant("GOG", "meakashi", "5.5.3p1", "win"),
100+
BuildVariant("GOG", "meakashi", "5.5.3p1", "unix"),
79101
],
80102
"tsumihoroboshi": [
81-
BuildVariant("tsumihoroboshi", "5.5.3p3", "win"),
82-
BuildVariant("tsumihoroboshi", "5.5.3p3", "unix"),
103+
BuildVariant("GOG-MG-Steam", "tsumihoroboshi", "5.5.3p3", "win", translation_default=True),
104+
BuildVariant("GOG-MG-Steam", "tsumihoroboshi", "5.5.3p3", "unix"),
83105
# While GOG Windows is ver 5.6.7f1, we actually downgrade back to 5.5.3p3 in the installer, so we don't need this version.
84106
#'tsumihoroboshi 5.6.7f1 win'
85107
],
86108
"minagoroshi": [
87-
BuildVariant("minagoroshi", "5.6.7f1", "win"),
88-
BuildVariant("minagoroshi", "5.6.7f1", "unix"),
109+
BuildVariant("GOG-MG-Steam", "minagoroshi", "5.6.7f1", "win", translation_default=True),
110+
BuildVariant("GOG-MG-Steam", "minagoroshi", "5.6.7f1", "unix"),
89111
# While GOG Windows is ver 5.6.7f1, we actually downgrade back to 5.5.3p3 in the installer, so we don't need this version.
90112
# 'matsuribayashi 5.6.7f1 win'
91113
# 'matsuribayashi 5.6.7f1 unix'
92114
],
93115
"matsuribayashi": [
94-
BuildVariant("matsuribayashi", "2017.2.5", "unix"),
116+
BuildVariant("M_GOG-M_MG-Steam", "matsuribayashi", "2017.2.5", "unix"),
95117
# Special version for GOG/Mangagamer Linux with SHA256:
96118
# A200EC2A85349BC03B59C8E2F106B99ED0CBAAA25FC50928BB8BA2E2AA90FCE9
97119
# CRC32L 51100D6D
98-
BuildVariant("matsuribayashi", "2017.2.5", "unix", "51100D6D"),
99-
BuildVariant("matsuribayashi", "2017.2.5", "win"),
120+
BuildVariant("L_GOG-L_MG", "matsuribayashi", "2017.2.5", "unix", "51100D6D"),
121+
BuildVariant("GOG-MG-Steam", "matsuribayashi", "2017.2.5", "win", translation_default=True),
100122
],
101123
'rei': [
102-
BuildVariant("rei", "2019.4.3", "win"),
103-
BuildVariant("rei", "2019.4.4", "win"),
104-
BuildVariant("rei", "2019.4.3", "unix"),
105-
BuildVariant("rei", "2019.4.4", "unix"),
124+
BuildVariant("GOG-Steam-MG_old", "rei", "2019.4.3", "win", translation_default=True),
125+
BuildVariant("MG", "rei", "2019.4.4", "win"),
126+
BuildVariant("GOG-Steam-MG_old", "rei", "2019.4.3", "unix"),
127+
BuildVariant("MG", "rei", "2019.4.4", "unix"),
106128
],
107129
}
108130

@@ -218,9 +240,11 @@ def save(self):
218240
choices=["all", "github_actions"] + list(chapter_to_build_variants.keys()),
219241
)
220242
parser.add_argument("--force-download", default=False, action='store_true')
243+
parser.add_argument("--translation", default=False, action='store_true')
221244
args = parser.parse_args()
222245

223246
force_download = args.force_download
247+
translation = args.translation
224248

225249
# Get chapter name from git tag if "github_actions" specified as the chapter
226250
chapter_name = args.chapter
@@ -234,7 +258,8 @@ def save(self):
234258

235259
# Get a list of build variants (like 'onikakushi 5.2.2f1 win') depending on commmand line arguments
236260
build_variants = get_build_variants(chapter_name)
237-
print(f"For chapter '{chapter_name}' building: {build_variants}")
261+
build_variants_list = "\n - ".join([b.get_build_command() for b in build_variants])
262+
print(f"For chapter '{chapter_name}' building:\n - {build_variants_list}")
238263

239264
# Install python dependencies
240265
print("Installing python dependencies")
@@ -310,3 +335,15 @@ def save(self):
310335
call(f"cargo run {build_variant.get_build_command()}")
311336
else:
312337
call(f"ui-compiler.exe {build_variant.get_build_command()}")
338+
339+
if translation:
340+
source_sharedassets = os.path.join("output", build_variant.data_dir, "sharedassets0.assets")
341+
translation_data_dir = os.path.join("output/translation", build_variant.data_dir)
342+
destination_sharedassets = os.path.join(translation_data_dir, build_variant.get_translation_sharedassets_name())
343+
344+
os.makedirs(translation_data_dir, exist_ok=True)
345+
shutil.copyfile(source_sharedassets, destination_sharedassets)
346+
347+
if build_variant.translation_default:
348+
destination_default_sharedassets = os.path.join(translation_data_dir, "sharedassets0.assets")
349+
shutil.copyfile(source_sharedassets, destination_default_sharedassets)

0 commit comments

Comments
 (0)