Files
flippr-game/factories/EventFactory.py
Jonas Zeunert 6450ee22dc asdf
2021-03-07 15:47:45 +01:00

128 lines
4.8 KiB
Python

import inspect
from events.PointEvent import PointEvent
from events.EndBallEvent import EndBallEvent
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
from events.EndGameEvent import EndGameEvent
from events.BottomRightBankEvent import BottomRightBankEvent
from events.BottomLeftBankEvent import BottomLeftBankEvent
from events.TopCentralBankEvent import TopCentralBankEvent
from events.BottomRightPopEvent import BottomRightPopEvent
from events.TopLeftPopEvent import TopLeftPopEvent
from events.TunnelEvent import TunnelEvent
from events.RedSpecialEvent import RedSpecialEvent
from events.OrangeSpecialEvent import OrangeSpecialEvent
from events.SpinnerEvent import SpinnerEvent
from events.FixedTargetEvent import FixedTargetEvent
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 = EndBallEvent(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.__registerEventToTarget(event, self.targets['Credit'])
return event
def createBottomLeftBankEvent(self):
event = BottomLeftBankEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Left Bank"])
return event
def createBottomRightBankEvent(self):
event = BottomRightBankEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Right Bank"])
return event
def createTopCentralBankEvent(self):
event = TopCentralBankEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Top Bank"])
return event
def createTopLeftPopEvent(self):
event = TopLeftPopEvent()
self.__registerEventToTarget(event, self.targets["Left Pop"])
return event
def createBottomRightPopEvent(self):
event = BottomRightPopEvent()
self.__registerEventToTarget(event, self.targets["Right Pop"])
return event
def createTunnelEvent(self):
event = TunnelEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Canal Button Bottom"])
return event
def createRedSpecialEvent(self):
event = RedSpecialEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Special Red"])
return event
def createOrangeSpecialEvent(self):
event = OrangeSpecialEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Special Orange"])
return event
def createSpinnerEvent(self):
event = SpinnerEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Spinner"])
return event
def createFixedTargetEvent(self):
event = FixedTargetEvent(self.currentPlayer)
self.__registerEventToTarget(event, self.targets["Fixed Target 1"])
self.__registerEventToTarget(event, self.targets["Fixed Target 2"])
self.__registerEventToTarget(event, self.targets["Fixed Target 3"])
self.__registerEventToTarget(event, self.targets["Fixed Target 4"])
self.__registerEventToTarget(event, self.targets["Fixed Target 5"])
return event
def __registerEventToTarget(self, event, target):
target.on(target.hit_key, event.trigger)