editModule.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. //
  2. function AssetBrowser::ConvertFolderIntoModule(%this, %folderName)
  3. {
  4. if(!isDirectory("data/" @ %folderName))
  5. return;
  6. AssetBrowser_AddModule-->moduleName.text = %folderName;
  7. AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.loadDirectories();";
  8. AssetBrowser_addModuleWindow.CreateNewModule();
  9. }
  10. function AssetBrowser::CreateNewModule(%this)
  11. {
  12. Canvas.pushDialog(AssetBrowser_AddModule);
  13. AssetBrowser_addModuleWindow.selectWindow();
  14. AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.promptNewModuleFolders();";
  15. }
  16. function AssetBrowser::promptNewModuleFolders(%this)
  17. {
  18. MessageBoxYesNo("Create Folders?",
  19. "Do you want to create some common folders for organization of your new Module?",
  20. "AssetBrowser.makeModuleFolders();", //if yes, make the foldesr
  21. "AssetBrowser.loadDirectories();"); //if no, just refresh
  22. }
  23. function AssetBrowser::makeModuleFolders(%this)
  24. {
  25. %moduleId = AssetBrowser.newModuleId;
  26. %moduleDef = ModuleDatabase.findModule(%moduleId);
  27. %modulePath = %moduleDef.ModulePath;
  28. %count = 0;
  29. %defaultModuleFolders[%count++] = "datablocks";
  30. %defaultModuleFolders[%count++] = "terrains";
  31. %defaultModuleFolders[%count++] = "postFXs";
  32. %defaultModuleFolders[%count++] = "levels";
  33. %defaultModuleFolders[%count++] = "shapes";
  34. %defaultModuleFolders[%count++] = "guis";
  35. %defaultModuleFolders[%count++] = "scripts";
  36. %defaultModuleFolders[%count++] = "scripts/client";
  37. %defaultModuleFolders[%count++] = "scripts/server";
  38. for(%i=0; %i <= %count; %i++)
  39. {
  40. %this.dirHandler.createFolder(%modulePath @ "/" @ %defaultModuleFolders[%i]);
  41. }
  42. AssetBrowser.loadDirectories();
  43. }
  44. function AssetBrowser::createNewEditorTool(%this)
  45. {
  46. Canvas.pushDialog(AssetBrowser_AddModule);
  47. AssetBrowser_addModuleWindow.selectWindow();
  48. AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.loadDirectories();";
  49. AssetBrowser_addModuleWindow.CreateNewModule();
  50. }
  51. function AssetBrowser_editModule::saveModule(%this)
  52. {
  53. //Check what special actions we may need to do, such as renames
  54. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  55. %oldModuleName = %moduleDef.ModuleID;
  56. if(%oldModuleName !$= AssetBrowser.tempModule.ModuleID)
  57. {
  58. //rename the script file and script namespaces
  59. %oldScriptFilePath = "data/" @ %oldModuleName @ "/" @ %moduleDef.scriptFile;
  60. %newscriptFilePath = "data/" @ AssetBrowser.tempModule.ModuleID @ "/";
  61. %scriptExt = fileExt(%moduleDef.scriptFile);
  62. %newScriptFileName = %newscriptFilePath @ "/" @ AssetBrowser.tempModule.ModuleID @ %scriptExt;
  63. %newScriptFileOldName = %newscriptFilePath @ "/" @ %oldModuleName @ %scriptExt;
  64. %moduleDef.ModuleId = AssetBrowser.tempModule.ModuleID;
  65. %moduleDef.scriptFile = AssetBrowser.tempModule.ModuleID @ %scriptExt;
  66. ModuleDatabase.copyModule(%moduleDef, AssetBrowser.tempModule.ModuleID, "data/" @ AssetBrowser.tempModule.ModuleID);
  67. //Go through our scriptfile and replace the old namespace with the new
  68. %editedFileContents = "";
  69. %file = new FileObject();
  70. if ( %file.openForRead( %newScriptFileOldName ) )
  71. {
  72. while ( !%file.isEOF() )
  73. {
  74. %line = %file.readLine();
  75. %line = trim( %line );
  76. %editedFileContents = %editedFileContents @ strreplace(%line, %oldModuleName, AssetBrowser.tempModule.ModuleID) @ "\n";
  77. }
  78. %file.close();
  79. }
  80. if(%editedFileContents !$= "")
  81. {
  82. %file.openForWrite(%newScriptFileName);
  83. %file.writeline(%editedFileContents);
  84. %file.close();
  85. }
  86. %success = fileDelete(%newScriptFileOldName);
  87. ModuleDatabase.unloadExplicit(%oldModuleName);
  88. %success = fileDelete("data/" @ %oldModuleName);
  89. ModuleDatabase.loadExplicit(AssetBrowser.tempModule.ModuleID);
  90. }
  91. //Now, update the module file itself
  92. //%file = ModuleDatabase.getAssetFilePath(%moduleDef.ModuleID);
  93. //%success = TamlWrite(AssetBrowser_editAsset.editedAsset, %file);
  94. AssetBrowser.loadFilters();
  95. Canvas.popDialog(AssetBrowser_editModule);
  96. }
  97. function AssetBrowser::editModuleInfo(%this)
  98. {
  99. Canvas.pushDialog(AssetBrowser_editModule);
  100. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  101. AssetBrowser.tempModule = new ModuleDefinition();
  102. AssetBrowser.tempModule.assignFieldsFrom(%moduleDef);
  103. AssetBrowser_editModule.editedModuleId = AssetBrowser.selectedModule;
  104. AssetBrowser_editModule.editedModule = AssetBrowser.tempModule;
  105. /// Module configuration.
  106. ModuleEditInspector.startGroup("General");
  107. ModuleEditInspector.addField("ModuleId", "ModuleId", "string", "", AssetBrowser.tempModule.ModuleId, "", AssetBrowser.tempModule);
  108. ModuleEditInspector.addField("VersionId", "VersionId", "string", "", AssetBrowser.tempModule.VersionId, "", AssetBrowser.tempModule);
  109. ModuleEditInspector.addField("BuildId", "BuildId", "string", "", AssetBrowser.tempModule.BuildId, "", AssetBrowser.tempModule);
  110. ModuleEditInspector.addField("enabled", "enabled", "bool", "", AssetBrowser.tempModule.enabled, "", AssetBrowser.tempModule);
  111. ModuleEditInspector.addField("Description", "Description", "command", "", AssetBrowser.tempModule.Description, "", AssetBrowser.tempModule);
  112. ModuleEditInspector.addField("Group", "Group", "string", "", AssetBrowser.tempModule.Group, "", AssetBrowser.tempModule);
  113. ModuleEditInspector.endGroup();
  114. ModuleEditInspector.startGroup("Management");
  115. ModuleEditInspector.addField("Synchronized", "Synchronized", "bool", "", AssetBrowser.tempModule.Synchronized, "", AssetBrowser.tempModule);
  116. ModuleEditInspector.addField("Deprecated", "Deprecated", "bool", "", AssetBrowser.tempModule.Deprecated, "", AssetBrowser.tempModule);
  117. ModuleEditInspector.addField("CriticalMerge", "CriticalMerge", "bool", "", AssetBrowser.tempModule.CriticalMerge, "", AssetBrowser.tempModule);
  118. ModuleEditInspector.addField("OverrideExistingObjects", "OverrideExistingObjects", "bool", "", AssetBrowser.tempModule.OverrideExistingObjects, "", AssetBrowser.tempModule);
  119. ModuleEditInspector.endGroup();
  120. ModuleEditInspector.startGroup("Meta");
  121. ModuleEditInspector.addField("Author", "Author", "string", "", AssetBrowser.tempModule.Author, "", AssetBrowser.tempModule);
  122. ModuleEditInspector.addField("Type", "Type", "string", "", AssetBrowser.tempModule.Type, "", AssetBrowser.tempModule);
  123. ModuleEditInspector.endGroup();
  124. ModuleEditInspector.startGroup("Script");
  125. ModuleEditInspector.addField("ScriptFile", "ScriptFile", "string", "", AssetBrowser.tempModule.ScriptFile, "", AssetBrowser.tempModule);
  126. ModuleEditInspector.addField("CreateFunction", "CreateFunction", "string", "", AssetBrowser.tempModule.CreateFunction, "", AssetBrowser.tempModule);
  127. ModuleEditInspector.addField("DestroyFunction", "DestroyFunction", "string", "", AssetBrowser.tempModule.DestroyFunction, "", AssetBrowser.tempModule);
  128. ModuleEditInspector.endGroup();
  129. ModuleEditInspector.startGroup("Dependencies");
  130. ModuleEditInspector.addField("ModuleDependencies", "Module Dependencies", "ModuleDependenciesButton", "", "", "", AssetBrowser.tempModule);
  131. ModuleEditInspector.endGroup();
  132. }
  133. function AssetBrowser::editModuleScript(%this)
  134. {
  135. %moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
  136. %scriptFile = %moduleDef.ModuleScriptFilePath;
  137. EditorOpenFileInTorsion(makeFullPath(%scriptFile), 0);
  138. }
  139. function AssetBrowser::renameModule(%this)
  140. {
  141. }
  142. function AssetBrowser::reloadModule(%this)
  143. {
  144. ModuleDatabase.unregisterModule(AssetBrowser.SelectedModule, 1);
  145. ModuleDatabase.loadExplicit(AssetBrowser.SelectedModule);
  146. }
  147. function AssetBrowser::deleteModule(%this)
  148. {
  149. }
  150. function AssetBrowser::RefreshModuleDependencies(%this, %moduleDef)
  151. {
  152. //Iterate through all our modules
  153. //then, iterate through the module's assets
  154. //if an asset has a module that isn't us, queue that into the dependencies list
  155. //AssetBrowser.RefreshModuleDependencies(16823);
  156. %modulePath = filePath(%moduleDef.ModuleFilePath);
  157. %filePattern = "*.cs" TAB "*.taml" TAB "*.mis";
  158. //First, wipe out any files inside the folder first
  159. %file = makeFullPath(findFirstFileMultiExpr( %filePattern, true));
  160. %fileObj = new FileObject();
  161. %modulesList = ModuleDatabase.findModules(false);
  162. new ArrayObject(moduleDepList);
  163. while( %file !$= "" )
  164. {
  165. if(startsWith(%file, %modulePath))
  166. {
  167. if(%fileObj.openForRead(%file))
  168. {
  169. while( !%fileObj.isEOF() )
  170. {
  171. %line = %fileObj.readLine();
  172. if(%line $= "")
  173. continue;
  174. for(%i=0; %i < getWordCount(%modulesList); %i++)
  175. {
  176. %moduleName = getWord(%modulesList, %i).moduleID;
  177. //if(%moduleName $= %moduleDef.moduleID)
  178. // continue;
  179. %hasMatch = strIsMatchExpr( "*"@%moduleName@":*", %line );
  180. if(%hasMatch)
  181. {
  182. moduleDepList.add(%moduleName);
  183. }
  184. }
  185. }
  186. }
  187. }
  188. %file = makeFullPath(findNextFileMultiExpr( %filePattern ));
  189. }
  190. %fileObj.delete();
  191. }