diff --git a/libs/file_navigator.py b/libs/file_navigator.py index b79340c..757b33d 100644 --- a/libs/file_navigator.py +++ b/libs/file_navigator.py @@ -428,7 +428,7 @@ class FolderBox(BaseBox): tex.draw_texture('yellow_box', 'song_count_songs', color=color) dest_width = min(tex.skin_config["song_tja_count"].width, self.tja_count_text.texture.width) self.tja_count_text.draw(outline_color=ray.BLACK, x=tex.skin_config["song_tja_count"].x - (dest_width//2), y=tex.skin_config["song_tja_count"].y, x2=dest_width-self.tja_count_text.texture.width, color=color) - if self.texture_index != TextureIndex.DEFAULT: + if self.texture_index != TextureIndex.DEFAULT and self.box_texture is None: tex.draw_texture('box', 'folder_graphic', color=color, frame=self.genre_index) tex.draw_texture('box', 'folder_text', color=color, frame=self.genre_index) elif self.box_texture is not None: diff --git a/libs/parsers/osz.py b/libs/parsers/osz.py index b835739..3ccdf52 100644 --- a/libs/parsers/osz.py +++ b/libs/parsers/osz.py @@ -29,6 +29,13 @@ class OsuParser: self.slider_multiplier = float(self.difficulty["SliderMultiplier"]) self.metadata = TJAMetadata() self.metadata.wave = osu_file.parent / self.general["AudioFilename"] + self.metadata.demostart = float(self.general["PreviewTime"]) / 1000 + self.metadata.offset = -30/1000 + self.metadata.title["en"] = self.osu_metadata["Version"] + self.metadata.subtitle["en"] = self.osu_metadata["Creator"] + match = re.search(r'\[Events\][\s\S]*?^[ \t]*(\d+),(\d+),"([^"]+)"', osu_file.read_text(), re.MULTILINE) + if match: + self.metadata.bgmovie = osu_file.parent / Path(match.group(3)) self.metadata.course_data[0] = CourseData() self.ex_data = TJAEXData() self.bpm = [] diff --git a/libs/video.py b/libs/video.py index 09f7bd0..2021469 100644 --- a/libs/video.py +++ b/libs/video.py @@ -14,6 +14,12 @@ class VideoPlayer: def __init__(self, path: Path): """Initialize a video player instance""" self.is_finished_list = [False, False] + self.is_static = False + if path.suffix == '.png' or path.suffix == '.jpg': + self.texture = ray.LoadTexture(str(path).encode('utf-8')) + self.is_static = True + return + self.container = av.open(str(path)) self.video_stream = self.container.streams.video[0] @@ -144,6 +150,8 @@ class VideoPlayer: def start(self, current_ms: float) -> None: """Start video playback at call time""" + if self.is_static: + return self.start_ms = current_ms self._init_frame_generator() self._load_frame(0) @@ -154,11 +162,15 @@ class VideoPlayer: def set_volume(self, volume: float) -> None: """Set video volume, takes float value from 0.0 to 1.0""" + if self.is_static: + return if self.audio is not None: audio.set_music_volume(self.audio, volume) def update(self): """Updates video playback, advancing frames and audio""" + if self.is_static: + return self._audio_manager() if self.frame_index >= len(self.frame_timestamps): @@ -197,6 +209,11 @@ class VideoPlayer: def stop(self): """Stops the video, audio, and clears its buffer""" + if self.is_static: + if self.texture is not None: + ray.UnloadTexture(self.texture) + self.texture = None + return if self.container: self.container.close()