screeps/objects/impls/
score_collector.rs

1use js_sys::JsString;
2use wasm_bindgen::prelude::*;
3
4use crate::{
5    objects::{RoomObject, Store},
6    prelude::*,
7};
8
9#[wasm_bindgen]
10extern "C" {
11    /// An object representing a [`ScoreCollector`], which can have
12    /// [`ResourceType::Score`] transferred to it in order to score points on
13    /// the leaderboard.
14    ///
15    /// [Screeps documentation](https://docs-season.screeps.com/api/#ScoreCollector)
16    ///
17    /// [`ResourceType::Score`]: crate::constants::ResourceType::Score
18    #[wasm_bindgen(extends = RoomObject)]
19    #[derive(Clone, Debug)]
20    pub type ScoreCollector;
21
22    /// Object ID of the collector, which can be used to efficiently fetch a
23    /// fresh reference to the object on subsequent ticks.
24    ///
25    /// [Screeps documentation](https://docs-season.screeps.com/api/#ScoreCollector.id)
26    #[wasm_bindgen(method, getter = id)]
27    fn id_internal(this: &ScoreCollector) -> JsString;
28
29    /// The [`Store`] of the container, which contains information about what
30    /// resources it is it holding.
31    ///
32    /// [Screeps documentation](https://docs-season.screeps.com/api/#ScoreCollector.store)
33    #[wasm_bindgen(method, getter)]
34    pub fn store(this: &ScoreCollector) -> Store;
35}
36
37impl HasId for ScoreCollector {
38    fn js_raw_id(&self) -> JsString {
39        Self::id_internal(self)
40    }
41}
42
43impl HasStore for ScoreCollector {
44    fn store(&self) -> Store {
45        Self::store(self)
46    }
47}
48
49impl Transferable for ScoreCollector {}