diff options
| author | Freya Murphy <freya@freyacat.org> | 2025-11-06 21:01:34 -0500 |
|---|---|---|
| committer | Freya Murphy <freya@freyacat.org> | 2025-11-06 21:09:00 -0500 |
| commit | 73c4521b723129dff2d7c4ccac4d48dd16eae2b3 (patch) | |
| tree | 7f188f740bed947a34b380d8234c7f1e8a2eb170 /graphics/src/lib.rs | |
| parent | Light bsp refactoring (diff) | |
| download | DungeonCrawl-73c4521b723129dff2d7c4ccac4d48dd16eae2b3.tar.gz DungeonCrawl-73c4521b723129dff2d7c4ccac4d48dd16eae2b3.tar.bz2 DungeonCrawl-73c4521b723129dff2d7c4ccac4d48dd16eae2b3.zip | |
graphics: refactor renderer
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 } } |