rpgx_wasm/map/
effect.rs

1use rpgx::prelude::Effect;
2use wasm_bindgen::prelude::*;
3
4use crate::prelude::{WasmDelta, WasmRect};
5
6#[wasm_bindgen(js_name = Effect)]
7#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
8pub struct WasmEffect {
9    inner: Effect,
10}
11
12#[wasm_bindgen(js_class = Effect)]
13impl WasmEffect {
14    #[wasm_bindgen(constructor)]
15    pub fn new(
16        action_id: Option<u32>,
17        texture_id: Option<u32>,
18        render_id: Option<u32>,
19        block: Option<WasmRect>,
20    ) -> WasmEffect {
21        WasmEffect {
22            inner: Effect {
23                action_id,
24                texture_id,
25                render_id,
26                block: block.map(|r| *r.inner()),
27            },
28        }
29    }
30
31    /// Getters and setters for action_id
32    #[wasm_bindgen(getter, js_name = actionId)]
33    pub fn action_id(&self) -> Option<u32> {
34        self.inner.action_id
35    }
36    #[wasm_bindgen(setter, js_name = actionId)]
37    pub fn set_action_id(&mut self, id: Option<u32>) {
38        self.inner.action_id = id;
39    }
40
41    /// Getters and setters for texture_id
42    #[wasm_bindgen(getter, js_name = textureId)]
43    pub fn texture_id(&self) -> Option<u32> {
44        self.inner.texture_id
45    }
46    #[wasm_bindgen(setter, js_name = textureId)]
47    pub fn set_texture_id(&mut self, id: Option<u32>) {
48        self.inner.texture_id = id;
49    }
50
51    /// Getters and setters for render_id
52    #[wasm_bindgen(getter, js_name = renderId)]
53    pub fn render_id(&self) -> Option<u32> {
54        self.inner.render_id
55    }
56    #[wasm_bindgen(setter, js_name = renderId)]
57    pub fn set_render_id(&mut self, id: Option<u32>) {
58        self.inner.render_id = id;
59    }
60
61    /// Getters and setters for block rect
62    #[wasm_bindgen(getter)]
63    pub fn block(&self) -> Option<WasmRect> {
64        self.inner.block.map(WasmRect::from_inner)
65    }
66    #[wasm_bindgen(setter)]
67    pub fn set_block(&mut self, rect: Option<WasmRect>) {
68        self.inner.block = rect.map(|r| *r.inner());
69    }
70
71    /// Offsets the block rect by delta (if any)
72    #[wasm_bindgen]
73    pub fn offset(&mut self, delta: &WasmDelta) {
74        self.inner.offset(*delta.inner());
75    }
76}
77
78impl WasmEffect {
79    // Internal Rust accessors
80    pub fn from_inner(inner: Effect) -> Self {
81        WasmEffect { inner }
82    }
83
84    pub fn inner(&self) -> &Effect {
85        &self.inner
86    }
87}