Files
flippr-game/factories/EventFactory.py
Jonas Zeunert 485640b183 dict zugriff
2020-05-07 20:09:40 +02:00

65 lines
2.2 KiB
Python

import inspect
from events.PointEvent import PointEvent
from events.EndOfBallEvent import EndOfBallEvent
from events.RightFlapEvent import RightFlapEvent
from events.LeftFlapEvent import LeftFlapEvent
from events.RightKickerEvent import RightKickerEvent
from events.EnterUpperPlayfieldEvent import EnterUpperPlayfieldEvent
from events.StartGameEvent import StartGameEvent
class EventFactory:
def __init__(self, targets, currentPlayer):
self.targets = targets
self.currentPlayer = currentPlayer
def allEvents(self):
methods = inspect.getmembers(self, predicate=inspect.ismethod)
createMethods = [method[1] for method in methods if 'create' in method[0]]
result = []
for method in createMethods:
result.append(method())
return result
def createPointEvent(self):
event = PointEvent(self.currentPlayer)
for target in self.targets.values():
self.__registerEventToTarget(event, target)
return event
def createEndOfBallEvent(self):
event = EndOfBallEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets['Outhole'])
return event
def createRightFlapEvent(self):
event = RightFlapEvent()
self.__registerEventToTarget(event, self.targets['Right Slingshot'])
return event
def createLeftFlapEvent(self):
event = LeftFlapEvent()
self.__registerEventToTarget(event, self.targets['Left Slingshot'])
return event
def createRightKickerEvent(self):
event = RightKickerEvent()
self.__registerEventToTarget(event, self.targets['Right Outlane Kicker'])
return event
def createEnterUpperPlayfieldEvent(self):
event = EnterUpperPlayfieldEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets['Rising Ball'])
return event
def createStartGameEvent(self):
event = StartGameEvent(self.flipper)
self.__registerEventToTarget(event, self.targets['Outhole'])
self.__registerEventToTarget(event, self.targets['Credit'])
return event
def __registerEventToTarget(self, event, target):
target.on(target.hit_key, event.trigger)