use crate::app::{
    App,
    views::{default_view, main_menu_view, skirmish_view},
};
use clap::ValueEnum;
use ratatui::{buffer::Buffer, layout::Rect, widgets::Widget};

#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, ValueEnum)]
pub enum View {
    MainMenu,
    Skirmish,
    PerkDecks,
    SkillsConfig,
}

impl Widget for &mut App {
    fn render(self, area: Rect, buf: &mut Buffer)
    where
        Self: Sized,
    {
        match self.view {
            View::MainMenu => main_menu_view(self, area, buf),
            View::Skirmish => skirmish_view(self, area, buf),
            _ => default_view(area, buf),
        }
    }
}
