Nuevo sistema de Escenas.
Nos quitamos del medio la cosa rara del SceneBuilder. Simplificamos la estructura y la hacemos más o menos segura.
This commit is contained in:
@@ -1,48 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include "Scene/SceneBuilder.h"
|
||||
#include "Scene/Scene.h"
|
||||
|
||||
#include "Scenes/MainScene.hpp"
|
||||
#include "Scenes/TestScene2.hpp"
|
||||
|
||||
//#include "Logging\Logger.h"
|
||||
|
||||
|
||||
enum LasEscenas
|
||||
{
|
||||
mainMenu = 0, nivel1
|
||||
};
|
||||
|
||||
|
||||
class GameScenes : public UE::SceneBuilder
|
||||
{
|
||||
public:
|
||||
GameScenes()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
UE::Scene* InstanciateScene(int sceneID) override
|
||||
{
|
||||
switch (sceneID)
|
||||
{
|
||||
case LasEscenas::mainMenu:
|
||||
{
|
||||
UE::Scene* sc = new MainScene("Main");
|
||||
return sc;
|
||||
break;
|
||||
}
|
||||
case LasEscenas::nivel1:
|
||||
{
|
||||
UE::Scene* sc = new TestScene2("Test2");
|
||||
return sc;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return nullptr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
+7
-8
@@ -7,7 +7,6 @@
|
||||
#include <ImGui/imgui_impl_opengl3.h>
|
||||
|
||||
#include "UberGame1.h"
|
||||
#include "GameScenes.hpp"
|
||||
|
||||
#include "UberEngine.h"
|
||||
|
||||
@@ -33,7 +32,6 @@ int main(int argc, char* args[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void Init()
|
||||
{
|
||||
UE::Logger::InitLogger();
|
||||
@@ -51,7 +49,8 @@ void Load()
|
||||
//Cargamos la escena que queramos tras tener todos los Assets pertinentes cargados.
|
||||
//Si la escena contiene su propio AssetManager y los carga ella misma, no ser� necesario.
|
||||
//Game::GetSceneManager()->LoadScene("Main");
|
||||
Game::GetSceneManager()->NewLoadScene(LasEscenas::mainMenu);
|
||||
Game::GetSceneManager()->LoadScene(new MainScene());
|
||||
Game::GetSceneManager()->SwitchScene("MainScene");
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +97,7 @@ void Loop()
|
||||
if (io.WantCaptureMouse) { continue; }
|
||||
|
||||
|
||||
Game::GetSceneManager()->GetActiveScenePtr()->SceneHandleEvents(&eventHandler);
|
||||
Game::GetSceneManager()->GetCurrentScenePtr()->SceneHandleEvents(&eventHandler);
|
||||
if (eventHandler.type == SDL_QUIT)
|
||||
{
|
||||
_quit = true;
|
||||
@@ -113,10 +112,10 @@ void Loop()
|
||||
switch (eventHandler.key.keysym.sym)
|
||||
{
|
||||
case SDLK_1:
|
||||
Game::GetSceneManager()->NewLoadScene(LasEscenas::mainMenu);
|
||||
Game::GetSceneManager()->LoadAndSwitchScene(new MainScene());
|
||||
break;
|
||||
case SDLK_2:
|
||||
Game::GetSceneManager()->NewLoadScene(LasEscenas::nivel1);
|
||||
Game::GetSceneManager()->LoadAndSwitchScene(new TestScene2());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -159,7 +158,7 @@ void Loop()
|
||||
Game::GetRenderer()->SetCamPosition(camPos.x, camPos.y);
|
||||
}
|
||||
|
||||
Game::GetSceneManager()->GetActiveScenePtr()->SceneUpdate();
|
||||
Game::GetSceneManager()->GetCurrentScenePtr()->SceneUpdate();
|
||||
|
||||
//Game::GetRenderer()->QueueDrawCall(4, DestR2, test1);
|
||||
//Game::GetRenderer()->QueueDrawCall(1, DestR, background);
|
||||
@@ -173,7 +172,7 @@ void Loop()
|
||||
Game::GetRenderer()->NewFrame();
|
||||
|
||||
//Renderiza la escena.
|
||||
Game::GetSceneManager()->GetActiveScenePtr()->SceneRender();
|
||||
Game::GetSceneManager()->GetCurrentScenePtr()->SceneRender();
|
||||
|
||||
//As� podemos renderizar cosas de ImGui cuando estemos entre NewFrame y EndFrame.
|
||||
bool show = true;
|
||||
|
||||
@@ -23,7 +23,10 @@ class MainScene : public UE::Scene
|
||||
{
|
||||
public:
|
||||
|
||||
MainScene(std::string sceneName) : Scene(sceneName) {}
|
||||
MainScene() : Scene("MainScene")
|
||||
{
|
||||
//_sceneName = "MainScene";
|
||||
}
|
||||
|
||||
|
||||
void SceneLoad() override
|
||||
|
||||
@@ -18,7 +18,10 @@ class TestScene2 : public UE::Scene
|
||||
{
|
||||
public:
|
||||
|
||||
TestScene2(std::string sceneName) : Scene(sceneName) {}
|
||||
TestScene2() : Scene("TestScene")
|
||||
{
|
||||
//_sceneName = "TestScene";
|
||||
}
|
||||
|
||||
void SceneLoad() override
|
||||
{
|
||||
|
||||
@@ -5,9 +5,6 @@
|
||||
#include "Assets/AssetManager.h"
|
||||
|
||||
#include "Scene/SceneManager.h"
|
||||
#include "Scene/SceneBuilder.h"
|
||||
|
||||
#include "GameScenes.hpp"
|
||||
|
||||
//Sobrecarga de SceneBuilder que devuelve las escenas correctas para este juego.
|
||||
//#include "GameScenes.hpp"
|
||||
@@ -16,24 +13,23 @@ UE::Renderer* Game::mainRenderer;
|
||||
UE::AssetManager* Game::asManager;
|
||||
UE::SceneManager* Game::scManager;
|
||||
|
||||
GameScenes Game::_sceneBuilder;
|
||||
|
||||
void Game::InitGame()
|
||||
{
|
||||
//Cargamos el Renderer.
|
||||
//Hay que implementar un sistema de flags o
|
||||
// una struct de configuración para la inicialización del renderer.
|
||||
mainRenderer = new UE::Renderer(640, 480, 5);
|
||||
mainRenderer->InitRenderer();
|
||||
|
||||
UE_LOG_INFO("Renderer Created.");
|
||||
|
||||
//Cargamos el AssetManager
|
||||
asManager = new UE::AssetManager(mainRenderer->GetSDLRenderer());
|
||||
asManager->InitAssetManager();
|
||||
UE_LOG_INFO("AssetManager Created.");
|
||||
|
||||
//Creamos el SceneBuilder de este juego.
|
||||
_sceneBuilder = GameScenes();
|
||||
|
||||
//Cargamos el SceneManager
|
||||
scManager = new UE::SceneManager();
|
||||
scManager->InitSceneManager(&_sceneBuilder);
|
||||
}
|
||||
|
||||
void Game::CleanGame()
|
||||
|
||||
@@ -5,11 +5,8 @@ namespace UE
|
||||
class Renderer;
|
||||
class AssetManager;
|
||||
class SceneManager;
|
||||
class SceneBuilder;
|
||||
}
|
||||
|
||||
class GameScenes;
|
||||
|
||||
class Game
|
||||
{
|
||||
public:
|
||||
@@ -25,6 +22,4 @@ private:
|
||||
static UE::Renderer* mainRenderer;
|
||||
static UE::AssetManager* asManager;
|
||||
static UE::SceneManager* scManager;
|
||||
|
||||
static GameScenes _sceneBuilder;
|
||||
};
|
||||
Reference in New Issue
Block a user