Very much done

This commit is contained in:
Jonas Zeunert
2021-03-07 10:51:24 +01:00
parent f07c686b68
commit c54ab2e311
47 changed files with 339 additions and 77 deletions

View File

@@ -2,10 +2,11 @@ from Event import Event
class BankEvent(Event):
def __init__(self, bankSolenoid, name):
def __init__(self, bankSolenoid, name, playerState):
self.bankSolenoid = bankSolenoid
super().__init__(name)
self.playerState = playerState
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.bankSolenoid.trigger()

View File

@@ -6,6 +6,6 @@ class BonusTimeEvent(Event):
self.playerState = playerState
super().__init__("Bonus Time Event")
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.playerState().addBonusTimeSecond()

View File

@@ -3,6 +3,12 @@ from solenoids.BottomLeftBankSolenoid import BottomLeftBankSolenoid
class BottomLeftBankEvent(BankEvent):
def __init__(self):
super().__init__(BottomLeftBankSolenoid(), "Bottom Left Bank Event")
def __init__(self, playerState):
super().__init__(BottomLeftBankSolenoid(), "Bottom Left Bank Event", playerState)
def trigger(self, target):
super().trigger(target)
playerState = self.playerState()
playerState.advanceLeftOrangeSpecial()
if playerState.upperPlayfieldTime < 30:
playerState.addUpperPlayfieldTime(5)

View File

@@ -3,6 +3,12 @@ from solenoids.BottomRightBankSolenoid import BottomRightBankSolenoid
class BottomRightBankEvent(BankEvent):
def __init__(self):
super().__init__(BottomRightBankSolenoid(), "Bottom Right Bank Event")
def __init__(self, playerState):
super().__init__(BottomRightBankSolenoid(), "Bottom Right Bank Event", playerState)
def trigger(self, target):
super().trigger(target)
playerState = self.playerState()
playerState.advanceRightOrangeSpecial()
if playerState.upperPlayfieldTime < 30:
playerState.addUpperPlayfieldTime(5)

28
events/EndBallEvent.py Normal file
View File

@@ -0,0 +1,28 @@
from Event import Event
from events.EndGameEvent import EndGameEvent
from events.StartBallEvent import StartBallEvent
class EndBallEvent(Event):
def __init__(self, playerState):
self.playerState = playerState
super().__init__("End Of Ball Event")
def trigger(self, target):
super().trigger(target)
if self.playerState.replayBall:
StartBallEvent().trigger(None)
return
self.playerState().removeBall()
self.scorePoints()
self.playerState().reset()
if self.playerState().ballsLeft == 0:
EndGameEvent().trigger(None)
def scorePoints(self):
bonus = self.playerState().bonus * self.playerState().bonusMultiplier * 1000
self.playerState().addPoints(bonus)

View File

@@ -9,7 +9,7 @@ class EndGameEvent(Event):
def __init__(self):
super().__init__("End Game Event")
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.flipper.deactivate()
sys.exit(0)

View File

@@ -1,15 +0,0 @@
from Event import Event
from events.EndGameEvent import EndGameEvent
class EndOfBallEvent(Event):
def __init__(self, playerState):
self.playerState = playerState
super().__init__("End Of Ball Event")
def trigger(self, _):
super().trigger()
self.playerState().removeBall()
if self.playerState().ballsLeft == 0:
EndGameEvent().trigger()

View File

@@ -8,7 +8,7 @@ class EnterUpperPlayfieldEvent(Event):
self.flipper = TopFlipper()
super().__init__("Enter Upper Playfield Event")
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.flipper.activate()
self.playerState().startUpperPlayfieldTimer()
self.playerState().startUpperPlayfieldTimer()

View File

@@ -6,6 +6,6 @@ class FlapEvent(Event):
self.flapSolenoid = flapSolenoid
super().__init__(name)
def trigger(self, _):
super().trigger()
self.flapSolenoid.trigger()
def trigger(self, target):
super().trigger(target)
self.flapSolenoid.trigger()

View File

@@ -7,7 +7,7 @@ class LeaveUpperPlayfieldEvent(Event):
self.flipper = flipper
super().__init__("Leave Upper Playfield Event")
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.flipper.deactivate()
self.playerState().stopUpperPlayfieldTimer()

View File

@@ -0,0 +1,16 @@
from events.SpecialEvent import SpecialEvent
import config
class OrangeSpecialEvent(SpecialEvent):
def __init__(self, playerState):
super().__init__("Orange Special Event", playerState)
self.points = 200000
def trigger(self, target):
super().trigger(target)
if self.playerState().orangeSpecialLit:
config.ORANGE_SPECIAL(self)
self.playerState().resetOrangeSpecial()

View File

@@ -4,8 +4,8 @@ from Event import Event
class PointEvent(Event):
def __init__(self, playerState):
self.playerState = playerState
super().__init__("Point Event Event")
super().__init__("Point Event")
def trigger(self, target):
super().trigger()
super().trigger(target)
self.playerState().addPoints(target.points)

View File

@@ -6,6 +6,6 @@ class PopEvent(Event):
self.popSolenoid = popSolenoid
super().__init__(name)
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.popSolenoid.trigger()

15
events/RedSpecialEvent.py Normal file
View File

@@ -0,0 +1,15 @@
from events.SpecialEvent import SpecialEvent
import config
class RedSpecialEvent(SpecialEvent):
def __init__(self, playerState):
super().__init__("Red Special Event", playerState)
self.points = 990000
def trigger(self, target):
super().trigger(target)
if self.playerState().redSpecialLit:
config.RED_SPECIAL(self)
self.playerState().resetRedSpecial()

View File

@@ -7,6 +7,6 @@ class RightKickerEvent(Event):
self.rightKickerSolenoid = RightKickerSolenoid()
super().__init__("Right Kicker Event")
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.rightKickerSolenoid.trigger()

19
events/SpecialEvent.py Normal file
View File

@@ -0,0 +1,19 @@
from Event import Event
class SpecialEvent(Event):
def __init__(self, name, playerState):
super().init(name)
self.playerState = playerState
def replay(self):
self.playerState.setReplayBall()
def extra_ball(self):
self.playerState.addBall()
def points(self):
self.playerState.addPoints(self.points)
def super_bonus(self):
pass

29
events/SpinnerEvent.py Normal file
View File

@@ -0,0 +1,29 @@
from Event import Event
from time import time
class SpinnerEvent(Event):
def __init__(self, playerState):
super().__init__("Spinner Event")
self.playerState = playerState
self.activationTime = time()
def trigger(self, target):
super().trigger(target)
if time() - self.activationTime > 10:
self.activationTime = time()
return
self.scorePoints()
def scorePoints(self):
playerState = self.playerState()
timePassed = time() - self.activationTime
if 1 <= timePassed < 1.5:
playerState.addPoints(100000)
elif 1.5 <= timePassed < 2:
playerState.addPoints(150000)
elif 2 <= timePassed < 5:
playerState.addPoints(200000)
elif timePassed >= 5:
playerState.addPoints(500000)

15
events/StartBallEvent.py Normal file
View File

@@ -0,0 +1,15 @@
from Event import Event
from solenoids.OutHoleSolenoid import OutHoleSolenoid
from solenoids.MainFlipper import MainFlipper
class StartBallEvent(Event):
def __init__(self):
self.flipper = MainFlipper()
self.outHoleSolenoid = OutHoleSolenoid()
super().__init__("Start Ball Event")
def trigger(self, target):
super().trigger(target)
self.flipper.activate()
self.outHoleSolenoid.trigger()

View File

@@ -9,7 +9,7 @@ class StartGameEvent(Event):
self.outHoleSolenoid = OutHoleSolenoid()
super().__init__("Start Game Event")
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.flipper.activate()
self.outHoleSolenoid.trigger()

View File

@@ -3,6 +3,11 @@ from solenoids.TopCentralBankSolenoid import TopCentralBankSolenoid
class TopCentralBankEvent(BankEvent):
def __init__(self):
super().__init__(TopCentralBankSolenoid(), "Top Central Bank Event")
def __init__(self, playerState):
super().__init__(TopCentralBankSolenoid(), "Top Central Bank Event", playerState)
def trigger(self, target):
self.playerState().advanceRedSpecial()

25
events/TunnelEvent.py Normal file
View File

@@ -0,0 +1,25 @@
from Event import Event
class TunnelEvent(Event):
def __init__(self, playerState):
super().__init__("Tunnel Event")
self.playerState = playerState
def trigger(self, target):
super().trigger(target)
self.advanceBonusMultiplier()
self.scoreBonusTunnelPoints()
def advanceBonusMultiplier(self):
self.playerState().advanceBonusMultiplier()
def scoreBonusTunnelPoints(self):
playerState = self.playerState()
if playerState.tunnelLit == 2:
playerState.addPoints(10000)
elif playerState.tunnelLit == 3:
playerState.addPoints(20000)
elif playerState.tunnelLit == 4:
playerState.addPoints(40000)
elif playerState.tunnelLit == 5:
playerState.addPoints(190000)

View File

@@ -6,6 +6,6 @@ class UpperPlayfieldTimeEvent(Event):
self.playerState = playerState
super().__init__("Upper Playfield Time Event")
def trigger(self, _):
super().trigger()
def trigger(self, target):
super().trigger(target)
self.playerState().addUpperPlayfieldTime(1)