rpgx_wasm/engine/
pawn.rs

1use crate::{prelude::WasmCoordinates, traits::WasmWrapper}; // Assuming you have a WasmTile wrapper
2use rpgx::prelude::Pawn;
3use wasm_bindgen::prelude::*;
4
5#[wasm_bindgen(js_name = Pawn)]
6pub struct WasmPawn {
7    inner: Pawn,
8}
9
10impl WasmWrapper<Pawn> for WasmPawn {
11    // Converts WasmPawn into the inner Pawn
12    fn into_inner(self) -> Pawn {
13        self.inner
14    }
15
16    // Creates WasmPawn from inner Pawn
17    fn from_inner(inner: Pawn) -> WasmPawn {
18        WasmPawn { inner }
19    }
20
21    // Access inner reference
22    fn inner(&self) -> &Pawn {
23        &self.inner
24    }
25}
26
27#[wasm_bindgen(js_class = Pawn)]
28impl WasmPawn {
29    #[wasm_bindgen(constructor)]
30    pub fn new(pointer: WasmCoordinates, texture_id: u32) -> WasmPawn {
31        WasmPawn {
32            inner: Pawn {
33                pointer: pointer.into_inner(),
34                texture_id,
35            },
36        }
37    }
38
39    #[wasm_bindgen(getter)]
40    pub fn pointer(&self) -> WasmCoordinates {
41        WasmCoordinates::from_inner(self.inner.pointer.clone())
42    }
43
44    #[wasm_bindgen(setter)]
45    pub fn set_tile(&mut self, pointer: WasmCoordinates) {
46        self.inner.pointer = pointer.into_inner();
47    }
48
49    #[wasm_bindgen(getter, js_name = textureId)]
50    pub fn texture_id(&self) -> u32 {
51        self.inner.texture_id
52    }
53
54    #[wasm_bindgen(setter, js_name = textureId)]
55    pub fn set_texture_id(&mut self, texture_id: u32) {
56        self.inner.texture_id = texture_id;
57    }
58}