Skip to main content

tengu_api/state/
config.rs

1use super::DojosAccount;
2use steel::*;
3
4#[repr(C)]
5#[derive(Clone, Copy, Debug, PartialEq, bytemuck::Pod, bytemuck::Zeroable)]
6pub struct Config {
7    pub genesis_slot: u64,
8    /// Slots per halving period. `0` disables halving. Default at genesis is ~6.048M slots (~28 days at ~0.4s/slot).
9    pub halving_period_slots: u64,
10    /// When `0`, scene purchases/rolls/salvage/active-scene switches are disabled and ore pool uses default scene (no bonus). Set to `1` when enabled.
11    pub scene_active: u64,
12    pub buffer2: u64,
13}
14
15impl Config {
16    /// Whether scene content and [`crate::state::Treasury::effective_spirit_power_with_scene`] bonuses apply.
17    #[inline]
18    pub fn scenes_enabled(&self) -> bool {
19        self.scene_active != 0
20    }
21
22    /// Scene id for emission / effective SP when [`Self::scenes_enabled`]; otherwise [`crate::consts::SCENE_DEFAULT_ID`].
23    #[inline]
24    pub fn effective_scene_id(&self, dojo_active_scene_id: u64) -> u64 {
25        if self.scenes_enabled() {
26            dojo_active_scene_id
27        } else {
28            crate::consts::SCENE_DEFAULT_ID
29        }
30    }
31}
32
33account!(DojosAccount, Config);