Add: Tunnel Scores

This commit is contained in:
Jonas Zeunert
2022-02-22 00:05:37 +01:00
parent 05c26080ab
commit 5b42a2ba63
2 changed files with 44 additions and 22 deletions

View File

@@ -9,11 +9,16 @@ from lamps.Lamp import Lamp
from lamps.LampGroup import CHAMP_LAMPS from lamps.LampGroup import CHAMP_LAMPS
from lamps.LampGroup import UPPER_PLAYFIELD_TIME_LAMPS from lamps.LampGroup import UPPER_PLAYFIELD_TIME_LAMPS
from lamps.LampGroup import TUNNEL_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_MULTIPLIER_LAMPS
from lamps.LampGroup import BONUS_LAMPS from lamps.LampGroup import BONUS_LAMPS
from events.LeaveUpperPlayfieldEvent import LeaveUpperPlayfieldEvent 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: class PlayerState:
display = None display = None
@@ -21,7 +26,10 @@ class PlayerState:
id = 0 id = 0
points = 0 points = 0
bonus = 0 bonus = 0
bonusMultiplierIter = iter(BONUS_MULTIPLIER)
bonusMultiplier = 1 bonusMultiplier = 1
tunnelScoreIter = iter(TUNNEL_SCORES)
tunnelScore = 0
ballsLeft = 0 ballsLeft = 0
replayBall = False replayBall = False
hasBallScored = False hasBallScored = False
@@ -39,6 +47,7 @@ class PlayerState:
timeAdvanceRightTimer = None timeAdvanceRightTimer = None
upperPlayfieldTimer = None upperPlayfieldTimer = None
upperPlayfieldTimeIter = iter(UPPER_PLAYFIELD_TIME)
upperPlayfieldTime = 0 upperPlayfieldTime = 0
def __init__(self, display, specialDisplay, id, ballsToPlay): def __init__(self, display, specialDisplay, id, ballsToPlay):
@@ -106,7 +115,8 @@ class PlayerState:
def reset(self): def reset(self):
self.upperPlayfieldTimer = None 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.replayBall = False
self.hasBallScored = False self.hasBallScored = False
@@ -115,7 +125,8 @@ class PlayerState:
def resetBonus(self): def resetBonus(self):
self.bonus = 0 self.bonus = 0
self.bonusMultiplier = 1 self.bonusMultiplierIter = iter(BONUS_MULTIPLIER)
self.bonusMultiplier = next(self.bonusMultiplierIter)
BONUS_LAMPS.deactivate() BONUS_LAMPS.deactivate()
BONUS_MULTIPLIER_LAMPS.deactivate() BONUS_MULTIPLIER_LAMPS.deactivate()
@@ -137,7 +148,11 @@ class PlayerState:
Lamp("Special Orange").deactivate() Lamp("Special Orange").deactivate()
def resetTunnel(self): def resetTunnel(self):
self.tunnelScoreIter = iter(TUNNEL_SCORES)
self.tunnelScore = next(self.tunnelScoreIter)
self.tunnelLit = 0 self.tunnelLit = 0
TUNNEL_SCORE_LAMPS.deactivate()
TUNNEL_SCORE_LAMPS.activateNext()
TUNNEL_LAMPS.deactivate() TUNNEL_LAMPS.deactivate()
def advanceRightOrangeSpecial(self): def advanceRightOrangeSpecial(self):
@@ -165,6 +180,15 @@ class PlayerState:
self.redSpecialLit = True self.redSpecialLit = True
Lamp("Special Red").activate() 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): def advanceTunnel(self):
if self.tunnelLit >= 5: if self.tunnelLit >= 5:
return return
@@ -180,17 +204,12 @@ class PlayerState:
BONUS_LAMPS.activateNext() BONUS_LAMPS.activateNext()
def advanceBonusMultiplier(self): def advanceBonusMultiplier(self):
if self.bonusMultiplier >= 50: try:
return self.bonusMultiplier = next(self.bonusMultiplierIter)
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() BONUS_MULTIPLIER_LAMPS.activateNext()
except StopIteration:
pass
def setReplayBall(self): def setReplayBall(self):
self.replayBall = True self.replayBall = True
@@ -214,16 +233,11 @@ class PlayerState:
self.specialDisplay.printBallsToPlay(self.ballsLeft) self.specialDisplay.printBallsToPlay(self.ballsLeft)
def advanceUpperPlayfieldTime(self): def advanceUpperPlayfieldTime(self):
if self.upperPlayfieldTime == 0: try:
self.upperPlayfieldTime = 5 self.upperPlayfieldTime = next(self.upperPlayfieldTimeIter)
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() UPPER_PLAYFIELD_TIME_LAMPS.activateNext()
except StopIteration:
pass
def startUpperPlayfieldTimer(self): def startUpperPlayfieldTimer(self):
self.upperPlayfieldTimer = Timer(1, self.updatePlayfieldTime) self.upperPlayfieldTimer = Timer(1, self.updatePlayfieldTime)

View File

@@ -12,6 +12,8 @@ class LampGroup:
lamp.activate() lamp.activate()
def deactivate(self): def deactivate(self):
self.currentLamp = 0
for lamp in self.lamps: for lamp in self.lamps:
lamp.deactivate() lamp.deactivate()
@@ -54,6 +56,12 @@ TUNNEL_LAMPS = LampGroup([
Lamp("5th Button") 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([ BONUS_MULTIPLIER_LAMPS = LampGroup([
Lamp("Bonus Multiplier x10"), Lamp("Bonus Multiplier x10"),
Lamp("Bonus Multiplier x20"), Lamp("Bonus Multiplier x20"),