arreglos en la estructura

afegida una escena de test
This commit is contained in:
JailDesigner committed 2026-11-05 13:46:43 +01:00
1 parent 6961986ad2
commit 9b168f02eb
13 files changed
+142 -49

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
// defaults.hpp
#pragma once
namespace Defaults::Video {
constexpr int ZOOM = 3;
constexpr bool FULLSCREEN = false;
constexpr float WIDTH = 320.0F;
constexpr float HEIGHT = 240.0F;
} // namespace Defaults::Video
+51
View File
@@ -0,0 +1,51 @@
// director.cpp
#include "director.hpp"
#include "core/rendering/video.hpp"
#include "defaults.hpp"
#include "game/scenes/scenes.hpp"
#include "game/scenes/test.hpp"
Director::Director() {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"Game start!");
video_ = std::make_shared<Video>(
Video::Config{
Defaults::Video::FULLSCREEN,
Defaults::Video::ZOOM,
Defaults::Video::WIDTH,
Defaults::Video::HEIGHT});
scene_ = std::make_unique<Test>();
}
Director::~Director() {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"Bye!");
SDL_Quit();
}
auto Director::iterate() -> int {
while (scene_) {
scene_->render();
switch (scene_->update()) {
case Scenes::CONTINUE:
break;
case Scenes::LOGO:
break;
case Scenes::INTRO:
break;
case Scenes::GAME:
break;
case Scenes::TEST:
scene_ = std::make_unique<Test>();
break;
case Scenes::QUIT:
scene_.reset();
break;
}
}
return 0;
}
+23
View File
@@ -0,0 +1,23 @@
// director.hpp
#pragma once
#include <memory>
#include "core/rendering/video.hpp"
#include "game/scenes/scene.hpp"
class Director {
public:
Director();
~Director();
auto iterate() -> int;
private:
// Core
std::shared_ptr<Video> video_;
// Game
std::unique_ptr<Scene> scene_;
};
+13
View File
@@ -0,0 +1,13 @@
// scene.hpp
#pragma once
#include "scenes.hpp"
class Scene {
public:
virtual ~Scene() = default;
virtual auto update() -> Scenes = 0;
virtual void render() = 0;
};
+12
View File
@@ -0,0 +1,12 @@
// scenes.hpp
#pragma once
enum class Scenes {
INTRO,
LOGO,
GAME,
TEST,
CONTINUE,
QUIT
};
+16
View File
@@ -0,0 +1,16 @@
// test.cpp
#include "test.hpp"
#include <iostream>
auto Test::update() -> Scenes {
static int count = 0;
std::cout << count++ << "\n";
if (count == 100) { return Scenes::QUIT; }
return Scenes::CONTINUE;
}
void Test::render() {
}
+11
View File
@@ -0,0 +1,11 @@
// test.hpp
#pragma once
#include "scene.hpp"
class Test final : public Scene {
public:
auto update() -> Scenes override;
void render() override;
};