diff options
| author | Freya Murphy <freya@freyacat.org> | 2025-10-08 20:37:19 -0400 |
|---|---|---|
| committer | Freya Murphy <freya@freyacat.org> | 2025-10-08 20:39:00 -0400 |
| commit | f7d7a32fe0efa34cb0c3be7feac747752de428c9 (patch) | |
| tree | 5a75df9228b2f0038fb54750e0ff1df4ab7f90d6 /graphics/src/lib.rs | |
| parent | Rebase changes into docs and README (diff) | |
| download | DungeonCrawl-f7d7a32fe0efa34cb0c3be7feac747752de428c9.tar.gz DungeonCrawl-f7d7a32fe0efa34cb0c3be7feac747752de428c9.tar.bz2 DungeonCrawl-f7d7a32fe0efa34cb0c3be7feac747752de428c9.zip | |
graphics: create Renderer struct
Diffstat (limited to 'graphics/src/lib.rs')
| -rw-r--r-- | graphics/src/lib.rs | 49 |
1 files changed, 19 insertions, 30 deletions
diff --git a/graphics/src/lib.rs b/graphics/src/lib.rs index 1991c18..42f0a39 100644 --- a/graphics/src/lib.rs +++ b/graphics/src/lib.rs @@ -1,6 +1,11 @@ -use dungeon::Dungeon; use raylib::prelude::*; +#[cfg(debug_assertions)] +use crate::render::DebugInfo; +use crate::render::Renderer; + +pub mod render; + pub struct Window { handle: RaylibHandle, thread: RaylibThread, @@ -10,14 +15,13 @@ impl Window { /// Instantiates a new window provided with the default /// window `width`, `height`, and `title`. pub fn new(width: i32, height: i32, title: &str) -> Self { - let (mut handle, thread) = raylib::init() + let (handle, thread) = raylib::init() .size(width, height) .title(title) .resizable() .log_level(TraceLogLevel::LOG_WARNING) + .vsync() .build(); - // Set the target FPS (TODO: modify based on target system) - handle.set_target_fps(60); Self { handle, thread } } @@ -27,33 +31,18 @@ impl Window { !self.handle.window_should_close() } - /// Draws a frame provided with the game state `Dungeon` - pub fn draw(&mut self, _dungeon: &Dungeon) { - let fps = self.handle.get_fps(); - let mut draw = self.handle.begin_drawing(&self.thread); - draw.clear_background(Color::BLACK); - - let fps_str = format!("{fps}"); - draw.draw_text(&fps_str, 100, 100, 30, Color::YELLOW); - - // Clear the background to black - draw.clear_background(Color::BLACK); - - draw.draw_text("test", 10, 10, 20, Color::GREEN); - } - - /// Draw game over screen - pub fn game_over(&mut self) { - unimplemented!() - } - - /// Draw player sprites - pub fn draw_player(&mut self, _dungeon: &Dungeon) { - unimplemented!() + /// Returns the renderer for the game + #[cfg(debug_assertions)] + pub fn renderer(&mut self) -> Renderer<'_> { + let debug = DebugInfo::new(&self.handle); + let handle = self.handle.begin_drawing(&self.thread); + Renderer::new(handle, debug) } - /// Draw dungeon tiles - pub fn draw_tiles(&mut self, _dungeon: &Dungeon) { - unimplemented!() + /// Returns the renderer for the game + #[cfg(not(debug_assertions))] + pub fn renderer(&mut self) -> Renderer<'_> { + let handle = self.handle.begin_drawing(&self.thread); + Renderer::new(handle) } } |