LADX: Add --no-magpie argument for disabling magpie bridge (#1788)

This commit is contained in:
Cybrou 2023-05-20 15:30:33 +02:00 committed by GitHub
parent 5255bc5cd8
commit f474b81f40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 16 deletions

View File

@ -438,12 +438,16 @@ class LinksAwakeningContext(CommonContext):
found_checks = [] found_checks = []
last_resend = time.time() last_resend = time.time()
magpie = MagpieBridge() magpie_enabled = False
magpie = None
magpie_task = None magpie_task = None
won = False won = False
def __init__(self, server_address: typing.Optional[str], password: typing.Optional[str]) -> None: def __init__(self, server_address: typing.Optional[str], password: typing.Optional[str], magpie: typing.Optional[bool]) -> None:
self.client = LinksAwakeningClient() self.client = LinksAwakeningClient()
if magpie:
self.magpie_enabled = True
self.magpie = MagpieBridge()
super().__init__(server_address, password) super().__init__(server_address, password)
def run_gui(self) -> None: def run_gui(self) -> None:
@ -462,16 +466,17 @@ class LinksAwakeningContext(CommonContext):
def build(self): def build(self):
b = super().build() b = super().build()
button = Button(text="", size=(30, 30), size_hint_x=None, if self.ctx.magpie_enabled:
on_press=lambda _: webbrowser.open('https://magpietracker.us/?enable_autotracker=1')) button = Button(text="", size=(30, 30), size_hint_x=None,
image = Image(size=(16, 16), texture=magpie_logo()) on_press=lambda _: webbrowser.open('https://magpietracker.us/?enable_autotracker=1'))
button.add_widget(image) image = Image(size=(16, 16), texture=magpie_logo())
button.add_widget(image)
def set_center(_, center): def set_center(_, center):
image.center = center image.center = center
button.bind(center=set_center) button.bind(center=set_center)
self.connect_layout.add_widget(button) self.connect_layout.add_widget(button)
return b return b
self.ui = LADXManager(self) self.ui = LADXManager(self)
@ -506,7 +511,8 @@ class LinksAwakeningContext(CommonContext):
def new_checks(self, item_ids, ladxr_ids): def new_checks(self, item_ids, ladxr_ids):
self.found_checks += item_ids self.found_checks += item_ids
create_task_log_exception(self.send_checks()) create_task_log_exception(self.send_checks())
create_task_log_exception(self.magpie.send_new_checks(ladxr_ids)) if self.magpie_enabled:
create_task_log_exception(self.magpie.send_new_checks(ladxr_ids))
async def server_auth(self, password_requested: bool = False): async def server_auth(self, password_requested: bool = False):
if password_requested and not self.password: if password_requested and not self.password:
@ -537,7 +543,8 @@ class LinksAwakeningContext(CommonContext):
async def deathlink(): async def deathlink():
await self.send_deathlink() await self.send_deathlink()
self.magpie_task = asyncio.create_task(self.magpie.serve()) if self.magpie_enabled:
self.magpie_task = asyncio.create_task(self.magpie.serve())
# yield to allow UI to start # yield to allow UI to start
await asyncio.sleep(0) await asyncio.sleep(0)
@ -558,9 +565,10 @@ class LinksAwakeningContext(CommonContext):
if self.last_resend + 5.0 < now: if self.last_resend + 5.0 < now:
self.last_resend = now self.last_resend = now
await self.send_checks() await self.send_checks()
self.magpie.set_checks(self.client.tracker.all_checks) if self.magpie_enabled:
await self.magpie.set_item_tracker(self.client.item_tracker) self.magpie.set_checks(self.client.tracker.all_checks)
await self.magpie.send_gps(self.client.gps_tracker) await self.magpie.set_item_tracker(self.client.item_tracker)
await self.magpie.send_gps(self.client.gps_tracker)
except GameboyException: except GameboyException:
time.sleep(1.0) time.sleep(1.0)
@ -570,9 +578,11 @@ class LinksAwakeningContext(CommonContext):
async def main(): async def main():
parser = get_base_parser(description="Link's Awakening Client.") parser = get_base_parser(description="Link's Awakening Client.")
parser.add_argument("--url", help="Archipelago connection url") parser.add_argument("--url", help="Archipelago connection url")
parser.add_argument("--no-magpie", dest='magpie', default=True, action='store_false', help="Disable magpie bridge")
parser.add_argument('diff_file', default="", type=str, nargs="?", parser.add_argument('diff_file', default="", type=str, nargs="?",
help='Path to a .apladx Archipelago Binary Patch file') help='Path to a .apladx Archipelago Binary Patch file')
args = parser.parse_args() args = parser.parse_args()
logger.info(args) logger.info(args)
@ -590,7 +600,7 @@ async def main():
if url.password: if url.password:
args.password = urllib.parse.unquote(url.password) args.password = urllib.parse.unquote(url.password)
ctx = LinksAwakeningContext(args.connect, args.password) ctx = LinksAwakeningContext(args.connect, args.password, args.magpie)
ctx.server_task = asyncio.create_task(server_loop(ctx), name="server loop") ctx.server_task = asyncio.create_task(server_loop(ctx), name="server loop")