164 lines
5.7 KiB
Python
164 lines
5.7 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
|
|
from events.BonusEvent import BonusEvent
|
|
from events.TiltEvent import TiltEvent
|
|
|
|
BONUS_EVENT_TARGETS = [
|
|
"Left Inlane",
|
|
"Right Inlane",
|
|
"Right Outlane Kicker",
|
|
"Canal Button Bottom",
|
|
"Canal Button Middle Bottom",
|
|
"Canal Button Middle Top",
|
|
"Canal Button Top",
|
|
"Fixed Target 1",
|
|
"Fixed Target 2",
|
|
"Fixed Target 3",
|
|
"Fixed Target 4",
|
|
"Fixed Target 5",
|
|
"Left Bank Left",
|
|
"Left Bank Middle Left",
|
|
"Left Bank Middle Right",
|
|
"Left Bank Right",
|
|
"Right Bank Left",
|
|
"Right Bank Middle",
|
|
"Right Bank Right",
|
|
]
|
|
|
|
class EventFactory:
|
|
def __init__(self, targets, gameState):
|
|
self.targets = targets
|
|
self.gameState = gameState
|
|
|
|
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.gameState)
|
|
for target in self.targets.values():
|
|
self.__registerEventToTarget(event, target)
|
|
return event
|
|
|
|
def createEndOfBallEvent(self):
|
|
event = EndBallEvent(self.gameState)
|
|
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.gameState)
|
|
self.__registerEventToTarget(event, self.targets['Rising ball'])
|
|
return event
|
|
|
|
def createStartGameEvent(self):
|
|
event = StartGameEvent(self.gameState)
|
|
self.__registerEventToTarget(event, self.targets['Credit'])
|
|
return event
|
|
|
|
def createBottomLeftBankEvent(self):
|
|
event = BottomLeftBankEvent(self.gameState)
|
|
self.__registerEventToTarget(event, self.targets["Left Bank"])
|
|
return event
|
|
|
|
def createBottomRightBankEvent(self):
|
|
event = BottomRightBankEvent(self.gameState)
|
|
self.__registerEventToTarget(event, self.targets["Right Bank"])
|
|
return event
|
|
|
|
def createTopCentralBankEvent(self):
|
|
event = TopCentralBankEvent(self.gameState)
|
|
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.gameState)
|
|
self.__registerEventToTarget(event, self.targets["Canal Button Bottom"])
|
|
return event
|
|
|
|
def createRedSpecialEvent(self):
|
|
event = RedSpecialEvent(self.gameState)
|
|
self.__registerEventToTarget(event, self.targets["Special Red"])
|
|
return event
|
|
|
|
def createOrangeSpecialEvent(self):
|
|
event = OrangeSpecialEvent(self.gameState)
|
|
self.__registerEventToTarget(event, self.targets["Special Orange"])
|
|
return event
|
|
|
|
def createSpinnerEvent(self):
|
|
event = SpinnerEvent(self.gameState)
|
|
self.__registerEventToTarget(event, self.targets["Spinner"])
|
|
return event
|
|
|
|
def createFixedTargetEvent(self):
|
|
event = FixedTargetEvent(self.gameState)
|
|
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 createBonusEvent(self):
|
|
event = BonusEvent(self.gameState)
|
|
self.__registerEventToTargets(event, BONUS_EVENT_TARGETS)
|
|
|
|
def createTiltEvent(self):
|
|
event = TiltEvent()
|
|
self.__registerEventToTarget(event, self.targets['Tilt'])
|
|
|
|
def __registerEventToTargets(self, event, targetNames):
|
|
for targetName in targetNames:
|
|
self.__registerEventToTarget(event, self.targets[targetName])
|
|
|
|
def __registerEventToTarget(self, event, target):
|
|
target.on(target.hit_key, event.trigger)
|