add support of modes
This commit is contained in:
@@ -2,7 +2,7 @@ class PackConfig {
|
||||
string Name;
|
||||
string Author;
|
||||
string Version;
|
||||
string ModePattern;
|
||||
array<string> Modes;
|
||||
array<LayerConfig> Layers;
|
||||
array<string> 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<string> Matches = Regex::Match(Mode, Pattern);
|
||||
|
||||
if (Matches.Length > 1) {
|
||||
string Match = Matches[1];
|
||||
|
||||
if (Match.Contains('TM_')) {
|
||||
array<string> 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;
|
||||
}
|
||||
}
|
@@ -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++) {
|
||||
|
@@ -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<string> 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);
|
||||
|
Reference in New Issue
Block a user