diff --git a/Cargo.lock b/Cargo.lock index b8a5d84..611d6f5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -690,6 +690,10 @@ dependencies = [ "winit", ] +[[package]] +name = "moonhare_event" +version = "0.1.0" + [[package]] name = "moonhare_graphics" version = "0.1.0" @@ -703,6 +707,10 @@ dependencies = [ "log", ] +[[package]] +name = "moonhare_window" +version = "0.1.0" + [[package]] name = "ndk" version = "0.9.0" diff --git a/Cargo.toml b/Cargo.toml index 2288eab..c5ecf4f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,10 @@ [workspace] resolver = "3" members = [ - "moonhare_engine", - "moonhare_graphics", "moonhare_log", + "moonhare_engine", "moonhare_event", + "moonhare_graphics", + "moonhare_log", + "moonhare_window", "playground" ] diff --git a/moonhare_event/Cargo.toml b/moonhare_event/Cargo.toml new file mode 100644 index 0000000..3fff50a --- /dev/null +++ b/moonhare_event/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "moonhare_event" +edition = "2024" +version.workspace = true +authors.workspace = true + +[dependencies] diff --git a/moonhare_event/src/event.rs b/moonhare_event/src/event.rs new file mode 100644 index 0000000..acaba4b --- /dev/null +++ b/moonhare_event/src/event.rs @@ -0,0 +1,12 @@ +pub enum EventType { + None, + WindowClose, WindowResize, + KeyPressed, KeyReleased, + MouseButtonPressed, MouseButtonReleased, MouseMoved, MouseScrolled +} + +/// Base Class for Engine Events +pub trait Event { + fn get_event_name() -> &'static str; + fn get_event_type() -> EventType; +} \ No newline at end of file diff --git a/moonhare_event/src/event_listener.rs b/moonhare_event/src/event_listener.rs new file mode 100644 index 0000000..62ca172 --- /dev/null +++ b/moonhare_event/src/event_listener.rs @@ -0,0 +1,5 @@ +use crate::event::Event; + +pub trait EventListener { + fn on_event(event: T); +} \ No newline at end of file diff --git a/moonhare_event/src/events/key_events/key_pressed_event.rs b/moonhare_event/src/events/key_events/key_pressed_event.rs new file mode 100644 index 0000000..75bd104 --- /dev/null +++ b/moonhare_event/src/events/key_events/key_pressed_event.rs @@ -0,0 +1,19 @@ +use crate::{event::Event,}; + +struct KeyPressedEvent{} + +const KEY_PRESSED_EVENT_NAME: &str = "KeyPressedEvent"; + +impl Event for KeyPressedEvent { + fn get_event_name() -> &'static str { + KEY_PRESSED_EVENT_NAME + } + + fn get_event_type() -> crate::event::EventType { + crate::event::EventType::KeyPressed + } +} + +impl super::KeyEvent for KeyPressedEvent { + +} \ No newline at end of file diff --git a/moonhare_event/src/events/key_events/mod.rs b/moonhare_event/src/events/key_events/mod.rs new file mode 100644 index 0000000..9b0b3a5 --- /dev/null +++ b/moonhare_event/src/events/key_events/mod.rs @@ -0,0 +1,9 @@ +use crate::event::Event; + +pub mod key_pressed_event; + +pub trait KeyEvent: Event { + fn get_key_code() { + + } +} \ No newline at end of file diff --git a/moonhare_event/src/events/mod.rs b/moonhare_event/src/events/mod.rs new file mode 100644 index 0000000..e29b629 --- /dev/null +++ b/moonhare_event/src/events/mod.rs @@ -0,0 +1,3 @@ +pub mod key_events; +pub mod mouse_events; +pub mod window_events; \ No newline at end of file diff --git a/moonhare_event/src/events/mouse_events/mod.rs b/moonhare_event/src/events/mouse_events/mod.rs new file mode 100644 index 0000000..13dc77b --- /dev/null +++ b/moonhare_event/src/events/mouse_events/mod.rs @@ -0,0 +1,5 @@ +use crate::event::Event; + +pub trait MouseEvent: Event { + +} \ No newline at end of file diff --git a/moonhare_event/src/events/window_events/mod.rs b/moonhare_event/src/events/window_events/mod.rs new file mode 100644 index 0000000..c52e95c --- /dev/null +++ b/moonhare_event/src/events/window_events/mod.rs @@ -0,0 +1,5 @@ +use crate::event::Event; + +pub trait WindowEvent: Event { + +} \ No newline at end of file diff --git a/moonhare_event/src/lib.rs b/moonhare_event/src/lib.rs new file mode 100644 index 0000000..6c1c6a7 --- /dev/null +++ b/moonhare_event/src/lib.rs @@ -0,0 +1,3 @@ +pub mod event; +pub mod event_listener; +pub mod events; \ No newline at end of file diff --git a/moonhare_window/Cargo.toml b/moonhare_window/Cargo.toml new file mode 100644 index 0000000..acf6a50 --- /dev/null +++ b/moonhare_window/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "moonhare_window" +edition = "2024" +version.workspace = true +authors.workspace = true + +[dependencies] diff --git a/moonhare_window/src/lib.rs b/moonhare_window/src/lib.rs new file mode 100644 index 0000000..b93cf3f --- /dev/null +++ b/moonhare_window/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: u64, right: u64) -> u64 { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +}