use std::collections::HashSet;
use serde::{Deserialize, Serialize};
use super::coord::TreeCoord;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct UpgradeTreeState {
#[serde(default)]
pub bought: HashSet<TreeCoord>,
#[serde(default)]
pub cursor: TreeCoord,
#[serde(default)]
pub last_bought: Option<TreeCoord>,
}
impl Default for UpgradeTreeState {
fn default() -> Self {
Self {
bought: HashSet::new(),
cursor: TreeCoord::ORIGIN,
last_bought: None,
}
}
}
impl UpgradeTreeState {
pub fn is_owned(&self, c: TreeCoord) -> bool {
self.bought.contains(&c)
}
pub fn owned_count(&self) -> usize {
self.bought.len()
}
}