use std::hash::Hash;
/// A simple enum that specififes what kind of messages a UI element can send or receive.
#[derive(Eq, Hash, PartialEq, Clone, Copy, Debug)]
pub enum UiMessage<T: Copy + Eq + Hash + Hash> {
/// An extern message, containing another Message of the specified type used by your gamestate. Never sent by elements on their own.
Extern(T),
/// A struct that is sent by an element when it is clicked (using the left mouse button), containing its ID. Elements with ID 0 will not send such messages.
Clicked(u32),
/// A struct that is sent by an element when it is clicked using the right mouse button, containing its ID. Elements with ID 0 will not send such messages.
ClickedRight(u32),
/// A struct that is sent by an element when one of its registered keys are pressed, containing its ID. Elements with ID 0 will not send such messages.
PressedKey(u32),
/// A struct that is sent if an element is 'triggered' in any way (key press or click) in addition to the specific event as above
Triggered(u32),
}