public void EasyCompareWzFiles(Wz_File fileNew, Wz_File fileOld, string outputDir) { StateInfo = "正在对比wz概况..."; if (fileNew.Type == Wz_Type.Base || fileOld.Type == Wz_Type.Base) //至少有一个base 拆分对比 { var virtualNodeNew = RebuildWzFile(fileNew); var virtualNodeOld = RebuildWzFile(fileOld); WzFileComparer comparer = new WzFileComparer(); comparer.IgnoreWzFile = true; var dictNew = SplitVirtualNode(virtualNodeNew); var dictOld = SplitVirtualNode(virtualNodeOld); //寻找共同wzType var wzTypeList = dictNew.Select(kv => kv.Key) .Where(wzType => dictOld.ContainsKey(wzType)); CreateStyleSheet(outputDir); foreach (var wzType in wzTypeList) { var vNodeNew = dictNew[wzType]; var vNodeOld = dictOld[wzType]; var cmp = comparer.Compare(vNodeNew, vNodeOld); OutputFile(vNodeNew.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(), vNodeOld.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(), wzType, cmp.ToList(), outputDir); } } else //执行传统对比 { WzFileComparer comparer = new WzFileComparer(); comparer.IgnoreWzFile = false; var cmp = comparer.Compare(fileNew.Node, fileOld.Node); CreateStyleSheet(outputDir); OutputFile(fileNew, fileOld, fileNew.Type, cmp.ToList(), outputDir); } GC.Collect(); }
public void EasyCompareWzFiles(Wz_File fileNew, Wz_File fileOld, string outputDir) { StateInfo = "Comparing Wz..."; if (fileNew.Type == Wz_Type.Base || fileOld.Type == Wz_Type.Base) //At least one base split comparison { var virtualNodeNew = RebuildWzFile(fileNew); var virtualNodeOld = RebuildWzFile(fileOld); WzFileComparer comparer = new WzFileComparer(); comparer.IgnoreWzFile = true; var dictNew = SplitVirtualNode(virtualNodeNew); var dictOld = SplitVirtualNode(virtualNodeOld); //Find a common Wztype var wzTypeList = dictNew.Select(kv => kv.Key) .Where(wzType => dictOld.ContainsKey(wzType)); CreateStyleSheet(outputDir); foreach (var wzType in wzTypeList) { var vNodeNew = dictNew[wzType]; var vNodeOld = dictOld[wzType]; var cmp = comparer.Compare(vNodeNew, vNodeOld); OutputFile(vNodeNew.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(), vNodeOld.LinkNodes.Select(node => node.Value).OfType <Wz_File>().ToList(), wzType, cmp.ToList(), outputDir); } } else //Perform traditional comparisons { WzFileComparer comparer = new WzFileComparer(); comparer.IgnoreWzFile = false; var cmp = comparer.Compare(fileNew.Node, fileOld.Node); CreateStyleSheet(outputDir); OutputFile(fileNew, fileOld, fileNew.Type, cmp.ToList(), outputDir); } GC.Collect(); }