From c92481448159d3a363d6a99b3025bd2358c3dab6 Mon Sep 17 00:00:00 2001 From: ClarkeCode Date: Sun, 30 Apr 2023 20:48:35 -0400 Subject: Initial commit --- GameManager.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 GameManager.cpp (limited to 'GameManager.cpp') diff --git a/GameManager.cpp b/GameManager.cpp new file mode 100644 index 0000000..58e40bb --- /dev/null +++ b/GameManager.cpp @@ -0,0 +1,46 @@ +#include "GameManager.hpp" + +#include "Logger.hpp" + +using namespace OpenVic2; + +GameManager::GameManager(state_updated_func_t state_updated_callback) + : clock{ [this]() { tick(); }, [this]() { update_state(); } }, state_updated{ state_updated_callback } {} + +void GameManager::set_needs_update() { + needs_update = true; +} + +void GameManager::update_state() { + if (needs_update) { + Logger::info("Update: ", today); + map.update_state(today); + if (state_updated) state_updated(); + needs_update = false; + } +} + +void GameManager::tick() { + today++; + Logger::info("Tick: ", today); + map.tick(today); + set_needs_update(); +} + +return_t GameManager::setup() { + clock.reset(); + today = { 1836 }; + set_needs_update(); + return map.generate_province_buildings(building_manager); +} + +Date const& GameManager::get_today() const { + return today; +} + +return_t GameManager::expand_building(index_t province_index, std::string const& building_type_identifier) { + set_needs_update(); + Province* province = map.get_province_by_index(province_index); + if (province == nullptr) return FAILURE; + return province->expand_building(building_type_identifier); +} -- cgit v1.2.3-56-ga3b1