//! Input state resources.

pub mod gamepad;
pub mod keyboard;
pub mod mouse;
pub mod touch;

pub use gamepad::*;
pub use keyboard::*;
pub use mouse::*;
pub use touch::*;

/// Combined input state for all input devices.
#[derive(Default)]
pub struct Input {
    /// Keyboard key states.
    pub keyboard: Keyboard,
    /// Mouse button and position state.
    pub mouse: Mouse,
    /// Gamepad controller state.
    pub gamepad: Gamepad,
    /// Touch screen input state.
    pub touch: Touch,
}

/// File dropped onto the window.
#[derive(Clone)]
pub struct DroppedFile {
    /// Original filename.
    pub name: String,
    /// File contents.
    pub data: Vec<u8>,
}
