Mercurial > touhou
diff python/src/glide/mod.rs @ 775:28d8b892fd06
Python: Upgrade pyo3 from 0.17 to 0.26
| author | Link Mauve <linkmauve@linkmauve.fr> |
|---|---|
| date | Mon, 13 Oct 2025 17:44:38 +0000 |
| parents | 7492d384d122 |
| children |
line wrap: on
line diff
--- a/python/src/glide/mod.rs +++ b/python/src/glide/mod.rs @@ -1,5 +1,5 @@ use pyo3::prelude::*; -use pyo3::types::{PyList, PyDict, PySequence}; +use pyo3::types::{PyList, PyDict, PySequence, PyListMethods}; use pyo3::exceptions::PyTypeError; use std::collections::{HashMap, BTreeMap}; use image::GenericImageView; @@ -152,7 +152,7 @@ println!("TODO: GameRenderer::load_background({background})"); } - fn render_elements(&self, py: Python, elements: &PyList, shift: (f32, f32)) -> PyResult<()> { + fn render_elements(&self, py: Python, elements: Bound<PyList>, shift: (f32, f32)) -> PyResult<()> { let module = py.import("pytouhou.ui.glide.sprite")?; let get_sprite_rendering_data = module.getattr("get_sprite_rendering_data")?; let mut prev_texture = u32::MAX; @@ -168,7 +168,7 @@ let y: f32 = element.getattr("y")?.extract()?; let sprite = element.getattr("sprite")?; if !sprite.is_none() { - let (pos, mut texcoords, color): ([f32; 12], [f32; 4], u32) = get_sprite_rendering_data.call1((sprite,))?.extract()?; + let (pos, mut texcoords, color): ([f32; 12], [f32; 4], u32) = get_sprite_rendering_data.call1((&sprite,))?.extract()?; for coord in &mut texcoords { *coord *= 256.0; } @@ -189,7 +189,7 @@ gr::buffer_clear(0x000000ff, 0xff, 0xffff); for things in ["enemies", "effects", "players_bullets"/*, "lasers_sprites()"*/, "players"/*, "msg_sprites()"*/, "bullets", "lasers", "cancelled_bullets", "items", "labels"] { let things = game.getattr(py, things)?; - let things: &PyList = things.extract(py)?; + let things = things.extract(py)?; self.render_elements(py, things, (32.0, 16.0))?; } let interface = game.getattr(py, "interface")?; @@ -200,7 +200,7 @@ fn render_interface(&self, py: Python, interface: PyObject, boss: bool) -> PyResult<()> { let items = interface.getattr(py, "items")?; - let items: &PyList = items.extract(py)?; + let items = items.extract(py)?; self.render_elements(py, items, (0.0, 0.0))?; /* // TODO: figure out why this doesn’t render alphanumeric characters. @@ -210,7 +210,7 @@ */ if boss { let items = interface.getattr(py, "boss_items")?; - let items: &PyList = items.extract(py)?; + let items = items.extract(py)?; self.render_elements(py, items, (0.0, 0.0))?; } Ok(()) @@ -247,12 +247,22 @@ gr::buffer_swap(1); } -pub fn module(py: Python) -> PyResult<&PyModule> { - let m = PyModule::new(py, "glide")?; - m.add_class::<GameRenderer>()?; - m.add_function(wrap_pyfunction!(init, m)?)?; - m.add_function(wrap_pyfunction!(shutdown, m)?)?; - m.add_function(wrap_pyfunction!(create_window, m)?)?; - m.add_function(wrap_pyfunction!(buffer_swap, m)?)?; - Ok(&m) +#[pymodule] +#[pyo3(name = "glide")] +pub mod module { + #[pymodule_export] + use super::GameRenderer; + + #[pymodule_export] + use super::init; + + #[pymodule_export] + use super::shutdown; + + #[pymodule_export] + use super::create_window; + + #[pymodule_export] + use super::buffer_swap; + }
