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 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
if self.bonusMultiplier == 1:
self.bonusMultiplier = 10
elif self.bonusMultiplier == 10:
self.bonusMultiplier = 20
elif self.bonusMultiplier == 20:
self.bonusMultiplier == 50 #todo
try:
self.bonusMultiplier = next(self.bonusMultiplierIter)
BONUS_MULTIPLIER_LAMPS.activateNext()
except StopIteration:
pass
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
try:
self.upperPlayfieldTime = next(self.upperPlayfieldTimeIter)
UPPER_PLAYFIELD_TIME_LAMPS.activateNext()
except StopIteration:
pass
def startUpperPlayfieldTimer(self):
self.upperPlayfieldTimer = Timer(1, self.updatePlayfieldTime)

View File

@@ -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"),