diff --git a/Classes/PackConfig.as b/Classes/PackConfig.as index cf5fe01..3638727 100644 --- a/Classes/PackConfig.as +++ b/Classes/PackConfig.as @@ -2,7 +2,7 @@ class PackConfig { string Name; string Author; string Version; - string ModePattern; + array Modes; array Layers; array UnloadModules; @@ -14,7 +14,12 @@ class PackConfig { Name = Data['Name']; Author = Data['Author']; Version = Data['Version']; - ModePattern = Data['ModePattern']; + + if (Data.HasKey('Modes') && Data['Modes'].GetType() == Json::Type::Array) { + for (uint i = 0; i < Data['Modes'].Length; i++) { + Modes.InsertLast(Data['Modes'][i]); + } + } if (Data.HasKey('Layers') && Data['Layers'].GetType() == Json::Type::Array) { for (uint i = 0; i < Data['Layers'].Length; i++) { @@ -34,4 +39,43 @@ class PackConfig { } } } + + string getPrettyModes() const { + if (Modes.Find('any') >= 0) return 'any'; + + const string Pattern = '(?:.*(?:/|\\\\|^))(.*)\\.Script\\.txt'; + + string Result; + + for (uint i = 0; i < Modes.Length; i++) { + if (i > 0) Result += '\n'; + + const string Mode = Modes[i]; + + const array Matches = Regex::Match(Mode, Pattern); + + if (Matches.Length > 1) { + string Match = Matches[1]; + + if (Match.Contains('TM_')) { + array Exploded = Match.Split('_'); + Result += Exploded[1]; + } else { + Result += Match; + } + } + } + + return Result; + } + + bool ModeMatch(const string &in _SearchedMode) const { + const string SearchedMode = _SearchedMode.ToLower(); + for (uint i = 0; i < Modes.Length; i++) { + const string Mode = Modes[i].ToLower(); + if (Mode == "any" || Mode == SearchedMode) return true; + } + + return false; + } } \ No newline at end of file diff --git a/PackManager.as b/PackManager.as index b1f5ef5..484cd87 100644 --- a/PackManager.as +++ b/PackManager.as @@ -79,9 +79,9 @@ namespace PacksManager { const PackConfig@ Config = PacksManager::GetConfig(Id); - // TODO Check ModePattern - if (Regex::IsMatch(ServerInfo.CurScriptRelName, Config.ModePattern)) { - print('match'); + + if (!Config.ModeMatch(string(ServerInfo.CurScriptRelName))) { + continue; } for (uint j = 0; j < Config.UnloadModules.Length; j++) { diff --git a/RenderManager.as b/RenderManager.as index f96c416..78d6de5 100644 --- a/RenderManager.as +++ b/RenderManager.as @@ -15,12 +15,12 @@ namespace RenderManager { PacksManager::LoadConfigs(); } - if (UI::BeginTable('configs', 5, UI::TableFlags(UI::TableFlags::Resizable | UI::TableFlags::Sortable | UI::TableFlags::NoSavedSettings | UI::TableFlags::BordersInnerV | UI::TableFlags::SizingStretchProp | UI::TableFlags::ScrollY))) { + if (UI::BeginTable('configs', 5, UI::TableFlags(UI::TableFlags::Resizable | UI::TableFlags::Sortable | UI::TableFlags::NoSavedSettings))) { UI::TableSetupColumn("Name", UI::TableColumnFlags::DefaultSort); UI::TableSetupColumn("Author", UI::TableColumnFlags::None); UI::TableSetupColumn("Version", UI::TableColumnFlags::None); - UI::TableSetupColumn("Mode Pattern", UI::TableColumnFlags::NoResize); - UI::TableSetupColumn("Enable", UI::TableFlags(UI::TableColumnFlags::NoResize | UI::TableColumnFlags::WidthFixed), 60.); + UI::TableSetupColumn("Modes", UI::TableColumnFlags::NoResize); + UI::TableSetupColumn("Enable", UI::TableFlags(UI::TableColumnFlags::NoResize | UI::TableColumnFlags::WidthFixed | UI::TableColumnFlags::NoSort), 60.); UI::TableHeadersRow(); const array ConfigIds = PacksManager::G_Configs.GetKeys(); @@ -37,7 +37,7 @@ namespace RenderManager { UI::TableNextColumn(); UI::Text(Config.Version); UI::TableNextColumn(); - UI::Text(Config.ModePattern); + UI::Text(Config.getPrettyModes()); UI::TableNextColumn(); const int index = PacksManager::G_EnabledConfigs.Find(Id);