playerstate to prop
This commit is contained in:
@@ -11,7 +11,6 @@ class BankTarget(Target):
|
|||||||
|
|
||||||
self.is_hit = True
|
self.is_hit = True
|
||||||
super().hit()
|
super().hit()
|
||||||
#notify Bank
|
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
self.is_hit = False
|
self.is_hit = False
|
||||||
6
Game.py
6
Game.py
@@ -13,11 +13,6 @@ class Game:
|
|||||||
signal.signal(signal.SIGINT, self.interrupt)
|
signal.signal(signal.SIGINT, self.interrupt)
|
||||||
self.is_running = asyncio.Condition()
|
self.is_running = asyncio.Condition()
|
||||||
|
|
||||||
BottomLeftBankSolenoid().trigger()
|
|
||||||
BottomRightBankSolenoid().trigger()
|
|
||||||
TopCentralBankSolenoid().trigger()
|
|
||||||
pass
|
|
||||||
|
|
||||||
def interrupt(self):
|
def interrupt(self):
|
||||||
logging.info('Received SIGINT. Stopping Game :-)')
|
logging.info('Received SIGINT. Stopping Game :-)')
|
||||||
self.is_running.release()
|
self.is_running.release()
|
||||||
@@ -30,4 +25,3 @@ class Game:
|
|||||||
await self.input_handler.handleInputs()
|
await self.input_handler.handleInputs()
|
||||||
|
|
||||||
await self.is_running.wait()
|
await self.is_running.wait()
|
||||||
pass
|
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ class GameState:
|
|||||||
self.currentPlayerID = currentPlayerID
|
self.currentPlayerID = currentPlayerID
|
||||||
self.highscore = highscore
|
self.highscore = highscore
|
||||||
|
|
||||||
|
@property
|
||||||
def currentPlayer(self):
|
def currentPlayer(self):
|
||||||
return self.players[self.currentPlayerID]
|
return self.players[self.currentPlayerID]
|
||||||
|
|
||||||
def setCurrentPlayer(self, playerId):
|
@currentPlayer.setter
|
||||||
|
def currentPlayer(self, playerId):
|
||||||
if(playerId > len(self.players)):
|
if(playerId > len(self.players)):
|
||||||
pass # todo throw error
|
pass # todo throw error
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,8 @@ class PlayerState:
|
|||||||
upperPlayfieldTimeIter = iter(UPPER_PLAYFIELD_TIME)
|
upperPlayfieldTimeIter = iter(UPPER_PLAYFIELD_TIME)
|
||||||
upperPlayfieldTime = 0
|
upperPlayfieldTime = 0
|
||||||
|
|
||||||
def __init__(self, display, specialDisplay, id, ballsToPlay):
|
def __init__(self, display, specialDisplay, id, ballsToPlay, banks):
|
||||||
|
self.banks = banks
|
||||||
self.display = display
|
self.display = display
|
||||||
self.specialDisplay = specialDisplay
|
self.specialDisplay = specialDisplay
|
||||||
self.id = id
|
self.id = id
|
||||||
@@ -72,9 +73,11 @@ class PlayerState:
|
|||||||
|
|
||||||
self.bonusTime = config.BEGINNING_BONUS_TIME
|
self.bonusTime = config.BEGINNING_BONUS_TIME
|
||||||
|
|
||||||
self.reset()
|
|
||||||
self.specialDisplay.printScore()
|
self.specialDisplay.printScore()
|
||||||
|
|
||||||
|
def activate(self):
|
||||||
|
self.reset()
|
||||||
|
|
||||||
def enableTiming(self):
|
def enableTiming(self):
|
||||||
if config.BONUS_TIME_ALGORITHM == config.BONUS_TIME_ALGORITHM_OPTIONS.RANDOM:
|
if config.BONUS_TIME_ALGORITHM == config.BONUS_TIME_ALGORITHM_OPTIONS.RANDOM:
|
||||||
self.disableAdvanceTimeLeft()
|
self.disableAdvanceTimeLeft()
|
||||||
@@ -143,6 +146,7 @@ class PlayerState:
|
|||||||
BONUS_MULTIPLIER_LAMPS.deactivate()
|
BONUS_MULTIPLIER_LAMPS.deactivate()
|
||||||
|
|
||||||
def resetTargets(self):
|
def resetTargets(self):
|
||||||
|
self.resetBanks()
|
||||||
self.resetRedSpecial()
|
self.resetRedSpecial()
|
||||||
self.resetOrangeSpecial()
|
self.resetOrangeSpecial()
|
||||||
self.resetTunnel()
|
self.resetTunnel()
|
||||||
@@ -167,6 +171,10 @@ class PlayerState:
|
|||||||
TUNNEL_SCORE_LAMPS.activateNext()
|
TUNNEL_SCORE_LAMPS.activateNext()
|
||||||
TUNNEL_LAMPS.deactivate()
|
TUNNEL_LAMPS.deactivate()
|
||||||
|
|
||||||
|
def resetBanks(self):
|
||||||
|
for bank in self.banks:
|
||||||
|
bank.reset()
|
||||||
|
|
||||||
def advanceRightOrangeSpecial(self):
|
def advanceRightOrangeSpecial(self):
|
||||||
self.orangeSpecialRight = True
|
self.orangeSpecialRight = True
|
||||||
self.setOrangeSpecialLit()
|
self.setOrangeSpecialLit()
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ class BonusEvent(Event):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
self.playerState().advanceBonus()
|
self.playerState.advanceBonus()
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ class BonusTimeEvent(Event):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
self.playerState().addBonusTimeSecond()
|
self.playerState.addBonusTimeSecond()
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ class BottomLeftBankEvent(BankEvent):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
playerState = self.playerState()
|
playerState = self.playerState
|
||||||
playerState.advanceLeftOrangeSpecial()
|
playerState.advanceLeftOrangeSpecial()
|
||||||
playerState.advanceUpperPlayfieldTime()
|
playerState.advanceUpperPlayfieldTime()
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class BottomRightBankEvent(BankEvent):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
playerState = self.playerState()
|
playerState = self.playerState
|
||||||
playerState.advanceRightOrangeSpecial()
|
playerState.advanceRightOrangeSpecial()
|
||||||
if playerState.upperPlayfieldTime < 30:
|
if playerState.upperPlayfieldTime < 30:
|
||||||
playerState.advanceUpperPlayfieldTime()
|
playerState.advanceUpperPlayfieldTime()
|
||||||
|
|||||||
@@ -11,18 +11,18 @@ class EndBallEvent(Event):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
if self.playerState().replayBall or not self.playerState().hasBallScored:
|
if self.playerState.replayBall or not self.playerState.hasBallScored:
|
||||||
StartBallEvent().trigger(None)
|
StartBallEvent().trigger(None)
|
||||||
return
|
return
|
||||||
|
|
||||||
self.playerState().removeBall()
|
self.playerState.removeBall()
|
||||||
|
|
||||||
self.scorePoints()
|
self.scorePoints()
|
||||||
self.playerState().reset()
|
self.playerState.reset()
|
||||||
|
|
||||||
if self.playerState().ballsLeft == 0:
|
if self.playerState.ballsLeft == 0:
|
||||||
EndGameEvent().trigger(None)
|
EndGameEvent().trigger(None)
|
||||||
|
|
||||||
def scorePoints(self):
|
def scorePoints(self):
|
||||||
bonus = self.playerState().bonus * self.playerState().bonusMultiplier * 1000
|
bonus = self.playerState.bonus * self.playerState.bonusMultiplier * 1000
|
||||||
self.playerState().addPoints(bonus)
|
self.playerState.addPoints(bonus)
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ class EnterUpperPlayfieldEvent(Event):
|
|||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
self.flipper.activate()
|
self.flipper.activate()
|
||||||
self.playerState().startUpperPlayfieldTimer()
|
self.playerState.startUpperPlayfieldTimer()
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ class FixedTargetEvent(Event):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
self.playerState().advanceTunnel()
|
self.playerState.advanceTunnel()
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class OrangeSpecialEvent(SpecialEvent):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
if self.playerState().orangeSpecialLit:
|
if self.playerState.orangeSpecialLit:
|
||||||
config.ORANGE_SPECIAL(self)
|
config.ORANGE_SPECIAL(self)
|
||||||
self.playerState().resetOrangeSpecial()
|
self.playerState.resetOrangeSpecial()
|
||||||
|
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ class PointEvent(Event):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
self.playerState().addPoints(target.points)
|
self.playerState.addPoints(target.points)
|
||||||
@@ -8,8 +8,8 @@ class RedSpecialEvent(SpecialEvent):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
if self.playerState().redSpecialLit:
|
if self.playerState.redSpecialLit:
|
||||||
config.RED_SPECIAL(self)
|
config.RED_SPECIAL(self)
|
||||||
self.playerState().resetRedSpecial()
|
self.playerState.resetRedSpecial()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ class SpecialEvent(Event):
|
|||||||
self.playerState = playerState
|
self.playerState = playerState
|
||||||
|
|
||||||
def replay(self):
|
def replay(self):
|
||||||
self.playerState().setReplayBall()
|
self.playerState.setReplayBall()
|
||||||
|
|
||||||
def extra_ball(self):
|
def extra_ball(self):
|
||||||
self.playerState().addBall()
|
self.playerState.addBall()
|
||||||
|
|
||||||
def points(self):
|
def points(self):
|
||||||
self.playerState().addPoints(self.points)
|
self.playerState.addPoints(self.points)
|
||||||
|
|
||||||
def super_bonus(self):
|
def super_bonus(self):
|
||||||
pass
|
pass
|
||||||
|
|||||||
@@ -17,13 +17,13 @@ class SpinnerEvent(Event):
|
|||||||
self.scorePoints()
|
self.scorePoints()
|
||||||
|
|
||||||
def scorePoints(self):
|
def scorePoints(self):
|
||||||
playerState = self.playerState()
|
playerState = self.playerState
|
||||||
timePassed = time() - self.activationTime
|
timePassed = time() - self.activationTime
|
||||||
if 1 <= timePassed < 1.5:
|
if 1 <= timePassed < 1.5:
|
||||||
playerState().addPoints(100000)
|
playerState.addPoints(100000)
|
||||||
elif 1.5 <= timePassed < 2:
|
elif 1.5 <= timePassed < 2:
|
||||||
playerState().addPoints(150000)
|
playerState.addPoints(150000)
|
||||||
elif 2 <= timePassed < 5:
|
elif 2 <= timePassed < 5:
|
||||||
playerState().addPoints(200000)
|
playerState.addPoints(200000)
|
||||||
elif timePassed >= 5:
|
elif timePassed >= 5:
|
||||||
playerState().addPoints(500000)
|
playerState.addPoints(500000)
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ class TopCentralBankEvent(BankEvent):
|
|||||||
|
|
||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
self.playerState().advanceRedSpecial()
|
self.playerState.advanceRedSpecial()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ class TunnelEvent(Event):
|
|||||||
self.scoreBonusTunnelPoints()
|
self.scoreBonusTunnelPoints()
|
||||||
|
|
||||||
def advanceBonusMultiplier(self):
|
def advanceBonusMultiplier(self):
|
||||||
self.playerState().advanceBonusMultiplier()
|
self.playerState.advanceBonusMultiplier()
|
||||||
|
|
||||||
def scoreBonusTunnelPoints(self):
|
def scoreBonusTunnelPoints(self):
|
||||||
playerState = self.playerState()
|
playerState = self.playerState
|
||||||
if playerState.tunnelLit == 2:
|
if playerState.tunnelLit == 2:
|
||||||
playerState.addPoints(10000)
|
playerState.addPoints(10000)
|
||||||
elif playerState.tunnelLit == 3:
|
elif playerState.tunnelLit == 3:
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ class UpperPlayfieldTimeEvent(Event):
|
|||||||
|
|
||||||
def trigger(self, target):
|
def trigger(self, target):
|
||||||
super().trigger(target)
|
super().trigger(target)
|
||||||
self.playerState().addUpperPlayfieldTime(1)
|
self.playerState.addUpperPlayfieldTime(1)
|
||||||
@@ -37,7 +37,7 @@ class GameFactory:
|
|||||||
|
|
||||||
def createPlayers(self):
|
def createPlayers(self):
|
||||||
players = []
|
players = []
|
||||||
for id in range(1, self.playerCount + 1):
|
for id in range(1, self.playerCount):
|
||||||
display = self.displayFactory.createPlayerDisplay(id)
|
display = self.displayFactory.createPlayerDisplay(id)
|
||||||
player = self.playerStateFactory.createPlayerState(display, id)
|
player = self.playerStateFactory.createPlayerState(display, id)
|
||||||
players.append(player)
|
players.append(player)
|
||||||
|
|||||||
Reference in New Issue
Block a user