Files
kttd/maneuvers/__init__.py
2023-08-29 01:01:24 +02:00

51 lines
1.2 KiB
Python

from enum import Enum
class ManeuverAlarmType(Enum):
ManeuverNode = 1,
SOI = 2
class Maneuver:
def __init__(self, conn, vessel):
self.vessel = vessel
self.conn = conn
def plan_next_maneuver(self, conn):
pass
class NodeManeuver(Maneuver):
alarm_type = ManeuverAlarmType.ManeuverNode
def __init__(self, conn, vessel):
super().__init__(conn, vessel)
self.mech_jeb = conn.mech_jeb
self.node_executor = self.mech_jeb.node_executor
def execute(self) -> bool:
sc = self.conn.space_center
if sc.active_vessel.name != self.vessel.name:
sc.active_vessel = self.vessel
while self.vessel.control.nodes:
self._execute_node()
return self.plan_next_maneuver()
def _execute_node(self):
self.node_executor.execute_all_nodes()
with self.conn.stream(getattr, self.node_executor, "enabled") as enabled:
enabled.rate = 1
with enabled.condition:
while enabled():
enabled.wait()
class MechJebManeuver(NodeManeuver):
def __init__(self, conn, vessel):
super().__init__(conn, vessel)
self.maneuver_planner = self.mech_jeb.maneuver_planner