diff --git a/Templates/BaseGame/game/core/utility/scripts/module.tscript b/Templates/BaseGame/game/core/utility/scripts/module.tscript index 151cdb138..a2617fa91 100644 --- a/Templates/BaseGame/game/core/utility/scripts/module.tscript +++ b/Templates/BaseGame/game/core/utility/scripts/module.tscript @@ -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);