Check Enemizer version

This commit is contained in:
Fabian Dill 2020-07-11 00:52:49 +02:00
parent f27d9e904f
commit d4f296835c
3 changed files with 40 additions and 2 deletions

31
Rom.py
View File

@ -145,7 +145,38 @@ def read_rom(stream) -> bytearray:
buffer = buffer[0x200:]
return buffer
def check_enemizer(enemizercli):
if getattr(check_enemizer, "done", None):
return
if not os.path.exists(enemizercli) and not os.path.exists(enemizercli + ".exe"):
raise Exception(f"Enemizer not found at {enemizercli}, please install a multiworld fork of Enemizer. "
f"Such as https://github.com/Ijwu/Enemizer/releases")
if sys.platform == "win32":
try:
import pythoncom
from win32com.client import Dispatch
except ImportError:
logging.info("Could not check Enemizer Version info as pywin32 bindings are missing.")
else:
# version info is saved on the lib, for some reason
library = os.path.join(os.path.dirname(enemizercli), "EnemizerLibrary.dll")
pythoncom.CoInitialize()
ver_parser = Dispatch('Scripting.FileSystemObject')
info = ver_parser.GetFileVersion(library)
if info == 'No Version Information Available':
info = None
version = tuple(int(part) for part in info.split("."))
if version < (6, 1, 0, 179):
raise Exception(
f"Enemizer found at {enemizercli} is outdated ({info}), please install a multiworld fork of Enemizer. "
f"Such as https://github.com/Ijwu/Enemizer/releases")
check_enemizer.done = True
def patch_enemizer(world, player: int, rom: LocalRom, enemizercli, random_sprite_on_hit):
check_enemizer(enemizercli)
randopatch_path = os.path.abspath(output_path(f'enemizer_randopatch_{player}.sfc'))
options_path = os.path.abspath(output_path(f'enemizer_options_{player}.json'))
enemizer_output_path = os.path.abspath(output_path(f'enemizer_output_{player}.sfc'))

View File

@ -58,7 +58,7 @@ else: # unix
def launch_room(room: Room, config: dict):
# requires db_session!
if room.last_activity >= datetime.utcnow() - timedelta(minutes=room.timeout):
if room.last_activity >= datetime.utcnow() - timedelta(seconds=room.timeout):
multiworld = multiworlds.get(room.id, None)
if not multiworld:
multiworld = MultiworldInstance(room, config)

View File

@ -17,7 +17,8 @@
</ul>
</nav>
<br>
<div class="container container-fluid">
<div class="container container-fluid d-flex">
<div class="jumbotron jumbotron-fluid">
<div class="container">
<div class="col-md-5 p-lg-2 mx-auto my-2">
@ -40,9 +41,15 @@
<p class="lead">Currently you still require a locally installed client to play, that handles
connecting to the server and patching a vanilla game to the randomized one. Get started on the
<a href="https://github.com/Berserker66/MultiWorld-Utilities/wiki">Wiki</a>.</p>
</div>
</div>
</div>
<div>
<iframe src="https://discordapp.com/widget?id=731205301247803413&theme=light" width="300" height="500"
allowtransparency="true" frameborder="0"></iframe>
</div>
</div>