fix practice mode no sound and score system during practice

This commit is contained in:
GitBluub
2024-01-17 02:14:56 +01:00
committed by Clément Le Bihan
parent 9fd70d3110
commit a24a960184
5 changed files with 44 additions and 11 deletions

View File

@@ -17,6 +17,11 @@ class StartMessage(ValidatedDC):
mode: Literal["normal", "practice"]
type: Literal["start"] = "start"
@dataclass
class PingMessage(ValidatedDC):
type: Literal["ping"] = "ping"
@dataclass
class EndMessage(ValidatedDC):
@@ -52,6 +57,7 @@ message_map = {
"note_on": NoteOnMessage,
"note_off": NoteOffMessage,
"pause": PauseMessage,
"ping": PingMessage,
}
@@ -62,7 +68,8 @@ def getMessage() -> (
| NoteOnMessage
| NoteOffMessage
| PauseMessage
| InvalidMessage,
| InvalidMessage
| PingMessage,
str,
]
):

View File

@@ -17,6 +17,7 @@ from chroma_case.Message import (
NoteOffMessage,
NoteOnMessage,
PauseMessage,
PingMessage,
StartMessage,
getMessage,
)
@@ -215,6 +216,9 @@ class Scorometer:
def practiceCheck(self):
if self.to_play == self.keys_down_practice:
self.info["perfect"] += len(self.to_play)
self.info["score"] += 100 * len(self.to_play)
if len(self.practice_partition) == 0:
self.endGamePractice()
self.send({"type": "step", "timestamp": self.practice_partition[0][0].start + 1})
@@ -250,13 +254,16 @@ class Scorometer:
| NoteOnMessage
| NoteOffMessage
| PauseMessage
| InvalidMessage,
| InvalidMessage
| PingMessage,
line: str,
):
match message:
case InvalidMessage(error):
logging.warning(f"Invalid message {line} with error: {error}")
self.send({"error": f"Invalid message {line} with error: {error}"})
case PingMessage():
self.send({"type": "pong"})
case NoteOnMessage():
if self.mode == NORMAL:
self.handleNoteOn(message)