summaryrefslogtreecommitdiff
path: root/graphics/src/lib.rs
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-10-08 20:37:19 -0400
committerFreya Murphy <freya@freyacat.org>2025-10-08 20:39:00 -0400
commitf7d7a32fe0efa34cb0c3be7feac747752de428c9 (patch)
tree5a75df9228b2f0038fb54750e0ff1df4ab7f90d6 /graphics/src/lib.rs
parentRebase changes into docs and README (diff)
downloadDungeonCrawl-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.rs49
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)
}
}