use std::path::PathBuf;
use crate::input::{GamepadAxis, GamepadButton, GamepadStick, Key, MouseButton};
use crate::math::Vec2;
use crate::{Context, TetraError};
#[allow(unused_variables)]
pub trait State<E = TetraError> {
fn update(&mut self, ctx: &mut Context) -> Result<(), E> {
Ok(())
}
fn draw(&mut self, ctx: &mut Context) -> Result<(), E> {
Ok(())
}
fn event(&mut self, ctx: &mut Context, event: Event) -> Result<(), E> {
Ok(())
}
}
#[non_exhaustive]
#[derive(Debug, Clone)]
pub enum Event {
Resized {
width: i32,
height: i32,
},
FocusGained,
FocusLost,
KeyPressed {
key: Key,
},
KeyReleased {
key: Key,
},
MouseButtonPressed {
button: MouseButton,
},
MouseButtonReleased {
button: MouseButton,
},
MouseMoved {
position: Vec2<f32>,
delta: Vec2<f32>,
},
MouseWheelMoved {
amount: Vec2<i32>,
},
GamepadAdded {
id: usize,
},
GamepadRemoved {
id: usize,
},
GamepadButtonPressed {
id: usize,
button: GamepadButton,
},
GamepadButtonReleased {
id: usize,
button: GamepadButton,
},
GamepadAxisMoved {
id: usize,
axis: GamepadAxis,
position: f32,
},
GamepadStickMoved {
id: usize,
stick: GamepadStick,
position: Vec2<f32>,
},
TextInput {
text: String,
},
FileDropped {
path: PathBuf,
},
}