diff --git a/libs/audio.py b/libs/audio.py index 0349ed2..1fa987e 100644 --- a/libs/audio.py +++ b/libs/audio.py @@ -812,7 +812,10 @@ class AudioEngine: del self.sounds[sound] def unload_all_sounds(self) -> None: - self.sounds.clear() + sounds_to_clear = list(self.sounds.keys()) + for key in sounds_to_clear: + if key in self.sounds: + del self.sounds[key] def normalize_sound(self, sound: str, rms: float) -> None: if sound in self.sounds: diff --git a/libs/tja.py b/libs/tja.py index 16ed130..6f4b149 100644 --- a/libs/tja.py +++ b/libs/tja.py @@ -219,7 +219,7 @@ class TJAParser: if item[len('SUBTITLE')] != ':': region_code = (item[len('SUBTITLE'):len('SUBTITLE')+2]).lower() self.metadata.subtitle[region_code] = ''.join(item.split(':')[1:]) - if '限定' in self.metadata.subtitle: + if 'ja' in self.metadata.subtitle and '限定' in self.metadata.subtitle['ja']: self.ex_data.limited_time = True elif item.startswith('TITLE'): region_code = 'en' @@ -300,12 +300,12 @@ class TJAParser: self.metadata.course_data[current_diff].scorediff = int(float(score_diff)) for region_code in self.metadata.title: if '-New Audio-' in self.metadata.title[region_code] or '-新曲-' in self.metadata.title[region_code]: - self.metadata.title[region_code] = self.metadata.title[region_code].strip('-New Audio-') - self.metadata.title[region_code] = self.metadata.title[region_code].strip('-新曲-') + self.metadata.title[region_code] = self.metadata.title[region_code].replace('-New Audio-', '') + self.metadata.title[region_code] = self.metadata.title[region_code].replace('-新曲-', '') self.ex_data.new_audio = True elif '-Old Audio-' in self.metadata.title[region_code] or '-旧曲-' in self.metadata.title[region_code]: - self.metadata.title[region_code] = self.metadata.title[region_code].strip('-Old Audio-') - self.metadata.title[region_code] = self.metadata.title[region_code].strip('-旧曲-') + self.metadata.title[region_code] = self.metadata.title[region_code].replace('-Old Audio-', '') + self.metadata.title[region_code] = self.metadata.title[region_code].replace('-旧曲-', '') self.ex_data.old_audio = True elif '限定' in self.metadata.title[region_code]: self.ex_data.limited_time = True diff --git a/scenes/song_select.py b/scenes/song_select.py index a84e1be..11690fe 100644 --- a/scenes/song_select.py +++ b/scenes/song_select.py @@ -84,7 +84,8 @@ class SongSelectScreen: self.navigator.mark_crowns_dirty_for_song(self.navigator.all_song_files[str(global_data.selected_song)]) self.navigator.reset_items() - self.navigator.get_current_item().box.get_scores() + curr_item = self.navigator.get_current_item() + curr_item.box.get_scores() self.navigator.add_recent() def on_screen_end(self, next_screen): @@ -520,6 +521,7 @@ class SongBox: if self.hori_name is not None: self.hori_name.unload() self.hori_name = None + self.is_open = False def get_scores(self): if self.tja is None: @@ -1390,7 +1392,7 @@ class FileNavigator: tja_files = self._get_tja_files_for_directory(dir_path) # Create SongFile objects - for i, tja_path in enumerate(sorted(tja_files)): + for i, tja_path in enumerate(tja_files): song_key = str(tja_path) if song_key not in self.all_song_files: song_obj = SongFile(tja_path, tja_path.name, texture_index) @@ -1416,7 +1418,7 @@ class FileNavigator: # Create SongFile objects for TJA files in non-boxed directories tja_files = self._find_tja_files_in_directory_only(dir_path) - for tja_path in sorted(tja_files): + for tja_path in tja_files: song_key = str(tja_path) if song_key not in self.all_song_files: try: @@ -1481,6 +1483,8 @@ class FileNavigator: if self.favorite_folder is None: raise Exception("tried to enter favorite folder without favorites") self._generate_objects_recursive(self.favorite_folder.path) + tja_files = self._get_tja_files_for_directory(self.favorite_folder.path) + self._calculate_directory_crowns(dir_key, tja_files) selected_item.box.tja_count_text = None selected_item.box.tja_count = self._count_tja_files(self.favorite_folder.path) content_items = self.directory_contents[dir_key] @@ -1625,7 +1629,7 @@ class FileNavigator: all_scores = dict() crowns = dict() - for tja_path in sorted(tja_files): + for tja_path in tja_files: song_key = str(tja_path) if song_key in self.all_song_files: song_obj = self.all_song_files[song_key] @@ -1727,7 +1731,7 @@ class FileNavigator: if hash_val in global_data.song_hashes: file_path = Path(global_data.song_hashes[hash_val][0]["file_path"]) - if file_path.exists(): + if file_path.exists() and file_path not in tja_files: tja_files.append(file_path) else: # Try to find by title and subtitle