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 {}