mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-04-28 21:07:59 +03:00
Lua scripts configuration in omwaddon
This commit is contained in:
parent
58fd560ce9
commit
a70d5831c5
26 changed files with 700 additions and 236 deletions
|
@ -5,9 +5,11 @@
|
|||
#include <optional>
|
||||
|
||||
#include "components/esm/luascripts.hpp"
|
||||
#include "components/esm3/cellref.hpp"
|
||||
|
||||
namespace LuaUtil
|
||||
{
|
||||
using ScriptIdsWithInitializationData = std::map<int, std::string_view>;
|
||||
|
||||
class ScriptsConfiguration
|
||||
{
|
||||
|
@ -18,13 +20,27 @@ namespace LuaUtil
|
|||
const ESM::LuaScriptCfg& operator[](int id) const { return mScripts[id]; }
|
||||
|
||||
std::optional<int> findId(std::string_view path) const;
|
||||
const std::vector<int>& getListByFlag(ESM::LuaScriptCfg::Flags type) const;
|
||||
bool isCustomScript(int id) const { return mScripts[id].mFlags & ESM::LuaScriptCfg::sCustom; }
|
||||
|
||||
ScriptIdsWithInitializationData getGlobalConf() const { return getConfByFlag(ESM::LuaScriptCfg::sGlobal); }
|
||||
ScriptIdsWithInitializationData getPlayerConf() const { return getConfByFlag(ESM::LuaScriptCfg::sPlayer); }
|
||||
ScriptIdsWithInitializationData getLocalConf(uint32_t type, std::string_view recordId, ESM::RefNum refnum) const;
|
||||
|
||||
private:
|
||||
ScriptIdsWithInitializationData getConfByFlag(ESM::LuaScriptCfg::Flags flag) const;
|
||||
|
||||
std::vector<ESM::LuaScriptCfg> mScripts;
|
||||
std::map<std::string, int, std::less<>> mPathToIndex;
|
||||
std::map<ESM::LuaScriptCfg::Flags, std::vector<int>> mScriptsByFlag;
|
||||
static const std::vector<int> sEmpty;
|
||||
|
||||
struct DetailedConf
|
||||
{
|
||||
int mScriptId;
|
||||
bool mAttach;
|
||||
std::string_view mInitializationData;
|
||||
};
|
||||
std::map<uint32_t, std::vector<int>> mScriptsPerType;
|
||||
std::map<std::string, std::vector<DetailedConf>, std::less<>> mScriptsPerRecordId;
|
||||
std::map<ESM::RefNum, std::vector<DetailedConf>> mScriptsPerRefNum;
|
||||
};
|
||||
|
||||
// Parse ESM::LuaScriptsCfg from text and add to `cfg`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue