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