private void loadButton_Click(object sender, EventArgs e) { string str; List <TreeNode> treeNodes = new List <TreeNode>(); foreach (TreeNode node in this.baseList.Nodes) { if (!node.Checked) { continue; } treeNodes.Add(node); } foreach (TreeNode treeNode in this.modList.Nodes) { if (!treeNode.Checked) { continue; } treeNodes.Add(treeNode); } if (treeNodes[0].TreeView != this.baseList) { MessageBox.Show("您将要加载没有激活基本文件的mod。\n这可能会导致无效的引用。 被覆盖的项目将显示不正确,您可能会因加载产生大量的错误消息。", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } InheritFiles.DependencyState dependencyState = InheritFiles.DependencyState.OK; List <string> strs = new List <string>(); foreach (TreeNode treeNode1 in treeNodes) { InheritFiles.DependencyState dependencyState1 = this.checkDependencies(treeNode1); if (dependencyState1 == InheritFiles.DependencyState.OK) { continue; } strs.Add(treeNode1.Text); if (dependencyState == InheritFiles.DependencyState.MISSING_DEPENDENCIES) { continue; } dependencyState = dependencyState1; } if (dependencyState == InheritFiles.DependencyState.MISSING_DEPENDENCIES) { if (MessageBox.Show(string.Concat("您正在尝试加载缺少依赖文件的 ", string.Join(", ", strs), ". 这将导致任何已修改的项目显示为已损坏或缺少某些数据.\n你确定要继续么?"), "缺少依赖", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.No) { return; } } else if (dependencyState == InheritFiles.DependencyState.MISSING_REFERENCES && MessageBox.Show(string.Concat("您正在尝试加载缺少外部引用Mod的MOD ", string.Join(", ", strs), " 这些MOD引用了其他MOD的项目. 这将会导致部分的项目出现非法引用.\n你确定要继续么?"), "缺少依赖", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == System.Windows.Forms.DialogResult.No) { return; } if (this.activeNode != null && this.activeNode.TreeView == this.baseList && !this.parentForm.nav.SecretDeveloperMode && MessageBox.Show("您即将编辑游戏的主要数据文件之一,我想也许这不应该时你的本意\n\n因为如果你改变这个文件,你的更改将在你下次更新游戏时丢失.您也将无法与其他人共享您的mod.\n您应该创建一个新的mod文件以更改游戏数据,这将使您的更改保持独立.\n\n你确定要继续么?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) != System.Windows.Forms.DialogResult.Yes) { return; } this.parentForm.clearScene(); head.isAMod = false; this.parentForm.nav.ou.gameData.clear(); this.parentForm.nav.BasePath = this.baseDir; this.parentForm.nav.FileMode = navigation.ModFileMode.BASE; GameData.ModMode modMode = GameData.ModMode.BASE; foreach (TreeNode treeNode2 in treeNodes) { if (treeNode2 == this.activeNode) { modMode = GameData.ModMode.ACTIVE; } else if (modMode == GameData.ModMode.ACTIVE) { modMode = GameData.ModMode.LOCKED; } if (modMode == GameData.ModMode.ACTIVE && this.cbTranslationMode.Checked) { modMode = GameData.ModMode.BASE; } if (treeNode2.TreeView == this.baseList) { str = this.baseDir; } else { string str1 = Path.Combine(this.modDir, Path.GetFileNameWithoutExtension(treeNode2.Text)); char directorySeparatorChar = Path.DirectorySeparatorChar; str = string.Concat(str1, directorySeparatorChar.ToString()); } string str2 = str; if (!this.cbTranslationMode.Checked && modMode == GameData.ModMode.ACTIVE) { this.parentForm.nav.ModPath = str2; } this.parentForm.addLoadedFile(str2, treeNode2.Text, modMode); } if (!this.cbTranslationMode.Checked) { TranslationManager.ClearActiveTranslation(); } else { TranslationManager.TranslationCulture selectedItem = this.cbActiveTranslation.SelectedItem as TranslationManager.TranslationCulture; if (selectedItem == null) { MessageBox.Show("加载翻译失败: 无效的语言", "错误", MessageBoxButtons.OK, MessageBoxIcon.Hand); return; } FileInfo fileInfo = new FileInfo(selectedItem.GetFileName()); if (!fileInfo.Exists) { (new GameData()).save(fileInfo.FullName); } this.parentForm.addLoadedFile(selectedItem.path, fileInfo.Name, GameData.ModMode.ACTIVE); this.parentForm.nav.ModPath = selectedItem.path; this.parentForm.nav.ou.gameData.resolveAllReferences(); if (Control.ModifierKeys != Keys.Alt) { TranslationManager.SetActiveTranslation(selectedItem, this.parentForm.nav.ou.gameData); } else { TranslationManager.ClearActiveTranslation(); } } this.parentForm.nav.ou.gameData.resolveAllReferences(); this.parentForm.finishedLoading(); base.Close(); }