Add route profile patrol selection

This commit is contained in:
王鹏
2026-05-12 17:09:19 +08:00
parent 0d493ee180
commit 2a4684e700
6 changed files with 1462 additions and 185 deletions

View File

@@ -2,6 +2,7 @@ import math
import time
from hardware_control import hw_ctrl
from route_profile import normalize_route_list
class DeathManager:
@@ -13,16 +14,19 @@ class DeathManager:
resurrection_waypoints_path=None,
resurrection_route_a_path=None,
resurrection_route_b_path=None,
resurrection_routes=None,
release_spirit_key='9',
resurrect_key='0',
):
self.patrol_system = patrol_system
self.release_spirit_key = str(release_spirit_key).strip() or '9'
self.resurrect_key = str(resurrect_key).strip() or '0'
self.resurrection_route_a = self._load_waypoints(
resurrection_route_a_path or resurrection_waypoints_path
self.resurrection_routes = self._load_resurrection_routes(
resurrection_routes,
resurrection_waypoints_path=resurrection_waypoints_path,
resurrection_route_a_path=resurrection_route_a_path,
resurrection_route_b_path=resurrection_route_b_path,
)
self.resurrection_route_b = self._load_waypoints(resurrection_route_b_path)
self.corpse_pos = None
self.graveyard_pos = None
@@ -53,6 +57,29 @@ class DeathManager:
pass
return None
def _load_resurrection_routes(
self,
resurrection_routes=None,
resurrection_waypoints_path=None,
resurrection_route_a_path=None,
resurrection_route_b_path=None,
):
routes = []
for route in normalize_route_list(resurrection_routes, "复活路线"):
routes.append((route["name"], route["points"]))
if routes:
return routes
legacy_routes = [
("A", resurrection_route_a_path or resurrection_waypoints_path),
("B", resurrection_route_b_path),
]
for name, path in legacy_routes:
points = self._load_waypoints(path)
if points:
routes.append((name, points))
return routes
def _clear_death_run_state(self):
self.graveyard_pos = None
self.selected_resurrection_route = None
@@ -61,12 +88,7 @@ class DeathManager:
self._resurrection_completed = False
def _build_resurrection_route_candidates(self):
candidates = []
if self.resurrection_route_a:
candidates.append(("A", self.resurrection_route_a))
if self.resurrection_route_b:
candidates.append(("B", self.resurrection_route_b))
return candidates
return list(self.resurrection_routes)
def _record_graveyard_pos(self, state):
if self.graveyard_pos is not None: