diff --git a/settlers_of_emf/main.py b/settlers_of_emf/main.py index 7954355..82b308c 100644 --- a/settlers_of_emf/main.py +++ b/settlers_of_emf/main.py @@ -91,7 +91,11 @@ class Menu(State): self.choices = choices self.clear_title = clear_title if self.question: - self.menu_offset = 120 + if isinstance(self.question, list): + self.menu_offset = 100 + (20 * len(self.question)) + else: + self.question = [question] + self.menu_offset = 120 else: self.menu_offset = 100 self.back = -1 @@ -111,7 +115,8 @@ class Menu(State): else: ugfx.area(0, 95, 240, 225, ugfx.BLACK) if self.question: - ugfx.text(5, 95, self.question, ugfx.WHITE) + for i in range(len(self.question)): + ugfx.text(2, 95 + (i * 20), self.question[i], ugfx.WHITE) offset = 0 for i in range(len(self.choices)): self._draw_choice(i, offset) @@ -383,6 +388,12 @@ class NextPlayer(Menu): super().__init__('Pass the badge to next team:', [team], False) +class GameOver(Menu): + + def __init__(self, team): + super().__init__(['Game over!', 'Congrats to the winning team:'], [team], False) + + class Hex: """Hexes are the games tiles. They have a resource kind, correspond to the value of a roll of two D6 and may or may not contain the robber.""" @@ -1219,7 +1230,7 @@ class Settlers: while self.state != Settlers.EXIT: if self.state == Settlers.MAIN_MENU: - menu = MainMenu(self.game is None, self.old_state != Settlers.TEAM_MENU) + menu = MainMenu(self.game is None, self.old_state != Settlers.TEAM_MENU and self.old_state != Settlers.ACTION_END_TURN) x = menu.run() if x == MainMenu.NEW_GAME: self.teams = [] @@ -1291,12 +1302,16 @@ class Settlers: self.enter_state(Settlers.GAME) elif self.state == Settlers.ACTION_END_TURN: - self.game.next_player() - menu = NextPlayer(self.game.player.team) - menu.run() - self.enter_state(Settlers.GAME) - - # TODO: Game over! + if self.game.player.score() >= 10: + menu = GameOver(self.game.player.team) + menu.run() + self.game = None + self.enter_state(Settlers.MAIN_MENU) + else: + self.game.next_player() + menu = NextPlayer(self.game.player.team) + menu.run() + self.enter_state(Settlers.GAME) # User chose exit, a machine reset is the easiest way :-) restart_to_default()