use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::{
input::{ActionState, KeyCode},
message::MessageType,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegisterAction {
pub id: String,
pub default_key: KeyCode,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ActionEvent {
pub name: String,
pub state: ActionState,
}
impl MessageType for ActionEvent {
fn id() -> &'static str {
"builtin:action_event"
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize_repr, Deserialize_repr)]
#[repr(u8)]
pub enum ActionKind {
Pressed = 1,
Released = 2,
}