#pragma once #include #include #include #include #include "interfaces/Process.hpp" #include "interfaces/Serializable.hpp" namespace scripting { class IClientProjectScript; } struct Permissions { static inline std::string WRITE_TO_USER = "write-to-user"; std::set permissions; bool has(const std::string& name) const; }; struct Project : Serializable { std::string name; std::string title; std::vector basePacks; std::unique_ptr clientScript; std::unique_ptr setupCoroutine; Permissions permissions; ~Project(); dv::value serialize() const override; void deserialize(const dv::value& src) override; void loadProjectClientScript(); void loadProjectStartScript(); };