use std::collections::HashMap;
pub struct BasicState {
flags: HashMap<String, bool>,
values: HashMap<String, i32>,
current: String,
loader: String
}
pub trait State {
fn new() -> Self where Self: Sized;
fn clear(&mut self);
fn set_scenario(&mut self, name: String);
fn has_next_scenario(&self) -> bool;
fn get_current_scenario(&self) -> String;
fn get_next_scenario(&self) -> String;
fn load_scenario(&mut self);
}
impl State for BasicState {
fn new() -> BasicState {
BasicState {
flags: HashMap::new(),
values: HashMap::new(),
current: "".to_string(),
loader: "start".to_string()
}
}
fn clear(&mut self) {
self.flags.clear();
self.values.clear();
self.current = "".to_string();
self.loader = "start".to_string();
}
fn set_scenario(&mut self, name: String) {
self.loader = name;
}
fn has_next_scenario(&self) -> bool {
return !self.loader.is_empty();
}
fn get_current_scenario(&self) -> String {
return self.current.clone();
}
fn get_next_scenario(&self) -> String {
return self.loader.clone();
}
fn load_scenario(&mut self) {
self.current = self.loader.clone();
self.loader = "".to_string();
}
}