From 6b91bd09c470d28625791dca95cf197b1bb178cc Mon Sep 17 00:00:00 2001 From: Thilo Behnke Date: Mon, 2 May 2022 14:04:39 +0200 Subject: [PATCH] wip --- pong/src/event.rs | 40 ++++++++++++++++++++++++++++++++++++++++ pong/src/lib.rs | 1 + pong/src/pong.rs | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 pong/src/event.rs diff --git a/pong/src/event.rs b/pong/src/event.rs new file mode 100644 index 0000000..866042d --- /dev/null +++ b/pong/src/event.rs @@ -0,0 +1,40 @@ + +pub mod event { + pub struct Event { + pub msg: String + } + + pub trait EventWriterImpl { + fn write(&self, event: Event) -> std::io::Result<()>; + } + + pub struct FileEventWriterImpl {} + impl EventWriterImpl for FileEventWriterImpl { + fn write(&self, event: Event) -> std::io::Result<()> { + todo!() + } + } + + pub struct EventWriter { + writer_impl: Box + } + + impl EventWriter { + fn new(writer_impl: Box) -> EventWriter { + EventWriter { + writer_impl + } + } + + pub fn file() -> EventWriter { + EventWriter { + writer_impl: Box::new(FileEventWriterImpl {}) + } + } + // TODO: Kafka + + pub fn write(&self, event: Event) -> std::io::Result<()> { + self.writer_impl.write(event) + } + } +} diff --git a/pong/src/lib.rs b/pong/src/lib.rs index c1c5724..0ba1216 100644 --- a/pong/src/lib.rs +++ b/pong/src/lib.rs @@ -4,3 +4,4 @@ pub mod game_object; pub mod geom; pub mod pong; pub mod utils; +pub mod event; diff --git a/pong/src/pong.rs b/pong/src/pong.rs index 4ca8472..891038f 100644 --- a/pong/src/pong.rs +++ b/pong/src/pong.rs @@ -56,3 +56,37 @@ pub mod pong_collisions { player_pos.y = new_pos.y; } } + +pub mod pong_events { + use crate::event::event::EventWriter; + use crate::geom::geom::Vector; + + pub enum PongEventType { + GameObjUpdate(GameObjUpdate) + } + + pub struct GameObjUpdate { + pub pos: Vector, + pub vel: Vector, + pub orientation: Vector + } + + pub struct PongEventWriter { + writer: EventWriter + } + + impl PongEventWriter { + pub fn new() -> PongEventWriter { + PongEventWriter { + writer: EventWriter::file() + } + } + + pub fn write(&self, event: PongEventType) -> std::io::Result<()> { + // TODO: Event to string + self.writer.write() + } + } + + +}