From 5b42a2ba63bb00066a8e90cfef83a36cc216008c Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Tue, 22 Feb 2022 00:05:37 +0100 Subject: [PATCH] Add: Tunnel Scores --- PlayerState.py | 58 ++++++++++++++++++++++++++++------------------ lamps/LampGroup.py | 8 +++++++ 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/PlayerState.py b/PlayerState.py index 59b0988..76cfe85 100644 --- a/PlayerState.py +++ b/PlayerState.py @@ -9,11 +9,16 @@ from lamps.Lamp import Lamp from lamps.LampGroup import CHAMP_LAMPS from lamps.LampGroup import UPPER_PLAYFIELD_TIME_LAMPS from lamps.LampGroup import TUNNEL_LAMPS +from lamps.LampGroup import TUNNEL_SCORE_LAMPS from lamps.LampGroup import BONUS_MULTIPLIER_LAMPS from lamps.LampGroup import BONUS_LAMPS from events.LeaveUpperPlayfieldEvent import LeaveUpperPlayfieldEvent +TUNNEL_SCORES = [20000, 30000, 50000] +BONUS_MULTIPLIER = [1, 10, 20, 50] +UPPER_PLAYFIELD_TIME = [5, 10, 20, 30] + class PlayerState: display = None @@ -21,7 +26,10 @@ class PlayerState: id = 0 points = 0 bonus = 0 + bonusMultiplierIter = iter(BONUS_MULTIPLIER) bonusMultiplier = 1 + tunnelScoreIter = iter(TUNNEL_SCORES) + tunnelScore = 0 ballsLeft = 0 replayBall = False hasBallScored = False @@ -39,6 +47,7 @@ class PlayerState: timeAdvanceRightTimer = None upperPlayfieldTimer = None + upperPlayfieldTimeIter = iter(UPPER_PLAYFIELD_TIME) upperPlayfieldTime = 0 def __init__(self, display, specialDisplay, id, ballsToPlay): @@ -106,7 +115,8 @@ class PlayerState: def reset(self): self.upperPlayfieldTimer = None - self.upperPlayfieldTime = config.BEGINNING_UPPER_PLAYFIELD_TIME + self.upperPlayfieldTimeIter = iter(UPPER_PLAYFIELD_TIME) + self.upperPlayfieldTime = next(self.upperPlayfieldTimeIter) self.replayBall = False self.hasBallScored = False @@ -115,7 +125,8 @@ class PlayerState: def resetBonus(self): self.bonus = 0 - self.bonusMultiplier = 1 + self.bonusMultiplierIter = iter(BONUS_MULTIPLIER) + self.bonusMultiplier = next(self.bonusMultiplierIter) BONUS_LAMPS.deactivate() BONUS_MULTIPLIER_LAMPS.deactivate() @@ -137,7 +148,11 @@ class PlayerState: Lamp("Special Orange").deactivate() def resetTunnel(self): + self.tunnelScoreIter = iter(TUNNEL_SCORES) + self.tunnelScore = next(self.tunnelScoreIter) self.tunnelLit = 0 + TUNNEL_SCORE_LAMPS.deactivate() + TUNNEL_SCORE_LAMPS.activateNext() TUNNEL_LAMPS.deactivate() def advanceRightOrangeSpecial(self): @@ -165,6 +180,15 @@ class PlayerState: self.redSpecialLit = True Lamp("Special Red").activate() + def advanceTunnelScore(self): + try: + self.tunnelScore = next(self.tunnelScoreIter) + TUNNEL_SCORE_LAMPS.deactivateCurrent() + TUNNEL_SCORE_LAMPS.currentLamp += 1 # dirty + TUNNEL_SCORE_LAMPS.activateNext() + except StopIteration: + pass + def advanceTunnel(self): if self.tunnelLit >= 5: return @@ -180,17 +204,12 @@ class PlayerState: BONUS_LAMPS.activateNext() def advanceBonusMultiplier(self): - if self.bonusMultiplier >= 50: - return + try: + self.bonusMultiplier = next(self.bonusMultiplierIter) + BONUS_MULTIPLIER_LAMPS.activateNext() + except StopIteration: + pass - if self.bonusMultiplier == 1: - self.bonusMultiplier = 10 - elif self.bonusMultiplier == 10: - self.bonusMultiplier = 20 - elif self.bonusMultiplier == 20: - self.bonusMultiplier == 50 #todo - - BONUS_MULTIPLIER_LAMPS.activateNext() def setReplayBall(self): self.replayBall = True @@ -214,16 +233,11 @@ class PlayerState: self.specialDisplay.printBallsToPlay(self.ballsLeft) def advanceUpperPlayfieldTime(self): - if self.upperPlayfieldTime == 0: - self.upperPlayfieldTime = 5 - elif self.upperPlayfieldTime == 5: - self.upperPlayfieldTime = 10 - elif self.upperPlayfieldTime == 10: - self.upperPlayfieldTime = 20 - elif self.upperPlayfieldTime == 20: - self.upperPlayfieldTime = 30 - - UPPER_PLAYFIELD_TIME_LAMPS.activateNext() + try: + self.upperPlayfieldTime = next(self.upperPlayfieldTimeIter) + UPPER_PLAYFIELD_TIME_LAMPS.activateNext() + except StopIteration: + pass def startUpperPlayfieldTimer(self): self.upperPlayfieldTimer = Timer(1, self.updatePlayfieldTime) diff --git a/lamps/LampGroup.py b/lamps/LampGroup.py index f7e1189..1ac0c05 100644 --- a/lamps/LampGroup.py +++ b/lamps/LampGroup.py @@ -12,6 +12,8 @@ class LampGroup: lamp.activate() def deactivate(self): + self.currentLamp = 0 + for lamp in self.lamps: lamp.deactivate() @@ -54,6 +56,12 @@ TUNNEL_LAMPS = LampGroup([ Lamp("5th Button") ]) +TUNNEL_SCORE_LAMPS = LampGroup([ + Lamp("Tunnel Lamp 20000 Points"), + Lamp("Tunnel Lamp 30000 Points"), + Lamp("Tunnel Lamp 50000 Points") +]) + BONUS_MULTIPLIER_LAMPS = LampGroup([ Lamp("Bonus Multiplier x10"), Lamp("Bonus Multiplier x20"),