screeps/objects/impls/
structure_observer.rs

1use js_sys::JsString;
2use wasm_bindgen::prelude::*;
3
4use crate::{
5    enums::action_error_codes::structure_observer::*,
6    local::RoomName,
7    objects::{OwnedStructure, RoomObject, Structure},
8    prelude::*,
9};
10
11#[wasm_bindgen]
12extern "C" {
13    /// An object representing a [`StructureObserver`], which can grant vision
14    /// to remote rooms.
15    ///
16    /// [Screeps documentation](https://docs.screeps.com/api/#StructureObserver)
17    #[wasm_bindgen(extends = RoomObject, extends = Structure, extends = OwnedStructure)]
18    #[derive(Clone, Debug)]
19    pub type StructureObserver;
20
21    #[wasm_bindgen(method, js_name = observeRoom)]
22    fn observe_room_internal(this: &StructureObserver, target: &JsString) -> i8;
23}
24
25impl StructureObserver {
26    /// Set the [`StructureObserver`] to provide vision of a target room next
27    /// tick.
28    ///
29    /// [Screeps documentation](https://docs.screeps.com/api/#StructureObserver.observeRoom)
30    pub fn observe_room(&self, target: RoomName) -> Result<(), ObserveRoomErrorCode> {
31        let target = target.into();
32
33        ObserveRoomErrorCode::result_from_i8(self.observe_room_internal(&target))
34    }
35}
36
37impl Attackable for StructureObserver {}
38impl Dismantleable for StructureObserver {}
39impl Repairable for StructureObserver {}