Mercurial > touhou
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; |
