2025-05-02 16:15:54 -04:00
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
|
|
|
use super::{Item, Storage};
|
|
|
|
|
2025-06-23 21:14:38 -04:00
|
|
|
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
|
2025-05-02 16:15:54 -04:00
|
|
|
pub struct GenericStorage<const N: usize> {
|
|
|
|
pub slots: Vec<Item>,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<const N: usize> Storage for GenericStorage<N> {
|
|
|
|
fn max_slots(&self) -> u32 {
|
|
|
|
N as u32
|
|
|
|
}
|
|
|
|
|
|
|
|
fn num_items(&self) -> u32 {
|
|
|
|
self.slots.iter().filter(|item| item.quantity > 0).count() as u32
|
|
|
|
}
|
|
|
|
|
|
|
|
fn get_slot_mut(&mut self, index: u16) -> &mut Item {
|
|
|
|
self.slots.get_mut(index as usize).unwrap()
|
|
|
|
}
|
|
|
|
|
|
|
|
fn get_slot(&self, index: u16) -> &Item {
|
|
|
|
self.slots.get(index as usize).unwrap()
|
|
|
|
}
|
|
|
|
}
|