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 #[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 #[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 #[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 #[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 #[wasm_bindgen]
73 pub fn offset(&mut self, delta: &WasmDelta) {
74 self.inner.offset(*delta.inner());
75 }
76}
77
78impl WasmEffect {
79 pub fn from_inner(inner: Effect) -> Self {
81 WasmEffect { inner }
82 }
83
84 pub fn inner(&self) -> &Effect {
85 &self.inner
86 }
87}