////////////////////////////////////////////////////////////////////// // This file is part of Remere's Map Editor ////////////////////////////////////////////////////////////////////// // Remere's Map Editor is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Remere's Map Editor is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . ////////////////////////////////////////////////////////////////////// #ifndef RME_LUA_SCRIPT_H #define RME_LUA_SCRIPT_H #include // Represents a single Lua script (file or directory with manifest.json) class LuaScript { public: // Constructor for single .lua file explicit LuaScript(const std::string &filepath); // Constructor for directory with manifest.json LuaScript(const std::string &directory, bool isDirectory); ~LuaScript() = default; // Script info const std::string &getFilePath() const { return filepath; } bool processMetadataTag(const std::string &comment, bool &foundName, std::ostringstream &descBuilder); const std::string &getDirectory() const { return directory; } const std::string &getFileName() const { return filename; } const std::string &getDisplayName() const { return displayName; } const std::string &getDescription() const { return description; } const std::string &getAuthor() const { return author; } const std::string &getVersion() const { return version; } const std::string &getShortcut() const { return shortcut; } bool shouldAutoRun() const { return autorun; } // Is this a directory-based script with manifest? bool isPackage() const { return isPackageScript; } // State bool isEnabled() const { return enabled; } void setEnabled(bool value) { enabled = value; } // Parse metadata from comments or manifest.json void parseMetadata(); private: void parseMetadataFromComments(); void parseMetadataFromManifest(); std::string filepath; // Full path to the main .lua file std::string directory; // Directory containing the script (for packages) std::string filename; // Just the filename std::string displayName; // Display name (from metadata or filename) std::string description; // Description std::string author; // Author std::string version; // Version std::string shortcut; // Keyboard shortcut bool enabled = true; bool autorun = false; bool isPackageScript; // True if loaded from directory with manifest.json bool scanAutorunValue(const std::string &content) const; }; #endif // RME_LUA_SCRIPT_H