Add: Replay ball if not scored

This commit is contained in:
Jonas Zeunert
2022-02-21 22:37:46 +01:00
parent 57fc86b563
commit 011ff20365
2 changed files with 10 additions and 6 deletions

View File

@@ -22,6 +22,7 @@ class PlayerState:
bonusMultiplier = 1 bonusMultiplier = 1
ballsLeft = 0 ballsLeft = 0
replayBall = False replayBall = False
hasBallScored = False
redSpecial = 0 redSpecial = 0
redSpecialLit = False redSpecialLit = False
@@ -103,8 +104,9 @@ class PlayerState:
def reset(self): def reset(self):
self.upperPlayfieldTimer = None self.upperPlayfieldTimer = None
self.replayBall = False
self.upperPlayfieldTime = config.BEGINNING_UPPER_PLAYFIELD_TIME self.upperPlayfieldTime = config.BEGINNING_UPPER_PLAYFIELD_TIME
self.replayBall = False
self.hasBallScored = False
self.resetBonus() self.resetBonus()
self.resetTargets() self.resetTargets()
@@ -152,7 +154,6 @@ class PlayerState:
if self.orangeSpecialLit: if self.orangeSpecialLit:
Lamp("Special Orange").activate() Lamp("Special Orange").activate()
def advanceRedSpecial(self): def advanceRedSpecial(self):
self.redSpecial += 1 self.redSpecial += 1
CHAMP_LAMPS.activateNext() CHAMP_LAMPS.activateNext()
@@ -173,7 +174,7 @@ class PlayerState:
BONUS_LAMPS.activateNext() BONUS_LAMPS.activateNext()
def advanceBonusMultiplier(self): def advanceBonusMultiplier(self):
if self.bonusMultiplier >= 15: if self.bonusMultiplier >= 50:
return return
if self.bonusMultiplier == 1: if self.bonusMultiplier == 1:
@@ -181,7 +182,7 @@ class PlayerState:
elif self.bonusMultiplier == 10: elif self.bonusMultiplier == 10:
self.bonusMultiplier = 20 self.bonusMultiplier = 20
elif self.bonusMultiplier == 20: elif self.bonusMultiplier == 20:
self.bonusMultiplier == 50 self.bonusMultiplier == 50 #todo
BONUS_MULTIPLIER_LAMPS.activateNext() BONUS_MULTIPLIER_LAMPS.activateNext()
@@ -189,6 +190,9 @@ class PlayerState:
self.replayBall = True self.replayBall = True
def addPoints(self, points): def addPoints(self, points):
if not self.hasBallScored:
self.hasBallScored = True
self.points += points self.points += points
self.display.printScore(self.points) self.display.printScore(self.points)
@@ -221,7 +225,7 @@ class PlayerState:
def updatePlayfieldTime(self): def updatePlayfieldTime(self):
if self.upperPlayfieldTime == 0: if self.upperPlayfieldTime == 0:
self.upperPlayfieldTimer = None self.upperPlayfieldTimer = None
LeaveUpperPlayfieldEvent(self, ) LeaveUpperPlayfieldEvent(self)
return return
if self.upperPlayfieldTime in [0, 5, 10, 20]: if self.upperPlayfieldTime in [0, 5, 10, 20]:

View File

@@ -11,7 +11,7 @@ class EndBallEvent(Event):
def trigger(self, target): def trigger(self, target):
super().trigger(target) super().trigger(target)
if self.playerState.replayBall: if self.playerState.replayBall or not self.playerState.hasBallScored:
StartBallEvent().trigger(None) StartBallEvent().trigger(None)
return return