diff --git a/game/assets/levels_tmx/test_map.tmx b/game/assets/levels_tmx/test_map.tmx
index afc8f06..3a91cf6 100644
--- a/game/assets/levels_tmx/test_map.tmx
+++ b/game/assets/levels_tmx/test_map.tmx
@@ -1,9 +1,11 @@
diff --git a/game/assets/levels_tmx/abwsx3mzcgs21.tsx b/game/assets/levels_tmx/tilemap1.tsx
similarity index 52%
rename from game/assets/levels_tmx/abwsx3mzcgs21.tsx
rename to game/assets/levels_tmx/tilemap1.tsx
index 9092881..50f0c20 100644
--- a/game/assets/levels_tmx/abwsx3mzcgs21.tsx
+++ b/game/assets/levels_tmx/tilemap1.tsx
@@ -1,4 +1,4 @@
-
+
diff --git a/game/src/scenes/ingame_scene/hud.rs b/game/src/scenes/ingame_scene/hud.rs
index 51caa68..e489fbb 100644
--- a/game/src/scenes/ingame_scene/hud.rs
+++ b/game/src/scenes/ingame_scene/hud.rs
@@ -1,14 +1,22 @@
-use crate::{GameConfig, utilities::render_layer::ScreenSpaceRender};
+use crate::GameConfig;
+use crate::utilities::render_layer::ScreenSpaceRender;
+use crate::utilities::datastore::*;
use raylib::prelude::*;
use super::InGameScreen;
+
impl ScreenSpaceRender for InGameScreen {
fn render_screen_space(
&self,
raylib: &mut crate::utilities::non_ref_raylib::HackedRaylibHandle,
- config: &GameConfig
+ config: &GameConfig,
) {
- // Calculate the logo position
- let screen_size = raylib.get_screen_size();
+
+ raylib.draw_texture(&self.levels[0].level_texture, 0, 0, Color::WHITE);
+
}
}
+
+
+
+
diff --git a/game/src/scenes/ingame_scene/mod.rs b/game/src/scenes/ingame_scene/mod.rs
index 3d70c6f..77f3585 100644
--- a/game/src/scenes/ingame_scene/mod.rs
+++ b/game/src/scenes/ingame_scene/mod.rs
@@ -1,11 +1,7 @@
use dirty_fsm::{Action, ActionFlag};
use raylib::prelude::*;
-use crate::{
- character::MainCharacter,
- context::GameContext,
- utilities::render_layer::{FrameUpdate, ScreenSpaceRender, WorldSpaceRender},
-};
+use crate::{character::MainCharacter, context::GameContext, utilities::{datastore::*, render_layer::{FrameUpdate, ScreenSpaceRender, WorldSpaceRender}}};
use super::{Scenes, ScreenError};
use tracing::{debug, trace};
@@ -14,15 +10,17 @@ mod hud;
mod update;
mod world;
+
#[derive(Debug)]
pub struct InGameScreen {
camera: Camera2D,
player: MainCharacter,
+ levels: Vec,
}
impl InGameScreen {
/// Construct a new `InGameScreen`
- pub fn new() -> Self {
+ pub fn new(levels: Vec, ) -> Self {
Self {
camera: Camera2D {
offset: Vector2::zero(),
@@ -31,6 +29,9 @@ impl InGameScreen {
zoom: 1.0,
},
player: MainCharacter::new(Vector2::new(0.0, -45.0)),
+ levels,
+
+
}
}
}
diff --git a/game/src/scenes/mod.rs b/game/src/scenes/mod.rs
index 7a0f1e9..7682a39 100644
--- a/game/src/scenes/mod.rs
+++ b/game/src/scenes/mod.rs
@@ -2,10 +2,7 @@ use self::{
fsm_error_screen::FsmErrorScreen, ingame_scene::InGameScreen, loading_screen::LoadingScreen,
main_menu_screen::MainMenuScreen,
};
-use crate::{
- context::GameContext,
- utilities::{datastore::ResourceLoadError, non_ref_raylib::HackedRaylibHandle},
-};
+use crate::{context::GameContext, utilities::{datastore::{ResourceLoadError, load_level_from_internal_data}, non_ref_raylib::HackedRaylibHandle}};
use dirty_fsm::StateMachine;
use raylib::RaylibThread;
@@ -40,6 +37,9 @@ pub fn build_screen_state_machine(
StateMachine,
ScreenError,
> {
+
+ let levels = vec![load_level_from_internal_data( raylib_handle, &thread, "levels_tmx/test_map.tmx", "levels_tmx/tilemap1.tsx").expect("Could not load test level.")];
+
let mut machine = StateMachine::new();
machine.add_action(Scenes::FsmErrorScreen, FsmErrorScreen::new())?;
machine.add_action(
@@ -47,6 +47,6 @@ pub fn build_screen_state_machine(
LoadingScreen::new(raylib_handle, thread)?,
)?;
machine.add_action(Scenes::MainMenuScreen, MainMenuScreen::new())?;
- machine.add_action(Scenes::InGameScene, InGameScreen::new())?;
+ machine.add_action(Scenes::InGameScene, InGameScreen::new(levels))?;
Ok(machine)
}
diff --git a/game/src/utilities/datastore.rs b/game/src/utilities/datastore.rs
index bb242e4..a304823 100644
--- a/game/src/utilities/datastore.rs
+++ b/game/src/utilities/datastore.rs
@@ -1,6 +1,6 @@
use std::{io::Write, path::Path};
-use raylib::{texture::Texture2D, RaylibHandle, RaylibThread};
+use raylib::{RaylibHandle, RaylibThread, math::Rectangle, texture::Texture2D};
use tempfile::{tempdir, NamedTempFile};
use tracing::debug;
use tiled::*;
@@ -67,10 +67,17 @@ pub fn load_texture_from_internal_data(
}
// Loading specific to level files.
-pub fn load_map_from_internal_data(path: &str) -> Result