comparison python/src/lib.rs @ 784:1f152ca95658

Replace pytouhou.utils.random.Random with a Rust version libtouhou.Prng now supports having its seed generated randomly using the getrandom crate, and is now exposed to Python.
author Link Mauve <linkmauve@linkmauve.fr>
date Sun, 23 Nov 2025 12:48:03 +0100
parents ec1e06402a97
children 7e940ebeb5fd
comparison
equal deleted inserted replaced
783:ec1e06402a97 784:1f152ca95658
214 let (_, inner) = LoopPoints::from_slice(&vec).unwrap(); 214 let (_, inner) = LoopPoints::from_slice(&vec).unwrap();
215 Ok(inner) 215 Ok(inner)
216 } 216 }
217 } 217 }
218 218
219 /// A loader for Touhou files.
220 #[pyclass(module = "libtouhou")]
221 struct Prng {
222 inner: touhou_utils::prng::Prng,
223 }
224
225 #[pymethods]
226 impl Prng {
227 #[pyo3(signature = (seed=None))]
228 #[new]
229 fn new(seed: Option<u16>) -> Prng {
230 let inner = touhou_utils::prng::Prng::new(seed);
231 Prng { inner }
232 }
233
234 fn rand_uint16(&mut self) -> u16 {
235 self.inner.get_u16()
236 }
237
238 fn rand_uint32(&mut self) -> u32 {
239 self.inner.get_u32()
240 }
241
242 fn rand_double(&mut self) -> f64 {
243 self.inner.get_f64()
244 }
245 }
246
219 #[pymodule] 247 #[pymodule]
220 mod libtouhou { 248 mod libtouhou {
221 #[pymodule_export] 249 #[pymodule_export]
222 use super::Loader; 250 use super::Loader;
223 251
224 #[pymodule_export] 252 #[pymodule_export]
253 use super::Prng;
254
255 #[pymodule_export]
225 use crate::audio::Audio; 256 use crate::audio::Audio;
226 257
227 #[cfg(feature = "glide")] 258 #[cfg(feature = "glide")]
228 #[pymodule_export] 259 #[pymodule_export]
229 use super::glide::module; 260 use super::glide::module;