From 0992087e9ad2202eb98974b149a5b0ac9de46942 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Tue, 30 Nov 2021 06:09:40 +0100 Subject: [PATCH] MultiServer: add not found to !hint response and color found text Clients: text parsing fixes --- NetUtils.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/NetUtils.py b/NetUtils.py index d4f90b2a..bdf01c38 100644 --- a/NetUtils.py +++ b/NetUtils.py @@ -1,4 +1,6 @@ from __future__ import annotations + +import logging import typing import enum from json import JSONEncoder, JSONDecoder @@ -138,11 +140,11 @@ class HandlerMeta(type): break def __init__(self, *args, **kwargs): + if orig_init: + orig_init(self, *args, **kwargs) # turn functions into bound methods self.handlers = {name: method.__get__(self, type(self)) for name, method in handlers.items()} - if orig_init: - orig_init(self, *args, **kwargs) attrs['__init__'] = __init__ return super(HandlerMeta, mcs).__new__(mcs, name, bases, attrs) @@ -192,11 +194,7 @@ class JSONtoTextParser(metaclass=HandlerMeta): return self._handle_color(node) def _handle_item_name(self, node: JSONMessagePart): - # todo: use a better info source - from worlds.alttp.Items import progression_items - node["color"] = 'green' if node.get("found", False) else 'cyan' - if node["text"] in progression_items: - node["color"] += ";white_bg" + node["color"] = 'cyan' return self._handle_color(node) def _handle_item_id(self, node: JSONMessagePart): @@ -205,13 +203,13 @@ class JSONtoTextParser(metaclass=HandlerMeta): return self._handle_item_name(node) def _handle_location_name(self, node: JSONMessagePart): - node["color"] = 'blue_bg;white' + node["color"] = 'green' return self._handle_color(node) def _handle_location_id(self, node: JSONMessagePart): item_id = int(node["text"]) node["text"] = self.ctx.location_name_getter(item_id) - return self._handle_item_name(node) + return self._handle_location_name(node) def _handle_entrance_name(self, node: JSONMessagePart): node["color"] = 'blue' @@ -283,9 +281,11 @@ class Hint(typing.NamedTuple): else: add_json_text(parts, "'s World") if self.found: - add_json_text(parts, ". (found)") + add_json_text(parts, ". ") + add_json_text(parts, "(found)", type="color", color="green") else: - add_json_text(parts, ".") + add_json_text(parts, ". ") + add_json_text(parts, "(not found)", type="color", color="red") return {"cmd": "PrintJSON", "data": parts, "type": "Hint", "receiving": self.receiving_player,