#pragma once #include "CommandCompatibleAPI.h" #include extern ClassDefine ParamTypeStaticBuilder; extern ClassDefine PermissionStaticBuilder; extern ClassDefine ParamOptionStaticBuilder; bool LLSERemoveCmdCallback(script::ScriptEngine* engine); class CommandClass : public ScriptClass { std::unique_ptr uptr; DynamicCommandInstance* ptr; bool registered = false; inline DynamicCommandInstance* get() { return ptr; } inline std::vector parseStringList(Local arr) { if (arr.size() == 0 || !arr.get(0).isString()) return {}; std::vector strs; for (size_t i = 0; i < arr.size(); ++i) { strs.push_back(arr.get(i).toStr()); } return std::move(strs); } inline Local getStringArray(std::vector values) { Local arr = Array::newArray(values.size()); for (auto& str : values) { arr.add(String::newString(str)); } return arr; } public: CommandClass(std::unique_ptr&& p); CommandClass(DynamicCommandInstance* p); static Local newCommand(std::unique_ptr&& p); static Local newCommand(DynamicCommandInstance* p); Local getName(); Local setAlias(const Arguments& args); Local setEnum(const Arguments& args); Local newParameter(const Arguments& args); Local mandatory(const Arguments& args); Local optional(const Arguments& args); Local addOverload(const Arguments& args); Local setCallback(const Arguments& args); Local setup(const Arguments& args); Local isRegistered(); Local toString(const Arguments& args); Local setSoftEnum(const Arguments& args); Local addSoftEnumValues(const Arguments& args); Local removeSoftEnumValues(const Arguments& args); Local getSoftEnumValues(const Arguments& args); Local getSoftEnumNames(const Arguments& args); }; extern ClassDefine CommandClassBuilder;