#include "program.h" #include "system_manager.h" #include std::vector SystemManager::init(DISPLAY_STATE* display_state) { _display_state = display_state; funcMap["0"] = &InstalledProgram::do_stuff; funcMap["1"] = &InstalledProgram::do_some_other_stuff; funcMap["2"] = &InstalledProgram::lol; funcMap["3"] = &InstalledProgram::omagelol; funcMap["4"] = &InstalledProgram::sheeesh; return _programs; } bool SystemManager::spawn_program(Window* window, std::string program_name) { for (size_t i = 0; i < _programs.size(); ++i) { if (_programs[i]->_task_name == window->title) return false; } // Check if the program exists in the map if (funcMap.find(program_name) == funcMap.end()) { return false; } Serial.println(window->title.c_str()); Program* program = new Program(_display_state); program->_program_func = funcMap[program_name]; window->id = _next_program_id; program->init(_next_program_id, window->title, window); _next_program_id++; _programs.push_back(program); return true; } void SystemManager::close_program(int id) { for (size_t i = 0; i < _programs.size(); ++i) { if (_programs[i]->_id == id) { _programs[i]->close(); delete _programs[i]; // Free the memory _programs.erase(_programs.begin() + i); break; // Exit after erase } } }