1use crate::{prelude::WasmCoordinates, traits::WasmWrapper}; use 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 fn into_inner(self) -> Pawn {
13 self.inner
14 }
15
16 fn from_inner(inner: Pawn) -> WasmPawn {
18 WasmPawn { inner }
19 }
20
21 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}