Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 41 additions & 10 deletions worlds/jakanddaxter/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,20 @@
# Archipelago imports
import ModuleUpdate
import Utils
from CommonClient import ClientCommandProcessor, CommonContext, server_loop, gui_enabled
from NetUtils import ClientStatus
from PyMemoryEditor import OpenProcess, ProcessNotFoundError
from CommonClient import server_loop, gui_enabled

tracker_loaded = False
try:
from worlds.tracker.TrackerClient import (
TrackerCommandProcessor as ClientCommandProcessor,
TrackerGameContext as CommonContext,
UT_VERSION,
)
tracker_loaded = True
except ImportError:
from CommonClient import ClientCommandProcessor, CommonContext

# Jak imports
from .game_id import jak1_name, jak1_gk, jak1_goalc
Expand Down Expand Up @@ -116,17 +127,32 @@ def __init__(self, server_address: str | None, password: str | None) -> None:
# self.memr.load_data()
super().__init__(server_address, password)

def run_gui(self):
from kvui import GameManager
def run_generator(self):
if tracker_loaded:
super().run_generator()

def make_gui(self):
manager_class = super().make_gui()

manager_class.logging_pairs = [
("Client", "Archipelago")
]
title = "Jak and Daxter ArchipelaGOAL Client"

class JakAndDaxterManager(GameManager):
logging_pairs = [
("Client", "Archipelago")
]
base_title = "Jak and Daxter ArchipelaGOAL Client"
if tracker_loaded:
title += f" | Universal Tracker {UT_VERSION}"
title += " | Archipelago"
manager_class.base_title = title

self.ui = JakAndDaxterManager(self)
self.ui_task = asyncio.create_task(self.ui.async_run(), name="UI")
return manager_class

def run_gui(self):
ui_class = self.make_gui()
self.ui = ui_class(self)
self.ui_task = asyncio.create_task(
self.ui.async_run(),
name="UI"
)

async def server_auth(self, password_requested: bool = False):
if password_requested and not self.password:
Expand All @@ -146,6 +172,7 @@ async def disconnect(self, allow_autoreconnect: bool = False):
await super(JakAndDaxterContext, self).disconnect(allow_autoreconnect)

def on_package(self, cmd: str, args: dict):
super().on_package(cmd, args)

if cmd == "RoomInfo":
self.slot_seed = args["seed_name"]
Expand Down Expand Up @@ -672,6 +699,10 @@ async def main():
Utils.init_logging("JakAndDaxterClient", exception_logger="Client")

ctx = JakAndDaxterContext(None, None)
if tracker_loaded:
ctx.run_generator()
ctx.tags.discard("Tracker")

ctx.server_task = asyncio.create_task(server_loop(ctx), name="server loop")
ctx.repl_task = create_task_log_exception(ctx.run_repl_loop())
ctx.memr_task = create_task_log_exception(ctx.run_memr_loop())
Expand Down
Loading