#include "GameInstance.hpp" #include #include #include #include "Core/CoreInstance.hpp" #include "Game/WorldFactory.hpp" #include "Game/World/World.hpp" extern std::vector world_factories; GameInstance::GameInstance(CoreInstance& core) : core(core) { const std::string& base_world = core.getBaseWorldName(); // Init directories std::filesystem::create_directories(std::filesystem::path("./Resources")); for (auto& factories : world_factories) { if (factories.world_name == base_world) { world = factories.factory(*this); break; } } if (world == nullptr) throw std::runtime_error("Can't find world"); } GameInstance::~GameInstance() { delete world; } void GameInstance::start() { world->BeginPlay(); auto first = std::chrono::steady_clock::now(); while (is_running) { auto second = std::chrono::steady_clock::now(); std::chrono::milliseconds delta_time = std::chrono::duration_cast(second - first); world->Tick(delta_time.count() / 1000.0); first = second; std::this_thread::sleep_for(std::chrono::milliseconds(10)); } } void GameInstance::stop() { is_running = false; } void GameInstance::quit() { stop(); core.quit(); }