use bevy_app::App;
use bevy_input::gamepad::GamepadConnection;
use crossbeam::channel::Sender;
use crate::{GamepadId, error::GamepadError, profile::Changed};
mod apple;
pub use apple::AppleGameControllerPlatform;
pub trait Platform: Sized {
type Handle;
fn new(app: &mut App, tx: Sender<GamepadPlatformEvent>) -> Result<Self, GamepadError>;
}
#[derive(Debug)]
pub enum GamepadPlatformEvent {
Error(GamepadError),
Connected {
id: GamepadId,
connection: GamepadConnection,
},
Disconnected {
id: GamepadId,
},
InputChanged {
id: GamepadId,
change: Changed,
},
}