This commit is contained in:
Jonas Zeunert
2022-08-31 17:14:36 +02:00
parent 83e60af546
commit e2c77b9b3f
5 changed files with 27 additions and 8 deletions

View File

@@ -1,16 +1,17 @@
import logging
import config
from lamps.LampGroup import PLAYER_LAMPS
from lamps.Lamp import CREDIT
from itertools import cycle
from time import sleep
from lamps.LampGroup import *
import asyncio
class GameState:
players = None
credits = config.BALLS_PER_GAME
isPlaying = False
isStarted = False
isIdle = True
def __init__(self, playerStateFactory, highscore, specialDisplay, currentPlayerID = 0):
CREDIT.activate()
@@ -22,6 +23,7 @@ class GameState:
self.highscore = highscore
self.specialDisplay = specialDisplay
self.specialDisplay.printCredits(self.credits)
self.startIdleLoop()
def nextPlayer(self):
self.currentPlayer = next(self.players)
@@ -42,14 +44,24 @@ class GameState:
logging.info("Game ended")
def startIdleLoop(self):
asyncio.run(self.idleLoop())
pass
def stopIdleLoop(self):
self.isIdle = False
pass
def idleLoop(self):
pass
async def idleLoop(self):
all_cabinet_lamps = [BONUS_LAMPS, BONUS_MULTIPLIER_LAMPS, CHAMP_LAMPS,
UPPER_PLAYFIELD_TIME_LAMPS, TUNNEL_NUMBER_LAMPS,
TUNNEL_LAMPS, TUNNEL_SCORE_LAMPS]
while True:
for lamps in all_cabinet_lamps:
for _ in lamps.lamps:
lamps.cycle()
if not self.isIdle:
return
time.sleep(0.5)
def createPlayers(self, playerCount):
players = []
@@ -77,6 +89,4 @@ class GameState:
for player in self.players:
if player.hasHighscore:
with open(config.HIGHSCORE_FILE, "w+") as file:
file.seek(0)
file.truncate()
file.write(player.score)

View File

@@ -85,6 +85,7 @@ class PlayerState:
self.printSpecial()
def activate(self):
self.isActive = False
self.resetBall()
PLAYER_LAMPS.deactivate()
PLAYER_LAMPS.activate_one(self.id)
@@ -280,6 +281,7 @@ class PlayerState:
def advanceBonusMultiplier(self):
if not self.isActive:
return
try:
self.bonusMultiplier = next(self.bonusMultiplierIter)
BONUS_MULTIPLIER_LAMPS.activateNext()
@@ -292,6 +294,7 @@ class PlayerState:
if self.ballsLeft == 0 and self.bonusTime != 0:
self.replayBall = True
SHOOT_AGAIN.activate()
if self.replayBallTimer != None:
self.replayBallTimer.cancel()
self.replayBallTimer = Timer(interval=1, function=self.updateReplayBall)
@@ -314,6 +317,7 @@ class PlayerState:
self.replayBall = False
self.replayBallTimer = None
SHOOT_AGAIN.deactivate()
MainFlipper().deactivate()
def addPoints(self, points):

View File

@@ -11,7 +11,7 @@ import logging
def main():
args = parseCommandLine()
logging.basicConfig(filename='log.txt', level=config.LOG_LEVEL)
logging.basicConfig(filename=config.LOG_FILE, level=config.LOG_LEVEL)
game = createGame(args)
asyncio.run(game.run())

View File

@@ -27,6 +27,7 @@ RED_SPECIAL_TIMES = 1
ORANGE_SPECIAL = SpecialEvent.points
ORANGE_SPECIAL_BANK = ORANGE_SPECIAL_BANK_OPTIONS["BOTH"]
## Tech config
LOG_FILE="flippr-game.log"
LOG_LEVEL=logging.DEBUG
WAIT_TIME_TO_RESET_SECONDS = 1
MAX_NETWORK_RETRIES = 10

View File

@@ -1,5 +1,6 @@
from lamps.Lamp import Lamp
from itertools import cycle
import time
class LampGroup:
def __init__(self, lamps):
@@ -44,6 +45,9 @@ class LampGroup:
self.currentLamp = next(self.lamp_cycle)
self.currentLamp.activate()
PLAYER_LAMPS = LampGroup([
Lamp("Can Play 1"),
Lamp("Can Play 2"),