import logging from lamps.LampGroup import PLAYER_LAMPS from lamps.Lamp import CREDIT class GameState: def __init__(self, players, highscore, specialDisplay, currentPlayerID = 0): CREDIT.activate() self.players = players self.gameStateID = currentPlayerID self.highscore = highscore self.credits = 3 self.specialDisplay = specialDisplay self.specialDisplay.printCredits(self.credits) self.isPlaying = False 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 @property def currentPlayer(self): return self.players[0] @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) PLAYER_LAMPS.deactivateCurrent() PLAYER_LAMPS.activateNext() self.currentPlayer.activate()