50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
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
|
|
|
|
class GameFactory:
|
|
def __init__(self):
|
|
displayNames = networking.getDisplays()['displays']
|
|
self.displayFactory = DisplayFactory(displayNames)
|
|
specialDisplay = self.displayFactory.createSpecialDisplay()
|
|
|
|
self.playerCount = len(displayNames) - 1
|
|
|
|
self.gameStateFactory = PlayerStateFactory(specialDisplay)
|
|
|
|
|
|
def createGame(self):
|
|
targets = TargetFactory.createAllTargets()
|
|
inputHandler = InputHandler(targets)
|
|
|
|
banks = [targets['Left Bank'], targets['Right Bank'], targets['Top Bank']]
|
|
players = self.createPlayers(banks)
|
|
|
|
gameState = GameState(players, self.getHighScore(), players[0].id)
|
|
|
|
eventFactory = EventFactory(targets, gameState)
|
|
events = eventFactory.allEvents()
|
|
|
|
return Game(inputHandler, gameState, events)
|
|
|
|
def createPlayers(self, banks):
|
|
players = []
|
|
for id in range(1, self.playerCount):
|
|
display = self.displayFactory.createPlayerDisplay(id)
|
|
player = self.gameStateFactory.createPlayerState(display, id, banks)
|
|
players.append(player)
|
|
return players
|
|
|
|
def getHighScore(self): # todo
|
|
return 0
|
|
|