Skip to content

Commit d09adb0

Browse files
authored
Merge pull request #1670 from heinezen/feature/changelog_update
Check for outdated modpacks on startup
2 parents 641127f + 9d8641e commit d09adb0

23 files changed

+355
-220
lines changed

cfg/converter/games/game_editions.toml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ expansions = []
3737
"C:/Program Files (x86)/Microsoft Games/Age of Empires II",
3838
]
3939

40+
[AOC.targetmods.aoe2_base]
41+
version = "0.5.1"
42+
versionstr = "1.0c"
43+
min_api_version = "0.5.0"
44+
4045

4146
[AOCDEMO]
4247
name = "Age of Empires 2: The Conqueror's Trial Version"
@@ -57,6 +62,12 @@ expansions = []
5762
terrain = ["data/Terrain.drs"]
5863
blend = ["data/blendomatic.dat"]
5964

65+
[AOCDEMO.targetmods.trial_base]
66+
version = "0.5.1"
67+
versionstr = "Trial"
68+
min_api_version = "0.5.0"
69+
70+
6071
[AOK]
6172
name = "Age of Empires 2: Age of Kings"
6273
game_edition_id = "AOK"
@@ -90,6 +101,8 @@ expansions = []
90101
"C:/Program Files (x86)/Microsoft Games/Age of Empires II",
91102
]
92103

104+
[AOK.targetmods]
105+
93106

94107
[AOE1DE]
95108
name = "Age of Empires 1: Definitive Edition (Steam)"
@@ -131,6 +144,11 @@ expansions = []
131144
"C:/Program Files (x86)/Steam/steamapps/common/AoEDE",
132145
]
133146

147+
[AOE1DE.targetmods.de1_base]
148+
version = "0.5.1"
149+
versionstr = "1.0a"
150+
min_api_version = "0.5.0"
151+
134152

135153
[ROR]
136154
name = "Age of Empires 1: Rise of Rome"
@@ -166,6 +184,11 @@ expansions = []
166184
"C:/Program Files (x86)/Microsoft Games/Age of Empires",
167185
]
168186

187+
[ROR.targetmods.aoe1_base]
188+
version = "0.5.1"
189+
versionstr = "1.0a"
190+
min_api_version = "0.5.0"
191+
169192

170193
[HDEDITION]
171194
name = "Age of Empires 2: HD Edition"
@@ -205,6 +228,11 @@ expansions = []
205228
"C:/Program Files (x86)/Steam/steamapps/common/Age2HD",
206229
]
207230

231+
[HDEDITION.targetmods.hd_base]
232+
version = "0.5.1"
233+
versionstr = "5.8"
234+
min_api_version = "0.5.0"
235+
208236

209237
[AOE2DE]
210238
name = "Age of Empires 2: Definitive Edition"
@@ -249,6 +277,11 @@ expansions = []
249277
"C:/Program Files (x86)/Steam/steamapps/common/AoE2DE",
250278
]
251279

280+
[AOE2DE.targetmods.de2_base]
281+
version = "0.6.0"
282+
versionstr = "Update 118476+"
283+
min_api_version = "0.5.0"
284+
252285

253286
[SWGB]
254287
name = "Star Wars: Galactic Battlegrounds"
@@ -285,3 +318,8 @@ expansions = ["SWGB_CC"]
285318
"C:/Program Files (x86)/Steam/steamapps/common/STAR WARS - Galactic Battlegrounds Saga",
286319
"C:/Program Files/Steam/steamapps/common/STAR WARS - Galactic Battlegrounds Saga",
287320
]
321+
322+
[SWGB.targetmods.swgb_base]
323+
version = "0.5.1"
324+
versionstr = "1.1-gog4"
325+
min_api_version = "0.5.0"

cfg/converter/games/game_expansions.toml

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,36 @@
33
file_version = "1.0"
44

55
[AFRI_KING]
6-
name = "African Kingdoms (HD)"
6+
name = "African Kingdoms (HD)"
77
game_edition_id = "AFRI_KING"
8-
subfolder = "hd_ak"
9-
support = "nope"
10-
targetmod = [ "aoe2-ak", "aoe2-ak-graphics" ]
8+
subfolder = "hd_ak"
9+
support = "nope"
10+
targetmod = ["aoe2-ak", "aoe2-ak-graphics"]
1111

1212
[AFRI_KING.mediapaths]
13-
graphics = [ "resources/_common/slp/" ]
14-
sounds = [ "resources/_common/sound/" ]
15-
interface = [ "resources/_common/drs/interface/" ]
16-
terrain = [ "resources/_common/terrain/" ]
13+
graphics = ["resources/_common/slp/"]
14+
sounds = ["resources/_common/sound/"]
15+
interface = ["resources/_common/drs/interface/"]
16+
terrain = ["resources/_common/terrain/"]
17+
18+
[AFRI_KING.targetmods]
19+
1720

1821
[SWGB_CC]
19-
name = "Clone Campaigns"
22+
name = "Clone Campaigns"
2023
game_edition_id = "SWGB_CC"
21-
subfolder = "swgb_cc"
22-
support = "yes"
23-
targetmod = [ "swgb-cc", "swgb-cc-graphics" ]
24+
subfolder = "swgb_cc"
25+
support = "yes"
26+
targetmod = ["swgb-cc", "swgb-cc-graphics"]
2427

2528
[SWGB_CC.mediapaths]
26-
datfile = [ "Game/Data/genie_x1.dat" ]
27-
gamedata = [ "Game/Data/genie_x1.dat" ]
28-
graphics = [ "Game/Data/graphics_x1.drs" ]
29-
language = [ "Game/language_x1.dll" ]
30-
palettes = [ "Game/Data/interfac_x1.drs" ]
31-
sounds = [ "Game/Data/sounds_x1.drs" ]
32-
interface = [ "Game/Data/interfac_x1.drs" ]
33-
terrain = [ "Game/Data/terrain_x1.drs" ]
29+
datfile = ["Game/Data/genie_x1.dat"]
30+
gamedata = ["Game/Data/genie_x1.dat"]
31+
graphics = ["Game/Data/graphics_x1.drs"]
32+
language = ["Game/language_x1.dll"]
33+
palettes = ["Game/Data/interfac_x1.drs"]
34+
sounds = ["Game/Data/sounds_x1.drs"]
35+
interface = ["Game/Data/interfac_x1.drs"]
36+
terrain = ["Game/Data/terrain_x1.drs"]
37+
38+
[SWGB_CC.targetmods]

openage/convert/main.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@
1515
from ..util.fslike.wrapper import (DirectoryCreator,
1616
Synchronizer as AccessSynchronizer)
1717
from .service.debug_info import debug_cli_args, debug_game_version, debug_mounts
18-
from .service.init.conversion_required import conversion_required
18+
from .service.init.changelog import check_updates
19+
from .service.init.modpack_search import enumerate_modpacks
1920
from .service.init.mount_asset_dirs import mount_asset_dirs
2021
from .service.init.version_detect import create_version_objects
2122
from .tool.interactive import interactive_browser
22-
from .tool.subtool.acquire_sourcedir import acquire_conversion_source_dir, wanna_convert
23+
from .tool.subtool.acquire_sourcedir import acquire_conversion_source_dir, wanna_convert, \
24+
wanna_check_updates
2325
from .tool.subtool.version_select import get_game_version
2426

2527
if typing.TYPE_CHECKING:
@@ -238,6 +240,16 @@ def init_subparser(cli: ArgumentParser):
238240
"--export-api", action='store_true',
239241
help="Export the openage nyan API definition as a modpack")
240242

243+
cli.add_argument(
244+
"--check-updates", action='store_true',
245+
help="Check if the assets are up to date"
246+
)
247+
248+
cli.add_argument(
249+
"--no-prompts", action='store_false', dest='show_prompts',
250+
help="Disable user prompts"
251+
)
252+
241253

242254
def main(args, error):
243255
""" CLI entry point """
@@ -268,11 +280,16 @@ def main(args, error):
268280
from ..assets import get_asset_path
269281
outdir = get_asset_path(args.output_dir)
270282

271-
if args.force or wanna_convert() or conversion_required(outdir):
283+
if args.force or (args.show_prompts and wanna_convert()):
272284
convert_assets(outdir, args, srcdir)
273285

274-
else:
275-
print("assets are up to date; no conversion is required.")
276-
print("override with --force.")
286+
if args.check_updates or (args.show_prompts and wanna_check_updates()):
287+
# check if the assets are up to date
288+
modpack_dir = outdir / "converted"
289+
available_modpacks = enumerate_modpacks(modpack_dir, exclude={"engine"})
290+
291+
game_info_dir = args.cfg_dir / "converter" / "games"
292+
293+
check_updates(available_modpacks, game_info_dir)
277294

278295
return 0

openage/convert/processor/conversion/aoc/modpack_subprocessor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,10 @@ def _get_aoe2_base(cls, full_data_set: GenieObjectContainer) -> Modpack:
4444

4545
mod_def = modpack.get_info()
4646

47-
mod_def.set_info("aoe2_base", "0.5.1", versionstr="1.0c", repo="openage")
47+
targetmod_info = full_data_set.game_version.edition.target_modpacks["aoe2_base"]
48+
version = targetmod_info["version"]
49+
versionstr = targetmod_info["versionstr"]
50+
mod_def.set_info("aoe2_base", version, versionstr=versionstr, repo="openage")
4851

4952
mod_def.add_include("data/**")
5053

openage/convert/processor/conversion/aoc_demo/modpack_subprocessor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2023-2023 the openage authors. See copying.md for legal info.
1+
# Copyright 2023-2024 the openage authors. See copying.md for legal info.
22
#
33
# pylint: disable=too-few-public-methods
44

@@ -40,7 +40,10 @@ def _get_demo_base(cls, full_data_set: GenieObjectContainer) -> Modpack:
4040

4141
mod_def = modpack.get_info()
4242

43-
mod_def.set_info("trial_base", "0.5.1", versionstr="Trial", repo="openage")
43+
targetmod_info = full_data_set.game_version.edition.target_modpacks["trial_base"]
44+
version = targetmod_info["version"]
45+
versionstr = targetmod_info["versionstr"]
46+
mod_def.set_info("trial_base", version, versionstr=versionstr, repo="openage")
4447

4548
mod_def.add_include("data/**")
4649

openage/convert/processor/conversion/de1/modpack_subprocessor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2023-2023 the openage authors. See copying.md for legal info.
1+
# Copyright 2023-2024 the openage authors. See copying.md for legal info.
22
#
33
# pylint: disable=too-few-public-methods
44

@@ -40,7 +40,10 @@ def _get_aoe1_base(cls, full_data_set: GenieObjectContainer) -> Modpack:
4040

4141
mod_def = modpack.get_info()
4242

43-
mod_def.set_info("de1_base", "0.5.1", versionstr="1.0a", repo="openage")
43+
targetmod_info = full_data_set.game_version.edition.target_modpacks["de1_base"]
44+
version = targetmod_info["version"]
45+
versionstr = targetmod_info["versionstr"]
46+
mod_def.set_info("de1_base", version, versionstr=versionstr, repo="openage")
4447

4548
mod_def.add_include("data/**")
4649

openage/convert/processor/conversion/de2/modpack_subprocessor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,10 @@ def _get_aoe2_base(cls, full_data_set: GenieObjectContainer) -> Modpack:
4040

4141
mod_def = modpack.get_info()
4242

43-
mod_def.set_info("de2_base", "0.6.0", versionstr="Update 118476+", repo="openage")
43+
targetmod_info = full_data_set.game_version.edition.target_modpacks["de2_base"]
44+
version = targetmod_info["version"]
45+
versionstr = targetmod_info["versionstr"]
46+
mod_def.set_info("de2_base", version, versionstr=versionstr, repo="openage")
4447

4548
mod_def.add_include("data/**")
4649

openage/convert/processor/conversion/hd/modpack_subprocessor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2021-2023 the openage authors. See copying.md for legal info.
1+
# Copyright 2021-2024 the openage authors. See copying.md for legal info.
22
#
33
# pylint: disable=too-few-public-methods
44

@@ -40,7 +40,10 @@ def _get_aoe2_base(cls, full_data_set: GenieObjectContainer) -> Modpack:
4040

4141
mod_def = modpack.get_info()
4242

43-
mod_def.set_info("hd_base", "0.5.1", versionstr="5.8", repo="openage")
43+
targetmod_info = full_data_set.game_version.edition.target_modpacks["hd_base"]
44+
version = targetmod_info["version"]
45+
versionstr = targetmod_info["versionstr"]
46+
mod_def.set_info("hd_base", version, versionstr=versionstr, repo="openage")
4447

4548
mod_def.add_include("data/**")
4649

openage/convert/processor/conversion/ror/modpack_subprocessor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2020-2023 the openage authors. See copying.md for legal info.
1+
# Copyright 2020-2024 the openage authors. See copying.md for legal info.
22
#
33
# pylint: disable=too-few-public-methods
44

@@ -41,7 +41,10 @@ def _get_aoe1_base(cls, full_data_set: GenieObjectContainer) -> Modpack:
4141

4242
mod_def = modpack.get_info()
4343

44-
mod_def.set_info("aoe1_base", "0.5.1", versionstr="1.0a", repo="openage")
44+
targetmod_info = full_data_set.game_version.edition.target_modpacks["aoe1_base"]
45+
version = targetmod_info["version"]
46+
versionstr = targetmod_info["versionstr"]
47+
mod_def.set_info("aoe1_base", version, versionstr=versionstr, repo="openage")
4548

4649
mod_def.add_include("data/**")
4750

openage/convert/processor/conversion/swgbcc/modpack_subprocessor.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2020-2023 the openage authors. See copying.md for legal info.
1+
# Copyright 2020-2024 the openage authors. See copying.md for legal info.
22
#
33
# pylint: disable=too-few-public-methods
44

@@ -40,7 +40,10 @@ def _get_swgb_base(cls, full_data_set: GenieObjectContainer) -> Modpack:
4040

4141
mod_def = modpack.get_info()
4242

43-
mod_def.set_info("swgb_base", "0.5.1", versionstr="1.1-gog4", repo="openage")
43+
targetmod_info = full_data_set.game_version.edition.target_modpacks["swgb_base"]
44+
version = targetmod_info["version"]
45+
versionstr = targetmod_info["versionstr"]
46+
mod_def.set_info("swgb_base", version, versionstr=versionstr, repo="openage")
4447

4548
mod_def.add_include("data/**")
4649

0 commit comments

Comments
 (0)