diff --git a/score.py b/score.py index bfe39cd4dda2c21825eb703813d27b504ef8e2e4..4a308164ae4a0d4246d462bffbcfcd8b50be766e 100644 --- a/score.py +++ b/score.py @@ -20,7 +20,7 @@ from . import utils from .midireader import difficulties class ScoreView(BaseView): - def __init__(self, app, song, data, streak, difficulty): + def __init__(self, app, song, data, streak, badnotes, difficulty): super().__init__() self.app = app self.song = song @@ -29,12 +29,13 @@ class ScoreView(BaseView): self.flower = flower.Flower(0) self.time = 0 self.streak = streak + self.badnotes = badnotes self.played = False if not self.data: self.accuracy = 0.42 else: events = data.track.getAllEvents() - self.accuracy = len(set(filter(lambda x: x.played and not x.missed, events))) / len(events) + self.accuracy = len(set(filter(lambda x: x.played and not x.missed, events))) / (len(events) + badnotes) self.stars = int(5.0 * (self.accuracy + 0.05)) def draw(self, ctx: Context) -> None: diff --git a/song.py b/song.py index 702a8156567155dec218472bd5d86beb4d46da29..3ac13b501a35d9750e44ff61330d767263e47984 100644 --- a/song.py +++ b/song.py @@ -73,6 +73,7 @@ class SongView(BaseView): self.showstreak = 0.0 self.showstreakval = 0 self.longeststreak = 0 + self.badnotes = 0 self.led_override = [0] * 5 self.laststreak = -1 self.notes = set() @@ -402,7 +403,7 @@ class SongView(BaseView): self.finished = True media.stop() gc.collect() - self.vm.replace(score.ScoreView(self.app, self.song, self.data, self.longeststreak, self.difficulty), ViewTransitionBlend()) + self.vm.replace(score.ScoreView(self.app, self.song, self.data, self.longeststreak, self.badnotes, self.difficulty), ViewTransitionBlend()) return if self.streak > self.longeststreak: @@ -583,6 +584,7 @@ class SongView(BaseView): #print("fiba", petal, self.time, delta_time) utils.play_fiba(self.app) utils.emit("bad", petal) + self.badnotes += 1 self.bad = 1.0 self.bads[petal] = 1.0 self.streak = 0 @@ -609,6 +611,7 @@ class SongView(BaseView): if bad_chord or event.time < self.laststreak: utils.play_fiba(self.app) utils.emit("bad", event.number) + self.badnotes += 1 self.bad = 1.0 self.bads[event.number] = 1.0 self.streak = 0