Motor de sprites/animacions/surfaces i jugador centrat (v0.2.0)
This commit is contained in:
1 parent
7bb1edd08a
commit
de5a670fdb
34 files changed
+16137
-81
No files matched your search
@@ -4,29 +4,41 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "core/rendering/screen.hpp"
|
||||
#include "core/resources/resource_cache.hpp"
|
||||
#include "core/scene/scene.hpp"
|
||||
#include "core/system/event_buffer.hpp"
|
||||
#include "game/scenes/black_scene.hpp"
|
||||
#include "game/scenes/game_scene.hpp"
|
||||
|
||||
Director::Director() {
|
||||
if (!SDL_Init(0)) {
|
||||
std::fprintf(stderr, "SDL_Init failed: %s\n", SDL_GetError());
|
||||
}
|
||||
|
||||
Screen::init();
|
||||
// Registrem SDL_Quit ABANS de tocar cap singleton: així el handler atexit
|
||||
// s'executa DESPRÉS dels destructors estàtics de Screen i Cache (atexit
|
||||
// registrat abans de la construcció d'un objecte estàtic corre després
|
||||
// del seu destructor). Sense açò, Screen::~Screen cridaria SDL_Destroy*
|
||||
// amb SDL ja apagat → caos de destrucció clàssic.
|
||||
std::atexit(+[] { SDL_Quit(); });
|
||||
|
||||
current_scene_ = std::make_unique<BlackScene>();
|
||||
// Forcem la construcció dels singletons en l'ordre desitjat: primer
|
||||
// Screen (necessari per a renderitzar), després Cache. La destrucció
|
||||
// estàtica anirà LIFO: Cache primer, Screen últim.
|
||||
(void)Screen::get();
|
||||
(void)Resource::Cache::get();
|
||||
|
||||
current_scene_ = std::make_unique<GameScene>();
|
||||
last_ticks_ms_ = SDL_GetTicks();
|
||||
}
|
||||
|
||||
Director::~Director() {
|
||||
current_scene_.reset();
|
||||
Screen::destroy();
|
||||
SDL_Quit();
|
||||
// SDL_Quit corre via atexit; els singletons via destrucció estàtica.
|
||||
}
|
||||
|
||||
void Director::processEvents() {
|
||||
|
||||
Reference in new issue
Block a user