screeps/objects/impls/
symbol_decoder.rs

1use js_sys::JsString;
2use wasm_bindgen::prelude::*;
3
4use crate::{constants::ResourceType, objects::RoomObject, prelude::*};
5
6#[wasm_bindgen]
7extern "C" {
8    /// An object representing a [`SymbolDecoder`], which can be used to decode
9    /// matching symbol resources to score points on the leaderboard.
10    ///
11    /// [Screeps documentation](https://docs-season.screeps.com/api/#SymbolDecoder)
12    ///
13    /// [`ResourceType::Score`]: crate::constants::ResourceType::Score
14    #[wasm_bindgen(extends = RoomObject)]
15    #[derive(Clone, Debug)]
16    pub type SymbolDecoder;
17
18    /// Object ID of the collector, which can be used to efficiently fetch a
19    /// fresh reference to the object on subsequent ticks.
20    ///
21    /// [Screeps documentation](https://docs-season.screeps.com/api/#SymbolDecoder.id)
22    #[wasm_bindgen(method, getter = id)]
23    fn id_internal(this: &SymbolDecoder) -> JsString;
24
25    /// The [`ResourceType`] allowed to be transferred to this [`SymbolDecoder`]
26    /// to score points.
27    ///
28    /// [Screeps documentation](https://docs-season.screeps.com/api/#SymbolDecoder.resourceType)
29    #[wasm_bindgen(method, getter = resourceType)]
30    pub fn resource_type(this: &SymbolDecoder) -> ResourceType;
31
32    /// The multipler applied to points scored at this decoder, as determined by
33    /// the level of the room's controller.
34    ///
35    /// [Screeps documentation](https://docs-season.screeps.com/api/#SymbolDecoder.scoreMultiplier)
36    #[wasm_bindgen(method, getter = scoreMultiplier)]
37    pub fn score_multiplier(this: &SymbolDecoder) -> u32;
38}
39
40impl HasId for SymbolDecoder {
41    fn js_raw_id(&self) -> JsString {
42        Self::id_internal(self)
43    }
44}
45
46impl Transferable for SymbolDecoder {}