forked from SilverStudioGames/WTS
Bug fixes and improvements
* Added a separate entry for mods compatibility (saves and mods rarely follow the same upgrade rules anyway) * Improved mods handling by automatically disabling incompatible mods * Fixed a RuntimeError caused by changing set size during iteration
This commit is contained in:
parent
ceb4678b36
commit
76cad4f443
@ -7,6 +7,8 @@ init -999:
|
||||
persistent.mods_enabled = _set()
|
||||
|
||||
mods_list = _dict()
|
||||
mods_incompatible = _set()
|
||||
mods_compatible = 1.45 # Hardcoded due to initalization offset
|
||||
|
||||
def mods_import():
|
||||
global mods_list
|
||||
@ -45,7 +47,16 @@ init -999:
|
||||
return
|
||||
|
||||
def mods_init():
|
||||
for i in persistent.mods_enabled:
|
||||
global mods_incompatible
|
||||
for i in persistent.mods_enabled.copy():
|
||||
control, major, *minor = mods_list[i]["GameVer"].split(" ")[0].split(".")
|
||||
ver = float("{}.{}{}".format(control, major, "".join(minor)))
|
||||
|
||||
if ver < mods_compatible:
|
||||
persistent.mods_enabled.remove(i)
|
||||
mods_incompatible.add(i)
|
||||
continue
|
||||
|
||||
for j in mods_list[i]["Scripts"]:
|
||||
name = os.path.splitext(j)[0]
|
||||
|
||||
@ -55,6 +66,8 @@ init -999:
|
||||
if config.developer:
|
||||
renpy.error(e)
|
||||
persistent.mods_enabled.remove(i)
|
||||
mods_incompatible.add(i)
|
||||
|
||||
|
||||
mods_import()
|
||||
mods_init()
|
||||
|
@ -370,4 +370,10 @@ label before_main_menu():
|
||||
python:
|
||||
if settings.get("updates") and not prerelease:
|
||||
CheckUpdates(onetime=True, autostart=False)()
|
||||
|
||||
if mods_incompatible:
|
||||
$ mods = "\n".join(mods_incompatible)
|
||||
|
||||
call modal_popup("Attention!", "The listed mods are incompatible and have been deactivated:\n" + mods, "interface/warning.webp")
|
||||
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user