49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import config
|
|
from __main__ import networking
|
|
|
|
from factories.PlayerStateFactory import PlayerStateFactory
|
|
from factories.DisplayFactory import DisplayFactory
|
|
from factories.TargetFactory import TargetFactory
|
|
from factories.EventFactory import EventFactory
|
|
|
|
from InputHandler import InputHandler
|
|
|
|
from GameState import GameState
|
|
|
|
from Game import Game
|
|
|
|
from lamps.LampGroup import PLAYER_LAMPS
|
|
|
|
class GameFactory:
|
|
def __init__(self):
|
|
displayNames = networking.getDisplays()['displays']
|
|
self.displayFactory = DisplayFactory(displayNames)
|
|
self.displays = self.displayFactory.createDisplays()
|
|
self.specialDisplay = self.displayFactory.createSpecialDisplay()
|
|
|
|
self.playerCount = len(displayNames)
|
|
|
|
self.targets = TargetFactory.createAllTargets()
|
|
banks = [self.targets['Left Bank'], self.targets['Right Bank'], self.targets['Top Bank']]
|
|
|
|
self.playerStateFactory = PlayerStateFactory(self.specialDisplay, banks, self.displays)
|
|
|
|
PLAYER_LAMPS.activateNext()
|
|
|
|
def getHighScore(self):
|
|
with open(config.HIGHSCORE_FILE, "w+") as file:
|
|
score_str = file.readline()
|
|
|
|
if score_str == "":
|
|
score_str = "0"
|
|
|
|
return int(score_str)
|
|
|
|
def createGame(self):
|
|
inputHandler = InputHandler(self.targets)
|
|
gameState = GameState(self.playerStateFactory, self.getHighScore(), self.specialDisplay)
|
|
|
|
eventFactory = EventFactory(self.targets, gameState)
|
|
events = eventFactory.allEvents()
|
|
|
|
return Game(inputHandler, gameState, events) |