summaryrefslogtreecommitdiff
path: root/graphics/src/lib.rs
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-11-06 21:01:34 -0500
committerFreya Murphy <freya@freyacat.org>2025-11-06 21:09:00 -0500
commit73c4521b723129dff2d7c4ccac4d48dd16eae2b3 (patch)
tree7f188f740bed947a34b380d8234c7f1e8a2eb170 /graphics/src/lib.rs
parentLight bsp refactoring (diff)
downloadDungeonCrawl-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.rs29
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
}
}