Mercurial > touhou
diff python/src/main.rs @ 796:d876ac2ccfe1 default tip
Pass audio only once to GameRunner
This prevents it being recreated every stage change, and playing music over the
previous stages’ music.
| author | Link Mauve <linkmauve@linkmauve.fr> |
|---|---|
| date | Sun, 28 Jun 2026 14:27:03 +0200 |
| parents | 2d60a14f4816 |
| children |
line wrap: on
line diff
--- a/python/src/main.rs +++ b/python/src/main.rs @@ -54,16 +54,6 @@ enum Backend { Sdl, } -impl Backend { - const fn to_str(&self) -> &'static str { - match self { - Backend::OpenGL => "opengl", - Backend::Glide => "glide", - Backend::Sdl => "sdl", - } - } -} - #[derive(Debug, Clone, ValueEnum)] enum GlFlavor { Core, @@ -248,6 +238,16 @@ fn main() -> PyResult<()> { let libtouhou = PyModule::import(py, "libtouhou").unwrap(); let Prng = libtouhou.getattr("Prng").unwrap(); + let Audio = libtouhou.getattr("Audio").unwrap(); + let DummyAudio = libtouhou.getattr("DummyAudio").unwrap(); + + let audio; + if !args.no_sound { + let bgms = [Some(("赤より紅い夢", "th06_01.mid")), None, None, None]; + audio = Audio.call1((resource_loader.clone(), bgms)).unwrap(); + } else { + audio = DummyAudio.call0().unwrap(); + } let mut stage_num; let story; @@ -338,7 +338,7 @@ fn main() -> PyResult<()> { } else { None }; - let runner = GameRunner.call1((window.clone(), renderer, common.clone(), resource_loader.clone(), args.skip_replay, con, args.no_sound)).unwrap(); + let runner = GameRunner.call1((window.clone(), renderer, common.clone(), resource_loader.clone(), audio, args.skip_replay, con)).unwrap(); let window_set_runner = window.getattr("set_runner").unwrap(); window_set_runner.call1((runner.clone(),)).unwrap();
