From 782f3ebd567adfdba68cae45814f4abc1ebfe82d Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Mon, 6 Jun 2022 22:12:08 +0200 Subject: [PATCH] simplify next player logic --- GameState.py | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/GameState.py b/GameState.py index b463161..52e01a2 100644 --- a/GameState.py +++ b/GameState.py @@ -1,11 +1,13 @@ import logging from lamps.LampGroup import PLAYER_LAMPS from lamps.Lamp import CREDIT +from itertools import cycle class GameState: def __init__(self, players, highscore, specialDisplay, currentPlayerID = 0): CREDIT.activate() - self.players = players + self.players = cycle(players) + self._currentPlayer = cycle.next() self.gameStateID = currentPlayerID self.highscore = highscore self.credits = 3 @@ -15,29 +17,17 @@ class GameState: PLAYER_LAMPS.activateNext() def nextPlayer(self): - if not self.isPlaying: - self.isPlaying = True - nextPlayer = self.players[0].id - else: - nextPlayer = self.players[1].id - self.currentPlayer = nextPlayer + self._currentPlayer = next(self.players) @property def currentPlayer(self): - return self.players[0] + return self._currentPlayer @currentPlayer.setter - def currentPlayer(self, playerId): - if(playerId > len(self.players)): - pass # todo throw error - - logging.info("Set active player to player " + str(playerId)) - - savedPlayer = self.players[0] - self.players[0] = next(filter(lambda x: playerId == x.id, self.players)) - self.players.remove(savedPlayer) - self.players.append(savedPlayer) + def currentPlayer(self, player): + logging.info("Set active player to player " + str(player.id)) + self._currentPlayer = player PLAYER_LAMPS.deactivateCurrent() PLAYER_LAMPS.activateNext()