/* * Mirai. Copyright (C) 2024 Vyn * This file is licensed under version 3 of the GNU General Public License (GPL-3.0-only) * The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt */ #ifndef MIRAI_BASE_RESOURCE_H #define MIRAI_BASE_RESOURCE_H #include "core/TaskItem.h" #include #include #include namespace mirai { class BaseResource { public: BaseResource(std::string name) : name(name) {}; BaseResource(BaseResource &) = delete; BaseResource(BaseResource &&) = delete; virtual ~BaseResource() = default; virtual void save() = 0; virtual void load() = 0; void setName(std::string name) { this->name = name; } const std::string &getName() const { return name; } void addTask(TaskItemData TaskItem); void removeTask(const TaskItem *taskToRemove); std::vector> &getTasks(); void setDirty(bool shouldBeDirty); bool isDirty() const; private: std::string name; std::vector> tasks; bool isDirty_ = false; }; } // namespace mirai #endif