Merge pull request #1009 from Azaezel/alpha41/moduleFileReload

adds a  reloadModuleFiles(%moduleGroup); command
This commit is contained in:
Brian Roberts 2023-04-11 18:29:40 -05:00 committed by GitHub
commit c08fa359d2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -4,8 +4,78 @@ $reportModuleFileConflicts=true;
if (!isObject(ExecFilesList))
new ArrayObject(ExecFilesList);
function reformatModTime(%modTime)
{
%date = getword(%modTime,0);
%date = strreplace(%modTime,"/"," ");
%date = getword(%date,2) SPC getword(%date,0) SPC getword(%date,1);
%hourMinSec = getword(%modTime,1);
%hourMinSec = strreplace(%hourMinSec,":"," ");
%retTime = %date SPC %hourMinSec;
for (%i=0;%i<6;%i++)
{
%nTry = getWord(%retTime,%i);
if (%nTry<10)
setWord(%retTime,%i,"0" SPC %nTry);
}
return %retTime;
}
//example usage: reloadModuleFiles("game");
function reloadModuleFiles(%moduleGroup)
{
//Get our modules so we can exec any specific client-side loading/handling
%modulesList = ModuleDatabase.findModules();
for(%i=0; %i < getWordCount(%modulesList); %i++)
{
%module = getWord(%modulesList, %i);
if(%moduleGroup !$= "")
{
if(%module.group !$= %moduleGroup)
continue;
}
if(isFile(%module.ModuleScriptFilePath))
{
%modTime = fileModifiedTime(%module.ModuleScriptFilePath);
if (getWordCount(%modTime)>0)
{
%doExec = false;
if ($lastReExecution $="")
{
%doExec = true;
}
else
{
%modTime = reformatModTime(%modTime);
if (strcmp(%modTime,$lastReExecution)>0)
{
//error("moded:"@ %modTime);
//warn("execd:"@ $lastReExecution);
%doExec = true;
}
}
if (%doExec)
{
exec(%module.ModuleScriptFilePath);
}
}
}
}
$lastReExecution = getTimeStamp();
//erase time seperators
$lastReExecution = strreplace($lastReExecution,"_"," ");
$lastReExecution = strreplace($lastReExecution,"-"," ");
for (%i=0;%i<6;%i++)
{
%nTry = getWord($lastReExecution,%i);
if (%nTry<10)
setWord($lastReExecution,%i,"0" SPC %nTry);
}
}
function moduleExec(%functionName, %moduleGroup, %var0, %var1, %var2, %var3, %var4, %var5, %var6)
{
{
reloadModuleFiles(%moduleGroup);
//clear per module group file execution chain
%execArray = new ArrayObject("callOn" @ %functionName @ "_" @ %moduleGroup);
ExecFilesList.push_back(%execArray);