Files
creaturedex/src/navigation/state.rs
T
2026-08-22 13:35:58 +02:00

42 lines
1005 B
Rust

use crate::views::{main_menu::MainMenu, view::View};
use alloc::vec;
use alloc::vec::Vec;
#[derive(Debug, Clone)]
pub struct NavigationState {
pub screens: Vec<View>,
}
impl Default for NavigationState {
fn default() -> Self {
Self {
screens: vec![View::Main(MainMenu { selected: 0 })],
}
}
}
impl NavigationState {
pub fn new() -> Self {
Self::default()
}
pub fn back(&mut self) -> &View {
match &self.screens.len() {
0 => {
log::info!("No screens to go back to");
return self.screens.last().unwrap();
}
1 => {
log::info!("Only one screen on stack, cannot go back");
return self.screens.last().unwrap();
}
_ => {
log::info!("Going back to previous screen");
self.screens.pop();
return self.screens.last().unwrap();
}
}
}
}