diff --git a/game/squadrons/airwing.py b/game/squadrons/airwing.py index 74ad5f83..f174a132 100644 --- a/game/squadrons/airwing.py +++ b/game/squadrons/airwing.py @@ -19,7 +19,6 @@ class AirWing: self.squadrons: dict[AircraftType, list[Squadron]] = defaultdict(list) def add_squadron(self, squadron: Squadron) -> None: - squadron.location.squadrons.append(squadron) self.squadrons[squadron.aircraft].append(squadron) def squadrons_for(self, aircraft: AircraftType) -> Sequence[Squadron]: diff --git a/game/squadrons/squadron.py b/game/squadrons/squadron.py index b5169d26..993a7c07 100644 --- a/game/squadrons/squadron.py +++ b/game/squadrons/squadron.py @@ -82,9 +82,7 @@ class Squadron: return self.coalition.player def assign_to_base(self, base: ControlPoint) -> None: - self.location.squadrons.remove(self) self.location = base - self.location.squadrons.append(self) logging.debug(f"Assigned {self} to {base}") @property diff --git a/game/theater/controlpoint.py b/game/theater/controlpoint.py index ef7aa594..ecaf7e4a 100644 --- a/game/theater/controlpoint.py +++ b/game/theater/controlpoint.py @@ -325,8 +325,6 @@ class ControlPoint(MissionTarget, ABC): self.target_position: Optional[Point] = None - self.squadrons: list[Squadron] = [] - def __repr__(self) -> str: return f"<{self.__class__}: {self.name}>" @@ -348,6 +346,12 @@ class ControlPoint(MissionTarget, ABC): def ground_objects(self) -> List[TheaterGroundObject[Any]]: return list(self.connected_objectives) + @property + def squadrons(self) -> Iterator[Squadron]: + for squadron in self.coalition.air_wing.iter_squadrons(): + if squadron.location == self: + yield squadron + @property @abstractmethod def heading(self) -> Heading: