diff --git a/.idea/Dicewars-Siedler.iml b/.idea/Dicewars-Siedler.iml
index f08604b..4c94235 100644
--- a/.idea/Dicewars-Siedler.iml
+++ b/.idea/Dicewars-Siedler.iml
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/.idea/editor.xml b/.idea/editor.xml
index 8a5949c..1798069 100644
--- a/.idea/editor.xml
+++ b/.idea/editor.xml
@@ -17,7 +17,7 @@
-
+
@@ -139,6 +139,7 @@
+
@@ -265,7 +266,6 @@
-
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e901d92..9f5d871 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -332,6 +332,8 @@ if(BUILD_GAME)
src/engine/core/EngineContext.h
src/engine/core/gui/uiMain/UiConfig.h
src/engine/renderer/RenderContext.h
+ src/game/scenes/MainGame.cpp
+ src/game/scenes/MainGame.h
)
target_compile_options(Dicewars_Siedler PRIVATE
-Wall
diff --git a/src/engine/core/scenes/SceneManager.cpp b/src/engine/core/scenes/SceneManager.cpp
index 73ee159..2278345 100644
--- a/src/engine/core/scenes/SceneManager.cpp
+++ b/src/engine/core/scenes/SceneManager.cpp
@@ -45,6 +45,8 @@ void SceneManager::update() {
void SceneManager::render() {
if (currentScene) {
+ glClearColor(0.3254901961, 0.6431372549, 0.9254901961f, 1.0f);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Todo: Refactor to a general renderer
currentScene->onRender();
}
}
diff --git a/src/engine/renderer/MasterRenderer.cpp b/src/engine/renderer/MasterRenderer.cpp
index 724b61e..30d7da8 100644
--- a/src/engine/renderer/MasterRenderer.cpp
+++ b/src/engine/renderer/MasterRenderer.cpp
@@ -13,7 +13,7 @@
void MasterRenderer::render(const Light &light, const Camera &camera) {
glEnable(GL_DEPTH_TEST);
glClearColor(0.3254901961, 0.6431372549, 0.9254901961f, 1.0f);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //Todo: Refactor to a general renderer
entityRenderer->prepare(camera, light, projectionMatrix);
entityRenderer->renderEntities(entities);
diff --git a/src/game/GameLayer.cpp b/src/game/GameLayer.cpp
index 728ffcc..79288d3 100644
--- a/src/game/GameLayer.cpp
+++ b/src/game/GameLayer.cpp
@@ -61,16 +61,6 @@ void GameLayer::onAttach()
//printf("Generated Terrain with %lu Tiles!\n", map->tiles.size());
-
- AssetManager::loadAsset("assets/buildings/stone_mason/stone_mason.json", loader);
- AssetManager::loadAsset("assets/buildings/forest_hut/cabin.json", loader);
- AssetManager::loadAsset("assets/buildings/forest_hut/level2/cabin.json", loader);
-
- auto modelTexture = AssetManager::loadTexture("warning", "assets/worldIcons/warning.png", loader);
- AssetManager::loadTexture("error", "assets/worldIcons/error.png", loader);
- AssetManager::loadTexture("upgrade", "assets/worldIcons/up-arrow.png", loader);
-
-
EventBus::getInstance().subscribe([this](const TurnChangedEvent& event) {
ProducingSystem::onTurnEnded(*entityManager);
});
diff --git a/src/game/scenes/MainGame.cpp b/src/game/scenes/MainGame.cpp
new file mode 100644
index 0000000..705d637
--- /dev/null
+++ b/src/game/scenes/MainGame.cpp
@@ -0,0 +1,40 @@
+//
+// Created by sebastian on 01.07.26.
+//
+
+#include "MainGame.h"
+
+#include "../GameLayer.h"
+#include "../UILayer.h"
+
+
+void MainGame::onEnter(EngineContext &ctx) {
+ gameMode=std::make_shared();
+
+ auto gameLayer = std::make_unique();
+ gameLayer->setGameMode(gameMode);
+ addLayer(std::move(gameLayer));
+
+ auto uiLayer = std::make_unique();
+ uiLayer->setGameMode(gameMode);
+ addLayer(std::move(uiLayer));
+}
+
+void MainGame::onExit() {
+ Scene::onExit();
+}
+
+std::vector MainGame::getRequiredAssets() {
+ std::vector requests;
+ // requests.emplace_back(ModelRequest("lowPolyTree", "assets/trees/lowPolyTree.obj"));
+ // requests.emplace_back(ModelRequest("lowPolyTree2", "assets/trees/tree.obj"));
+
+ requests.emplace_back(StagedModelRequest("stone_mason", "assets/buildings/stone_mason/stone_mason.json"));
+ requests.emplace_back(StagedModelRequest("cabin", "assets/buildings/forest_hit/cabin.json"));
+ requests.emplace_back(StagedModelRequest("cabin_l2", "assets/buildings/forest_hut/cabin.json"));
+
+ requests.emplace_back(TextureRequest("warning", "assets/worldIcons/warning.png"));
+ requests.emplace_back(TextureRequest("error", "assets/worldIcons/error.png"));
+ requests.emplace_back(TextureRequest("upgrade", "assets/worldIcons/up-arrow.png"));
+ return requests;
+}
diff --git a/src/game/scenes/MainGame.h b/src/game/scenes/MainGame.h
new file mode 100644
index 0000000..4151134
--- /dev/null
+++ b/src/game/scenes/MainGame.h
@@ -0,0 +1,22 @@
+//
+// Created by sebastian on 01.07.26.
+//
+
+#ifndef DICEWARS_SIEDLER_MAINGAME_H
+#define DICEWARS_SIEDLER_MAINGAME_H
+
+#include "../../engine/core/scenes/Scene.h"
+
+class MainGame : public Scene {
+public:
+ void onEnter(EngineContext &ctx) override;
+
+ void onExit() override;
+
+ std::vector getRequiredAssets() override;
+private:
+ std::shared_ptr gameMode;
+};
+
+
+#endif //DICEWARS_SIEDLER_MAINGAME_H
diff --git a/src/game/scenes/main/MainUiLayer.cpp b/src/game/scenes/main/MainUiLayer.cpp
index d758d93..fe9d932 100644
--- a/src/game/scenes/main/MainUiLayer.cpp
+++ b/src/game/scenes/main/MainUiLayer.cpp
@@ -4,8 +4,11 @@
#include "MainUiLayer.h"
+#include "../MainGame.h"
#include "../../../engine/core/EngineTime.h"
#include "../../../engine/core/gui/uiComponent/UiButton.h"
+#include "../../../engine/core/scenes/SceneManager.h"
+#include "../../../engine/core/scenes/SplashScreen.h"
#include "../../../engine/renderer/loader/AssetManager.h"
#include "events/QuitEvent.h"
@@ -34,9 +37,10 @@ void MainUiLayer::onAttach() {
*AssetManager::getUiTheme("default")->large, btnStyle2));
newGameBtn->addMouseListener([this](const MouseEventData& eventData) {
if (eventData.isCompleteClick(MouseButton::LEFT)) {
- auto newGameContainer = std::make_unique();
-
- uiStack->push(std::move(newGameContainer));
+ spdlog::info("New Game clicked");
+ Application::getInstance().sceneManager->switchTo(std::make_unique(), [this]() {
+ Application::getInstance().sceneManager->switchTo(std::make_unique());
+ });
}
});