diff options
Diffstat (limited to 'graphics/src/lib.rs')
| -rw-r--r-- | graphics/src/lib.rs | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/graphics/src/lib.rs b/graphics/src/lib.rs index c625025..9917a94 100644 --- a/graphics/src/lib.rs +++ b/graphics/src/lib.rs @@ -3,12 +3,13 @@ use std::cell::RefCell; +use dungeon::Dungeon; use raylib::prelude::*; -use crate::assets::{AudioData, ImageData}; -use crate::render::{FrameRendererImpl, Renderer}; +use crate::audio::Audio; +use crate::render::Renderer; -mod assets; +mod audio; mod render; /// The `KeyCode` type represents different keys being pressed on the users keyboard @@ -29,7 +30,7 @@ pub struct Window { handle: RefCell<RaylibHandle>, thread: RaylibThread, // audio data/subsystem - audio: AudioData, + audio: Audio, } impl Window { /// Instantiates a new window provided with the default @@ -50,12 +51,11 @@ impl Window { .vsync() .build(); - // load assets - let audio = AudioData::load()?; - let image = ImageData::load(&mut handle, &thread)?; + // load audio + let audio = Audio::load()?; // load renderer - let renderer = Renderer::new(&mut handle, &thread, image)?; + let renderer = Renderer::new(&mut handle, &thread)?; Ok(Self { handle: RefCell::new(handle), @@ -71,17 +71,20 @@ impl Window { !self.handle.borrow().window_should_close() } - /// Returns the per frame renderer for the game + /// Draws the next ingame frame /// /// # Examples /// ```no_run /// use graphics::Window; + /// use dungeon::Dungeon; /// + /// let dungeon = Dungeon::new(); /// let mut window = Window::new(800, 600, "Dungeon Crawl").unwrap(); - /// let mut renderer = window.renderer(); + /// window.draw_frame(&dungeon); /// ``` - pub fn renderer(&mut self) -> FrameRendererImpl<'_> { - self.renderer.invoke(self.handle.get_mut(), &self.thread) + pub fn draw_frame(&mut self, dungeon: &Dungeon) { + self.renderer + .draw_frame(self.handle.get_mut(), &self.thread, dungeon); } /// Returns the per frame delta time @@ -110,7 +113,7 @@ impl Window { } /// Get audio data for the window - pub fn audio(&self) -> &AudioData { + pub fn audio(&self) -> &Audio { &self.audio } } |