Fix win/loss not triggering when carriers are present

This commit is contained in:
Raffson 2024-02-17 18:10:31 +01:00
parent 6e4d1e9e5c
commit 40a733e147
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
3 changed files with 17 additions and 8 deletions

View File

@ -362,10 +362,10 @@ class Game:
persistency.autosave(self)
def check_win_loss(self) -> TurnState:
if not self.theater.player_points():
if not self.theater.player_points(state_check=True):
return TurnState.LOSS
if not self.theater.enemy_points():
if not self.theater.enemy_points(state_check=True):
return TurnState.WIN
return TurnState.CONTINUE

View File

@ -120,20 +120,27 @@ class ConflictTheater:
)
return new_point
def control_points_for(self, player: bool) -> Iterator[ControlPoint]:
def control_points_for(
self, player: bool, state_check: bool = False
) -> Iterator[ControlPoint]:
for point in self.controlpoints:
if point.captured == player:
yield point
if not state_check:
yield point
elif point.is_carrier and point.runway_is_operational():
yield point
elif not point.is_carrier:
yield point
def player_points(self) -> List[ControlPoint]:
return list(self.control_points_for(player=True))
def player_points(self, state_check: bool = False) -> List[ControlPoint]:
return list(self.control_points_for(player=True, state_check=state_check))
def conflicts(self) -> Iterator[FrontLine]:
for cp in self.player_points():
yield from cp.front_lines.values()
def enemy_points(self) -> List[ControlPoint]:
return list(self.control_points_for(player=False))
def enemy_points(self, state_check: bool = False) -> List[ControlPoint]:
return list(self.control_points_for(player=False, state_check=state_check))
def closest_control_point(
self, point: Point, allow_naval: bool = False

View File

@ -166,6 +166,8 @@ class QTopPanel(QFrame):
with logged_duration("Skipping turn"):
self.game.pass_turn(no_action=True)
GameUpdateSignal.get_instance().updateGame(self.game)
state = self.game_model.game.check_win_loss()
GameUpdateSignal.get_instance().gameStateChanged(state)
self.proceedButton.setEnabled(True)
def negative_start_packages(self, now: datetime) -> List[Package]: