60 lines
1.4 KiB
C++
60 lines
1.4 KiB
C++
// director.cpp
|
|
|
|
#include "director.hpp"
|
|
|
|
#include <cstdint>
|
|
|
|
#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!");
|
|
|
|
// Inicializa los subsistemas
|
|
video_ = std::make_unique<Video>(
|
|
Video::Config{
|
|
Defaults::Video::FULLSCREEN,
|
|
Defaults::Video::ZOOM,
|
|
Defaults::Video::WIDTH,
|
|
Defaults::Video::HEIGHT});
|
|
timer_ = std::make_unique<Timer>();
|
|
|
|
// Inicializa el contexto
|
|
context_.video = video_.get();
|
|
|
|
// Establece la escena inicial
|
|
scene_ = std::make_unique<Test>(context_);
|
|
}
|
|
|
|
Director::~Director() {
|
|
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
|
|
"Bye!");
|
|
SDL_Quit();
|
|
}
|
|
|
|
auto Director::iterate() -> int {
|
|
while (scene_) {
|
|
scene_->render();
|
|
switch (scene_->update(timer_->getDelta())) {
|
|
case Scenes::ACTION_CONTINUE:
|
|
break;
|
|
case Scenes::LOGO:
|
|
break;
|
|
case Scenes::INTRO:
|
|
break;
|
|
case Scenes::GAME:
|
|
break;
|
|
case Scenes::TEST:
|
|
scene_ = std::make_unique<Test>(context_);
|
|
break;
|
|
case Scenes::ACTION_QUIT:
|
|
scene_.reset();
|
|
break;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
} |