simplify next player logic

This commit is contained in:
Jonas Zeunert
2022-06-06 22:12:08 +02:00
parent 06f3f76257
commit 782f3ebd56

View File

@@ -1,11 +1,13 @@
import logging import logging
from lamps.LampGroup import PLAYER_LAMPS from lamps.LampGroup import PLAYER_LAMPS
from lamps.Lamp import CREDIT from lamps.Lamp import CREDIT
from itertools import cycle
class GameState: class GameState:
def __init__(self, players, highscore, specialDisplay, currentPlayerID = 0): def __init__(self, players, highscore, specialDisplay, currentPlayerID = 0):
CREDIT.activate() CREDIT.activate()
self.players = players self.players = cycle(players)
self._currentPlayer = cycle.next()
self.gameStateID = currentPlayerID self.gameStateID = currentPlayerID
self.highscore = highscore self.highscore = highscore
self.credits = 3 self.credits = 3
@@ -15,29 +17,17 @@ class GameState:
PLAYER_LAMPS.activateNext() PLAYER_LAMPS.activateNext()
def nextPlayer(self): def nextPlayer(self):
if not self.isPlaying: self._currentPlayer = next(self.players)
self.isPlaying = True
nextPlayer = self.players[0].id
else:
nextPlayer = self.players[1].id
self.currentPlayer = nextPlayer
@property @property
def currentPlayer(self): def currentPlayer(self):
return self.players[0] return self._currentPlayer
@currentPlayer.setter @currentPlayer.setter
def currentPlayer(self, playerId): def currentPlayer(self, player):
if(playerId > len(self.players)): logging.info("Set active player to player " + str(player.id))
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)
self._currentPlayer = player
PLAYER_LAMPS.deactivateCurrent() PLAYER_LAMPS.deactivateCurrent()
PLAYER_LAMPS.activateNext() PLAYER_LAMPS.activateNext()