45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
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()
|