Rediseño del sistema de Assets para simplificar las texturas y los "SpriteSheets" que ya no son una clase.
Modificada la clase Sprite para adaptarse al nuevo funcionamiento de las texturas. Extraidas las clases Drawable y Transformable de Sprite, para poder hacer más objetos con esas características. Implementada una clase Time que calcula DeltaTime y limita los FPS. Al fin limpiamos el Main y eliminamos todo este código temporal. Cambios al sistema de escenas, pero se acerca un refactor completo al sistema. Hace bastante desde el último Commit. Ahí va todo. GLHF!
This commit is contained in:
@@ -1,27 +1,68 @@
|
||||
#include "Scene\Scene.h"
|
||||
#include "Render\Renderer.h"
|
||||
|
||||
#include "Drawables\Sprite.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
class MainScene : public UE::Scene
|
||||
{
|
||||
public:
|
||||
|
||||
MainScene(std::string sceneName) : Scene(sceneName) {}
|
||||
|
||||
|
||||
void SceneLoad() override
|
||||
{
|
||||
std::cout << "Hey! MainScene! - ID: " << id << std::endl;
|
||||
UE_LOG_INFO("Escena {0} ha sido cargada", _sceneName);
|
||||
|
||||
UE::AssetManager* as = Game::GetAssetManager();
|
||||
SDL_Texture* test1Texture = as->getTexture("test1");
|
||||
|
||||
UE::Sprite sp1(test1Texture, as->getTexureRects("test1"), 0, 2, glm::vec2(55, 60), glm::vec2(100, 100));
|
||||
|
||||
UE::Sprite sp2(test1Texture, as->getTexureRects("test1"), 0, 1, glm::vec2(50, 45), glm::vec2(145, 145));
|
||||
|
||||
UE::Sprite bg(as->getTexture("bg1"), as->getTexureRects("bg1"), 1, 0, glm::vec2(0, 0), Game::GetRenderer()->GetScreenSize());
|
||||
|
||||
sprites.push_back(sp1);
|
||||
sprites.push_back(sp2);
|
||||
sprites.push_back(bg);
|
||||
|
||||
}
|
||||
|
||||
void SceneUpdate() override
|
||||
{
|
||||
std::cout << "MainScene actualizandose! - ID: " << id << std::endl;
|
||||
UE_LOG_INFO("Escena {0} UPDATE", _sceneName);
|
||||
|
||||
UE::Renderer* renderer;
|
||||
renderer = Game::GetRenderer();
|
||||
|
||||
glm::vec2 screenSize = Game::GetRenderer()->GetScreenSize();
|
||||
|
||||
UE::Sprite& sp1 = sprites.at(0);
|
||||
glm::vec2 pos = sp1.GetPosition();
|
||||
if (pos.x > screenSize.x) { pos.x -= 1000; } else { pos.x += 200 * UE::Time::deltaTime; }
|
||||
|
||||
sp1.SetPosition(pos);
|
||||
|
||||
|
||||
for (UE::Sprite sp : sprites)
|
||||
{
|
||||
renderer->Render(sp);
|
||||
}
|
||||
}
|
||||
|
||||
void SceneUnload() override
|
||||
{
|
||||
std::cout << "MainScene descnsando! - ID: " << id << std::endl;
|
||||
UE_LOG_INFO("Escena {0} se ha descargado.", _sceneName);
|
||||
sprites.clear();
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
std::vector<UE::Sprite> sprites;
|
||||
|
||||
};
|
||||
@@ -5,20 +5,23 @@
|
||||
|
||||
class TestScene2 : public UE::Scene
|
||||
{
|
||||
public:
|
||||
|
||||
using Scene::Scene;
|
||||
|
||||
void SceneLoad() override
|
||||
{
|
||||
std::cout << "Scena de prueba 2 cargada" << id << std::endl;
|
||||
UE_LOG_INFO("Escena {0} ha sido cargada", _sceneName);
|
||||
}
|
||||
|
||||
void SceneUpdate() override
|
||||
{
|
||||
std::cout << "TestScene2 actualizandose!" << id << std::endl;
|
||||
UE_LOG_INFO("Escena {0} UPDATE", _sceneName);
|
||||
}
|
||||
|
||||
void SceneUnload() override
|
||||
{
|
||||
std::cout << "Scene2 descansando." << id << std::endl;
|
||||
UE_LOG_INFO("Escena {0} se ha descargado.", _sceneName);
|
||||
}
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user