Skip to main content

tengu_api/state/
barracks.rs

1use super::{shogun::BARRACKS_SLOT_EMPTY, DojosAccount};
2use steel::*;
3
4#[repr(C)]
5#[derive(Clone, Copy, Debug, PartialEq, bytemuck::Pod, bytemuck::Zeroable)]
6pub struct Barracks {
7    pub dojo: Pubkey,
8    pub level: u64, // 1-4
9    pub slots: [u64; 12], // pool indices; BARRACKS_SLOT_EMPTY = empty
10    pub buffer1: u64,
11    pub buffer2: u64,
12    pub buffer3: u64,
13    pub buffer4: u64,
14}
15
16account!(DojosAccount, Barracks);
17
18impl Barracks {
19    pub fn max_slots(&self) -> u64 {
20        self.level * crate::consts::SLOTS_PER_LEVEL
21    }
22
23    pub fn is_slot_valid(&self, slot: u64) -> bool {
24        slot < self.max_slots()
25    }
26
27    pub fn is_slot_empty(&self, i: usize) -> bool {
28        self.slots[i] == BARRACKS_SLOT_EMPTY
29    }
30}