#include "GameInstance.hpp" #include #include #include #include "Core/CoreInstance.hpp" #include "Game/WorldFactory.hpp" #include "Game/World/World.hpp" #include "Log/Log.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"); } 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(); }