screeps/objects/impls/
flag.rs1use js_sys::JsString;
2use wasm_bindgen::prelude::*;
3
4use crate::{
5 constants::Color,
6 enums::action_error_codes::flag::*,
7 objects::{RoomObject, RoomPosition},
8 prelude::*,
9};
10
11#[wasm_bindgen]
12extern "C" {
13 #[wasm_bindgen(extends = RoomObject)]
21 #[derive(Clone, Debug)]
22 pub type Flag;
23
24 #[wasm_bindgen(method, getter)]
28 pub fn color(this: &Flag) -> Color;
29
30 #[wasm_bindgen(method, getter)]
34 pub fn memory(this: &Flag) -> JsValue;
35
36 #[wasm_bindgen(method, setter)]
40 pub fn set_memory(this: &Flag, val: &JsValue);
41
42 #[wasm_bindgen(method, getter)]
46 pub fn name(this: &Flag) -> String;
47
48 #[wasm_bindgen(method, getter = name)]
52 pub fn name_jsstring(this: &Flag) -> JsString;
53
54 #[wasm_bindgen(method, js_name = remove)]
55 fn remove_internal(this: &Flag) -> i8;
56
57 #[wasm_bindgen(method, js_name = setColor)]
58 fn set_color_internal(this: &Flag, color: Color, secondary_color: Option<Color>) -> i8;
59
60 #[wasm_bindgen(method, js_name = setPosition)]
61 fn set_position_internal(this: &Flag, pos: RoomPosition) -> i8;
62}
63
64impl Flag {
65 pub fn remove(&self) -> Result<(), FlagRemoveErrorCode> {
69 FlagRemoveErrorCode::result_from_i8(self.remove_internal())
70 }
71
72 pub fn set_color(
76 &self,
77 color: Color,
78 secondary_color: Option<Color>,
79 ) -> Result<(), SetColorErrorCode> {
80 SetColorErrorCode::result_from_i8(self.set_color_internal(color, secondary_color))
81 }
82
83 pub fn set_position(&self, pos: RoomPosition) -> Result<(), SetPositionErrorCode> {
87 SetPositionErrorCode::result_from_i8(self.set_position_internal(pos))
88 }
89}
90
91impl JsCollectionFromValue for Flag {
92 fn from_value(val: JsValue) -> Self {
93 val.unchecked_into()
94 }
95}