private string createToolTip(string mod, GameData.Header h) { if (h == null) { return(mod); } string str = string.Concat(mod, "\n版本: ", h.Version.ToString()); if (h.Author != "") { str = string.Concat(str, "\n作者: ", h.Author); } if (h.Description != "") { str = string.Concat(str, "\n", h.Description); } if (h.Dependencies.Count > 0) { str = string.Concat(str, "\n依赖:"); foreach (string dependency in h.Dependencies) { str = string.Concat(str, "\n\t", dependency); } } if (h.Referenced.Count > 0) { str = string.Concat(str, "\n引用:"); foreach (string referenced in h.Referenced) { str = string.Concat(str, "\n\t", referenced); } } return(str); }
private void enforceDependencies(TreeNode n, bool check, bool reorder, List <TreeNode> cycle = null) { if (n.Tag != null) { if (cycle == null) { cycle = new List <TreeNode>(); } if (cycle.Contains(n)) { return; } cycle.Add(n); GameData.Header tag = n.Tag as GameData.Header; foreach (string dependency in tag.Dependencies) { TreeNode treeNode = this.findNode(dependency); if (check && treeNode != null && !treeNode.Checked) { treeNode.Checked = true; this.enforceDependencies(treeNode, check, reorder, cycle); } if (!reorder || treeNode == null || !this.moveAbove(treeNode, n)) { continue; } this.enforceDependencies(treeNode, check, reorder, cycle); } foreach (string referenced in tag.Referenced) { TreeNode treeNode1 = this.findNode(referenced); if (!check || treeNode1 == null || treeNode1.Checked) { continue; } treeNode1.Checked = true; this.enforceDependencies(treeNode1, check, reorder, cycle); } } if (reorder) { foreach (TreeNode node in this.modList.Nodes) { if (node.TreeView != n.TreeView || node.Index <= n.Index) { if (node.Tag == null || !(node.Tag as GameData.Header).Dependencies.Contains(n.Text) || !this.moveBelow(node, n)) { continue; } this.enforceDependencies(node, check, reorder, cycle); } else { return; } } } }
public ModData(GameData.Header header, string rootDir, string modName) { this.id = (ulong)0; this.visibility = 0; this.tags = new List <string>(); this.mod = modName; this.dir = rootDir; this.header = header; }
private InheritFiles.DependencyState checkDependencies(TreeNode n) { InheritFiles.DependencyState dependencyState; if (n.Tag != null) { GameData.Header tag = n.Tag as GameData.Header; foreach (string dependency in tag.Dependencies) { TreeNode treeNode = this.findNode(dependency); if (treeNode != null && treeNode.Checked) { continue; } dependencyState = InheritFiles.DependencyState.MISSING_DEPENDENCIES; return(dependencyState); } List <string> .Enumerator enumerator = tag.Referenced.GetEnumerator(); try { while (enumerator.MoveNext()) { TreeNode treeNode1 = this.findNode(enumerator.Current); if (treeNode1 != null && treeNode1.Checked) { continue; } dependencyState = InheritFiles.DependencyState.MISSING_REFERENCES; return(dependencyState); } return(InheritFiles.DependencyState.OK); } finally { ((IDisposable)enumerator).Dispose(); } return(dependencyState); } return(InheritFiles.DependencyState.OK); }
public InheritFiles(baseForm _nav, string baseDir, string modDir) { int i; this.parentForm = _nav; this.InitializeComponent(); this.baseDir = baseDir; this.modDir = modDir; string[] strArrays = new string[0]; try { strArrays = File.ReadAllLines(string.Concat(baseDir, "mods.cfg")); } catch (Exception exception) { } string[] strArrays1 = new string[(int)InheritFiles.FixedModsList.Length + (int)strArrays.Length]; InheritFiles.FixedMods.CopyTo(strArrays1, 0); strArrays.CopyTo(strArrays1, (int)InheritFiles.FixedModsList.Length); List <string> strs = new List <string>(); DirectoryInfo directoryInfo = new DirectoryInfo(baseDir); FileInfo[] files = directoryInfo.GetFiles("*.base"); for (i = 0; i < (int)files.Length; i++) { strs.Add(files[i].Name); } files = directoryInfo.GetFiles("*.mod"); for (i = 0; i < (int)files.Length; i++) { strs.Add(files[i].Name); } List <string> strs1 = new List <string>(); directoryInfo = new DirectoryInfo(modDir); if (directoryInfo.Exists) { DirectoryInfo[] directories = directoryInfo.GetDirectories(); List <string> strs2 = new List <string>((int)directories.Length); DirectoryInfo[] directoryInfoArray = directories; for (i = 0; i < (int)directoryInfoArray.Length; i++) { DirectoryInfo directoryInfo1 = directoryInfoArray[i]; FileInfo[] fileInfoArray = directoryInfo1.GetFiles(string.Concat(directoryInfo1.Name, ".mod")); if (fileInfoArray.Length != 0) { strs1.Add(fileInfoArray[0].Name); } } } string[] strArrays2 = strArrays1; for (i = 0; i < (int)strArrays2.Length; i++) { string str = strArrays2[i]; if (strs.Contains(str)) { this.baseList.Nodes.Add(str).Checked = true; strs.Remove(str); } else if (strs1.Contains(str)) { this.modList.Nodes.Add(str).Checked = true; strs1.Remove(str); this.defaultChecked.Add(str); } } foreach (string str1 in strs) { this.baseList.Nodes.Add(str1); } foreach (string str2 in strs1) { this.modList.Nodes.Add(str2); } System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; foreach (TreeNode node in this.baseList.Nodes) { GameData.Header header = GameData.loadHeader(string.Concat(baseDir, node.Text)); node.ToolTipText = this.createToolTip(node.Text, header); node.Tag = header; } foreach (TreeNode treeNode in this.modList.Nodes) { string str3 = treeNode.Text.Substring(0, treeNode.Text.Length - 4); GameData.Header header1 = GameData.loadHeader(string.Concat(modDir, str3, "/", treeNode.Text)); treeNode.ToolTipText = this.createToolTip(treeNode.Text, header1); treeNode.Tag = header1; } System.Windows.Forms.Cursor.Current = Cursors.Default; this.updateActiveMod(); this.baseList.DrawMode = TreeViewDrawMode.OwnerDrawText; this.baseList.DrawNode += new DrawTreeNodeEventHandler(this.modList_DrawNode); this.baseList.MouseDown += new MouseEventHandler(this.modList_MouseDown); this.baseList.MouseClick += new MouseEventHandler(this.modList_MouseClick); this.baseList.MouseDoubleClick += new MouseEventHandler(this.modList_MouseClick); this.baseList.ItemDrag += new ItemDragEventHandler(this.modList_ItemDrag); this.baseList.DragDrop += new DragEventHandler(this.modList_DragDrop); this.baseList.DragOver += new DragEventHandler(this.modList_DragOver); this.modList.DrawMode = TreeViewDrawMode.OwnerDrawText; this.modList.DrawNode += new DrawTreeNodeEventHandler(this.modList_DrawNode); this.modList.MouseDown += new MouseEventHandler(this.modList_MouseDown); this.modList.MouseClick += new MouseEventHandler(this.modList_MouseClick); this.modList.MouseDoubleClick += new MouseEventHandler(this.modList_MouseClick); this.modList.ItemDrag += new ItemDragEventHandler(this.modList_ItemDrag); this.modList.DragDrop += new DragEventHandler(this.modList_DragDrop); this.modList.DragOver += new DragEventHandler(this.modList_DragOver); this.btnNewTranslation.Enabled = false; this.cbActiveTranslation.Enabled = false; }