Add: Tunnel Scores
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"),
|
||||
|
||||
Reference in New Issue
Block a user