From 0e55bb58e2aa2480265c6d9718247cfbef05de87 Mon Sep 17 00:00:00 2001 From: LmeSzinc <37934724+LmeSzinc@users.noreply.github.com> Date: Mon, 2 Oct 2023 17:14:33 +0800 Subject: [PATCH] Add: Support rogue specific planes --- dev_tools/route_extract.py | 2 +- tasks/map/resource/resource.py | 15 +++++++++++++-- tasks/rogue/route/loader.py | 14 +++++++++++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/dev_tools/route_extract.py b/dev_tools/route_extract.py index f7b52afca..16f2f47f9 100644 --- a/dev_tools/route_extract.py +++ b/dev_tools/route_extract.py @@ -121,7 +121,7 @@ class RouteDetect: @cached_property def detector(self): - from tasks.map.minimap.brute_force import MinimapWrapper + from tasks.rogue.route.loader import MinimapWrapper return MinimapWrapper() def get_minimap(self, route: RogueWaypointModel): diff --git a/tasks/map/resource/resource.py b/tasks/map/resource/resource.py index 12e95f0f7..faeaebe79 100644 --- a/tasks/map/resource/resource.py +++ b/tasks/map/resource/resource.py @@ -12,8 +12,14 @@ from tasks.map.minimap.utils import create_circular_mask from tasks.map.resource.const import ResourceConst from tasks.map.keywords import KEYWORDS_MAP_PLANE, MapPlane +SPECIAL_PLANES = [ + ('Luofu_StargazerNavalia', 'F2Rogue') +] + class MapResource(ResourceConst): + is_special_plane: bool + def __init__(self): super().__init__() @@ -51,8 +57,13 @@ class MapResource(ResourceConst): plane (MapPlane, str): Such as Jarilo_AdministrativeDistrict floor (str): """ - self.plane = MapPlane.find(plane) - self.floor = self.plane.convert_to_floor_name(floor) + self.plane: MapPlane = MapPlane.find(plane) + if (self.plane.name, floor) in SPECIAL_PLANES: + self.floor = floor + self.is_special_plane = True + else: + self.floor = self.plane.convert_to_floor_name(floor) + self.is_special_plane = False del_cached_property(self, 'assets_file_basename') del_cached_property(self, 'assets_floor') diff --git a/tasks/rogue/route/loader.py b/tasks/rogue/route/loader.py index d1196b4e2..159eef73c 100644 --- a/tasks/rogue/route/loader.py +++ b/tasks/rogue/route/loader.py @@ -12,6 +12,7 @@ from tasks.map.keywords.plane import ( Luofu_ExaltingSanctum ) from tasks.map.minimap.minimap import Minimap +from tasks.map.resource.resource import SPECIAL_PLANES from tasks.map.route.loader import RouteLoader as RouteLoader_ from tasks.rogue.route.base import RouteBase from tasks.rogue.route.model import RogueRouteListModel, RogueRouteModel @@ -24,7 +25,7 @@ def model_from_json(model, file: str): return data -class RouteLoader(RouteLoader_, MainPage): +class MinimapWrapper: @cached_property def all_minimap(self) -> dict[(str, str), Minimap]: """ @@ -50,6 +51,12 @@ class RouteLoader(RouteLoader_, MainPage): minimap = Minimap() minimap.set_plane(plane=plane, floor=floor) maps[f'{plane.name}_{floor}'] = minimap + + for plane, floor in SPECIAL_PLANES: + minimap = Minimap() + minimap.set_plane(plane=plane, floor=floor) + maps[f'{plane}_{floor}'] = minimap + return maps @cached_property @@ -59,6 +66,8 @@ class RouteLoader(RouteLoader_, MainPage): def get_minimap(self, route: RogueRouteModel): return self.all_minimap[route.plane_floor] + +class RouteLoader(MinimapWrapper, RouteLoader_, MainPage): def position_find_known(self, image) -> Optional[RogueRouteModel]: """ Try to find from known route spawn point @@ -107,6 +116,9 @@ class RouteLoader(RouteLoader_, MainPage): """ logger.warning('position_find_bruteforce, this may take a while') for name, minimap in self.all_minimap.items(): + if minimap.is_special_plane: + continue + minimap.init_position((0, 0), show_log=False) try: minimap.update_position(image)