From 895aa66b82867c762f3ce9ba05b0c54726a196d0 Mon Sep 17 00:00:00 2001 From: Sander Speetjens Date: Mon, 19 Aug 2024 01:41:51 +0200 Subject: [PATCH] Add initial simulator base --- tools/simulator_base.cpp | 35 ++++++++++++++++++++++++++++++++++- tools/simulator_base.hpp | 25 ++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/tools/simulator_base.cpp b/tools/simulator_base.cpp index 4c72469..48f3a9b 100644 --- a/tools/simulator_base.cpp +++ b/tools/simulator_base.cpp @@ -1 +1,34 @@ -#include "simulator_base.hpp" \ No newline at end of file +#include "simulator_base.hpp" + +SimulatorBase::SimulatorBase(std::string name) + : p_name(name), p_timer([this]{ timer(); }) +{ + +} + +void SimulatorBase::add_UI_item(UI_item* item) { + // Add a UI item to the simulator + p_UI_items_map[item->id()] = item; + p_UI_items.push_back(item); +} + +json SimulatorBase::get_UI_items() const { + // Get the UI items + json items; + items["name"] = p_name; + for (UI_item* item : p_UI_items) { + items["UI_items"].push_back(item->to_json()); + } + + return items; +} + +UI_item* SimulatorBase::get_UI_item(std::string id) const { + // Get a UI item by id + return p_UI_items_map.at(id); +} + +void SimulatorBase::run() { + // Run the simulator + p_timer.setInterval(std::chrono::milliseconds(100)); +} \ No newline at end of file diff --git a/tools/simulator_base.hpp b/tools/simulator_base.hpp index 7b9637e..5a2f5b7 100644 --- a/tools/simulator_base.hpp +++ b/tools/simulator_base.hpp @@ -1 +1,24 @@ -#pragma once \ No newline at end of file +#pragma once + +#include "UI.hpp" +#include "timer.hpp" + +class SimulatorBase { + + public: + SimulatorBase(std::string name); + + void add_UI_item(UI_item* item); + json get_UI_items() const; + + UI_item* get_UI_item(std::string id) const; + + void run(); + + virtual void timer() {}; + protected: + std::string p_name; + std::vector p_UI_items; + std::map p_UI_items_map; + Timer p_timer; +}; \ No newline at end of file