From e03d0e7aa5a998a19a3f0e2a01d5bfcd1fb7864d Mon Sep 17 00:00:00 2001 From: Jonas Zeunert Date: Sat, 7 May 2022 14:07:55 +0200 Subject: [PATCH] playerstate to prop --- BankTarget.py | 1 - Game.py | 6 ------ GameState.py | 4 +++- PlayerState.py | 12 ++++++++++-- events/BonusEvent.py | 2 +- events/BonusTimeEvent.py | 2 +- events/BottomLeftBankEvent.py | 2 +- events/BottomRightBankEvent.py | 2 +- events/EndBallEvent.py | 12 ++++++------ events/EnterUpperPlayfieldEvent.py | 2 +- events/FixedTargetEvent.py | 2 +- events/OrangeSpecialEvent.py | 4 ++-- events/PointEvent.py | 2 +- events/RedSpecialEvent.py | 4 ++-- events/SpecialEvent.py | 6 +++--- events/SpinnerEvent.py | 10 +++++----- events/TopCentralBankEvent.py | 2 +- events/TunnelEvent.py | 4 ++-- events/UpperPlayfieldTimeEvent.py | 2 +- factories/GameFactory.py | 2 +- 20 files changed, 43 insertions(+), 40 deletions(-) diff --git a/BankTarget.py b/BankTarget.py index 3cc420e..d2b98d0 100644 --- a/BankTarget.py +++ b/BankTarget.py @@ -11,7 +11,6 @@ class BankTarget(Target): self.is_hit = True super().hit() - #notify Bank def reset(self): self.is_hit = False \ No newline at end of file diff --git a/Game.py b/Game.py index 81ea930..2944a5a 100644 --- a/Game.py +++ b/Game.py @@ -13,11 +13,6 @@ class Game: signal.signal(signal.SIGINT, self.interrupt) self.is_running = asyncio.Condition() - BottomLeftBankSolenoid().trigger() - BottomRightBankSolenoid().trigger() - TopCentralBankSolenoid().trigger() - pass - def interrupt(self): logging.info('Received SIGINT. Stopping Game :-)') self.is_running.release() @@ -30,4 +25,3 @@ class Game: await self.input_handler.handleInputs() await self.is_running.wait() - pass diff --git a/GameState.py b/GameState.py index b47c775..19b3243 100644 --- a/GameState.py +++ b/GameState.py @@ -6,10 +6,12 @@ class GameState: self.currentPlayerID = currentPlayerID self.highscore = highscore + @property def currentPlayer(self): return self.players[self.currentPlayerID] - def setCurrentPlayer(self, playerId): + @currentPlayer.setter + def currentPlayer(self, playerId): if(playerId > len(self.players)): pass # todo throw error diff --git a/PlayerState.py b/PlayerState.py index cab9f55..92d2036 100644 --- a/PlayerState.py +++ b/PlayerState.py @@ -61,7 +61,8 @@ class PlayerState: upperPlayfieldTimeIter = iter(UPPER_PLAYFIELD_TIME) upperPlayfieldTime = 0 - def __init__(self, display, specialDisplay, id, ballsToPlay): + def __init__(self, display, specialDisplay, id, ballsToPlay, banks): + self.banks = banks self.display = display self.specialDisplay = specialDisplay self.id = id @@ -72,9 +73,11 @@ class PlayerState: self.bonusTime = config.BEGINNING_BONUS_TIME - self.reset() self.specialDisplay.printScore() + def activate(self): + self.reset() + def enableTiming(self): if config.BONUS_TIME_ALGORITHM == config.BONUS_TIME_ALGORITHM_OPTIONS.RANDOM: self.disableAdvanceTimeLeft() @@ -143,6 +146,7 @@ class PlayerState: BONUS_MULTIPLIER_LAMPS.deactivate() def resetTargets(self): + self.resetBanks() self.resetRedSpecial() self.resetOrangeSpecial() self.resetTunnel() @@ -167,6 +171,10 @@ class PlayerState: TUNNEL_SCORE_LAMPS.activateNext() TUNNEL_LAMPS.deactivate() + def resetBanks(self): + for bank in self.banks: + bank.reset() + def advanceRightOrangeSpecial(self): self.orangeSpecialRight = True self.setOrangeSpecialLit() diff --git a/events/BonusEvent.py b/events/BonusEvent.py index 2199c61..9ce2d4d 100644 --- a/events/BonusEvent.py +++ b/events/BonusEvent.py @@ -8,4 +8,4 @@ class BonusEvent(Event): def trigger(self, target): super().trigger(target) - self.playerState().advanceBonus() + self.playerState.advanceBonus() diff --git a/events/BonusTimeEvent.py b/events/BonusTimeEvent.py index 7c596dc..eb3274b 100644 --- a/events/BonusTimeEvent.py +++ b/events/BonusTimeEvent.py @@ -8,4 +8,4 @@ class BonusTimeEvent(Event): def trigger(self, target): super().trigger(target) - self.playerState().addBonusTimeSecond() + self.playerState.addBonusTimeSecond() diff --git a/events/BottomLeftBankEvent.py b/events/BottomLeftBankEvent.py index ee44556..7a106cf 100644 --- a/events/BottomLeftBankEvent.py +++ b/events/BottomLeftBankEvent.py @@ -8,6 +8,6 @@ class BottomLeftBankEvent(BankEvent): def trigger(self, target): super().trigger(target) - playerState = self.playerState() + playerState = self.playerState playerState.advanceLeftOrangeSpecial() playerState.advanceUpperPlayfieldTime() diff --git a/events/BottomRightBankEvent.py b/events/BottomRightBankEvent.py index 4b1c594..04205c1 100644 --- a/events/BottomRightBankEvent.py +++ b/events/BottomRightBankEvent.py @@ -8,7 +8,7 @@ class BottomRightBankEvent(BankEvent): def trigger(self, target): super().trigger(target) - playerState = self.playerState() + playerState = self.playerState playerState.advanceRightOrangeSpecial() if playerState.upperPlayfieldTime < 30: playerState.advanceUpperPlayfieldTime() diff --git a/events/EndBallEvent.py b/events/EndBallEvent.py index c171c04..3dc37f9 100644 --- a/events/EndBallEvent.py +++ b/events/EndBallEvent.py @@ -11,18 +11,18 @@ class EndBallEvent(Event): def trigger(self, 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) return - self.playerState().removeBall() + self.playerState.removeBall() self.scorePoints() - self.playerState().reset() + self.playerState.reset() - if self.playerState().ballsLeft == 0: + if self.playerState.ballsLeft == 0: EndGameEvent().trigger(None) def scorePoints(self): - bonus = self.playerState().bonus * self.playerState().bonusMultiplier * 1000 - self.playerState().addPoints(bonus) + bonus = self.playerState.bonus * self.playerState.bonusMultiplier * 1000 + self.playerState.addPoints(bonus) diff --git a/events/EnterUpperPlayfieldEvent.py b/events/EnterUpperPlayfieldEvent.py index 006cb11..2c71cb0 100644 --- a/events/EnterUpperPlayfieldEvent.py +++ b/events/EnterUpperPlayfieldEvent.py @@ -11,4 +11,4 @@ class EnterUpperPlayfieldEvent(Event): def trigger(self, target): super().trigger(target) self.flipper.activate() - self.playerState().startUpperPlayfieldTimer() + self.playerState.startUpperPlayfieldTimer() diff --git a/events/FixedTargetEvent.py b/events/FixedTargetEvent.py index 21387ce..db72bf0 100644 --- a/events/FixedTargetEvent.py +++ b/events/FixedTargetEvent.py @@ -8,4 +8,4 @@ class FixedTargetEvent(Event): def trigger(self, target): super().trigger(target) - self.playerState().advanceTunnel() + self.playerState.advanceTunnel() diff --git a/events/OrangeSpecialEvent.py b/events/OrangeSpecialEvent.py index 444a27a..f99ede4 100644 --- a/events/OrangeSpecialEvent.py +++ b/events/OrangeSpecialEvent.py @@ -10,7 +10,7 @@ class OrangeSpecialEvent(SpecialEvent): def trigger(self, target): super().trigger(target) - if self.playerState().orangeSpecialLit: + if self.playerState.orangeSpecialLit: config.ORANGE_SPECIAL(self) - self.playerState().resetOrangeSpecial() + self.playerState.resetOrangeSpecial() diff --git a/events/PointEvent.py b/events/PointEvent.py index ee19b15..dbe3594 100644 --- a/events/PointEvent.py +++ b/events/PointEvent.py @@ -8,4 +8,4 @@ class PointEvent(Event): def trigger(self, target): super().trigger(target) - self.playerState().addPoints(target.points) \ No newline at end of file + self.playerState.addPoints(target.points) \ No newline at end of file diff --git a/events/RedSpecialEvent.py b/events/RedSpecialEvent.py index 02204d7..4cd3560 100644 --- a/events/RedSpecialEvent.py +++ b/events/RedSpecialEvent.py @@ -8,8 +8,8 @@ class RedSpecialEvent(SpecialEvent): def trigger(self, target): super().trigger(target) - if self.playerState().redSpecialLit: + if self.playerState.redSpecialLit: config.RED_SPECIAL(self) - self.playerState().resetRedSpecial() + self.playerState.resetRedSpecial() diff --git a/events/SpecialEvent.py b/events/SpecialEvent.py index 094c5a8..dc6e47d 100644 --- a/events/SpecialEvent.py +++ b/events/SpecialEvent.py @@ -7,13 +7,13 @@ class SpecialEvent(Event): self.playerState = playerState def replay(self): - self.playerState().setReplayBall() + self.playerState.setReplayBall() def extra_ball(self): - self.playerState().addBall() + self.playerState.addBall() def points(self): - self.playerState().addPoints(self.points) + self.playerState.addPoints(self.points) def super_bonus(self): pass diff --git a/events/SpinnerEvent.py b/events/SpinnerEvent.py index eeae408..0217dc4 100644 --- a/events/SpinnerEvent.py +++ b/events/SpinnerEvent.py @@ -17,13 +17,13 @@ class SpinnerEvent(Event): self.scorePoints() def scorePoints(self): - playerState = self.playerState() + playerState = self.playerState timePassed = time() - self.activationTime if 1 <= timePassed < 1.5: - playerState().addPoints(100000) + playerState.addPoints(100000) elif 1.5 <= timePassed < 2: - playerState().addPoints(150000) + playerState.addPoints(150000) elif 2 <= timePassed < 5: - playerState().addPoints(200000) + playerState.addPoints(200000) elif timePassed >= 5: - playerState().addPoints(500000) + playerState.addPoints(500000) diff --git a/events/TopCentralBankEvent.py b/events/TopCentralBankEvent.py index 0da1322..1ee99db 100644 --- a/events/TopCentralBankEvent.py +++ b/events/TopCentralBankEvent.py @@ -8,6 +8,6 @@ class TopCentralBankEvent(BankEvent): def trigger(self, target): - self.playerState().advanceRedSpecial() + self.playerState.advanceRedSpecial() diff --git a/events/TunnelEvent.py b/events/TunnelEvent.py index 578debe..9dac1e2 100644 --- a/events/TunnelEvent.py +++ b/events/TunnelEvent.py @@ -11,10 +11,10 @@ class TunnelEvent(Event): self.scoreBonusTunnelPoints() def advanceBonusMultiplier(self): - self.playerState().advanceBonusMultiplier() + self.playerState.advanceBonusMultiplier() def scoreBonusTunnelPoints(self): - playerState = self.playerState() + playerState = self.playerState if playerState.tunnelLit == 2: playerState.addPoints(10000) elif playerState.tunnelLit == 3: diff --git a/events/UpperPlayfieldTimeEvent.py b/events/UpperPlayfieldTimeEvent.py index c339098..60d8449 100644 --- a/events/UpperPlayfieldTimeEvent.py +++ b/events/UpperPlayfieldTimeEvent.py @@ -8,4 +8,4 @@ class UpperPlayfieldTimeEvent(Event): def trigger(self, target): super().trigger(target) - self.playerState().addUpperPlayfieldTime(1) \ No newline at end of file + self.playerState.addUpperPlayfieldTime(1) \ No newline at end of file diff --git a/factories/GameFactory.py b/factories/GameFactory.py index 8ea8490..82c0d99 100644 --- a/factories/GameFactory.py +++ b/factories/GameFactory.py @@ -37,7 +37,7 @@ class GameFactory: def createPlayers(self): players = [] - for id in range(1, self.playerCount + 1): + for id in range(1, self.playerCount): display = self.displayFactory.createPlayerDisplay(id) player = self.playerStateFactory.createPlayerState(display, id) players.append(player)