public bool Build2(BuildOptions options) { //_config.sceneName = options.sceneName; options.isHO = false; options.isHo01 = false; options.isHo02 = false; options.HO01 = new List<string>(); options.HO02 = new List<string>(); try { List<string> textureNames = new List<string>(); string[] files = Directory.GetFiles(options.srcFolder, "*.png"); if (files.Length == 0) { throw new Exception("Not found *.png in folder."); } foreach (string fileName in files) { if (fileName.Contains("pick_")) { if (fileName.Contains("pick_01")) { if (!options.isHo01) options.isHo01 = true; options.HO01.Add(fileName); } if (fileName.Contains("pick_02")) { if (!options.isHo02) options.isHo02 = true; options.HO02.Add(fileName); } if (!options.isHO) { options.isHO = true; } } } ////////////////////////////////////////////////////////////////////////// /// Create texture pack header if (options.rebuildTP) { _texturePack = new TexturePack(_config, options); ////////////////////////////////////////////////////////////////////////// /// Create resource header if (options.rebuildResourcesFile) { _resources = new Resources(_config, options); } } ////////////////////////////////////////////////////////////////////////// /// Create scene header if (options.rebuildScene) { _scene = new Scene(_config, options, ""); _sceneHO1 = new Scene(_config, options, "_01"); _sceneHO2 = new Scene(_config, options, "_02"); } if (options.rebuildItemsFile || options.rebuildHintsFile) { _items = new Items(_config, options); } ////////////////////////////////////////////////////////////////////////// /// Create texts header if (options.rebuildTexts) { _texts = new Texts(_config, options); } ////////////////////////////////////////////////////////////////////////// /// Create navigation header if (options.rebuildNavigation) { _navigation = new Navigation(_config, options); } ////////////////////////////////////////////////////////////////////////// /// Initialize levels if (options.rebuildLevels) { _levels = new Levels(_config, options); } ////////////////////////////////////////////////////////////////////////// /// Create glints xml if (options.rebuildGlintsFile) { _glints = new Glints( options, ""); _glintsHO1 = new Glints( options, "_01"); _glintsHO2 = new Glints( options, "_02"); } ////////////////////////////////////////////////////////////////////////// foreach (string fileName in files) { FileName fn = new FileName(fileName); if ((options.rebuildGlintsFile)) { if (fileName.LastIndexOf("_g") != -1) { if (options.isHO) { if (options.isHo01) { if (fileName.Contains("_g1")) { _glintsHO1.AddGlint(fn.TextureName); } } if (options.isHo02) { if (fileName.Contains("_g2")) _glintsHO2.AddGlint(fn.TextureName); } } else { if (fileName.Contains("_g0")) _glints.AddGlint(fn.TextureName); } } } if (fn.IsCollectableItem && _texts != null) { _texts.AddGroup(fn); } if (textureNames.Contains(fn.TextureName)) { throw new Exception("Error. Found duplicate the texture name: '" + fn.TextureName + "'\nFile:'" + fn.GetOnlyFileName() + "'"); } else { textureNames.Add(fn.TextureName); } ////////////////////////////////////////////////////////////////////////// /// Create scene node /// if (!options.isHO) { if (options.rebuildScene) { _scene.ProcessNode(fn); } } else { if (options.rebuildScene) { if (options.isHo01) { _sceneHO1.ProcessNode(fn); } if (options.isHo02) { bool _notfoundHO1item = false; for (int i = 0; i < options.HO01.Count; i++) { FileName fn2 = new FileName(options.HO01[i]); if (fn2.TextureName == fn.TextureName) { _notfoundHO1item = true; break; } } if (!_notfoundHO1item) { _sceneHO2.ProcessNode(fn); } } } } ////////////////////////////////////////////////////////////////////////// /// Create item node if (options.rebuildItemsFile) { _items.AddItem(fn); } ////////////////////////////////////////////////////////////////////////// /// Create texture pack node if (options.rebuildTP) { _texturePack.ProcessNode(fn); } } // main loop if (options.rebuildLevels) { _levels.ProcessNormalTextureNode(); } if (options.rebuildNavigation) { _navigation.Processing(); } ////////////////////////////////////////////////////////////////////////// /// Create texts node if (options.rebuildTexts) { _texts.Save(); } ////////////////////////////////////////////////////////////////////////// /// Save scene xml if (options.rebuildScene) { if (!options.isHO) { _scene.Save(); } else { if (options.isHo01) { _sceneHO1.Save(); } if (options.isHo02) { _sceneHO2.Save(); } } } ////////////////////////////////////////////////////////////////////////// /// Save navigation xml if (options.rebuildNavigation) { _navigation.Save(); } ////////////////////////////////////////////////////////////////////////// /// Save levels xml if (options.rebuildLevels) { _levels.Save(); } ////////////////////////////////////////////////////////////////////////// /// Save items xml if (options.rebuildItemsFile) { if (_items.GetItemsNames().Count != 0) { OptionsHO _optionsHO = new OptionsHO(_items); _optionsHO.ShowDialog(); List<string> interactiveItems = _optionsHO.GetInteractiveItems(); string defaultColor = _optionsHO.GetDefaultColor(); string interactiveColor = _optionsHO.GetInteractiveColor(); _items.AddColors(interactiveItems, interactiveColor, defaultColor); } _items.Save(); } ////////////////////////////////////////////////////////////////////////// /// Save texture pack xml if (options.rebuildTP) { _texturePack.Save(); if (options.rebuildTP) { DirectoryInfo di = new DirectoryInfo(options.dstFolder + "\\texture_pack"); // di.Attributes = FileAttributes.Archive; // // di.Delete(true); Process p = new Process(); p.StartInfo.FileName = _config.ElefunToolsPath + "TexturePacker.exe"; p.StartInfo.Arguments = options.dstFolder + "\\texture_pack.xml"; p.Start(); p.WaitForExit(); } ////////////////////////////////////////////////////////////////////////// /// Save resources xml if (options.rebuildResourcesFile) { _resources.Save(); } } ////////////////////////////////////////////////////////////////////////// /// Save glints xml if (options.rebuildGlintsFile) { if (options.isHO) { if (options.isHo01) { _glintsHO1.Save(); } if (options.isHo02) { _glintsHO2.Save(); } } else { _glints.Save(); } } } catch (Exception ex) { throw new Exception("Error on scene '" + options.sceneName + "': " + ex.Message); } return true; }
public Builder() { _config.TexturePackName = "items"; _config.ShaderFolderName = "textures"; _config.IncludesLibFileName = "includes_lib.xml"; _config.GlintsFileName = "glints.xml"; RegistryKey regKey = Registry.CurrentUser.OpenSubKey("Software\\EleFun Tools"); _config.ElefunToolsPath = (string)regKey.GetValue(""); _texturePack = null; _resources = null; _glints = null; _glintsHO1 = null; _glintsHO2 = null; _scene = null; _sceneHO1 = null; _sceneHO2 = null; _texts = null; _items = null; _levels = null; _navigation = null; }