public static bool Prefix(ref string __result, ref string baseSkinsXmlPath)
        {
            List <string> elementNameList             = new List <string>();
            List <Tuple <string, string> > toBeMerged = new List <Tuple <string, string> >();
            List <string> xsltList = new List <string>();
            List <MbObjectXmlInformation> mbprojXmlList = XmlResource.MbprojXmls.Where(x => x.Id == "soln_skins").ToList();

            mbprojXmlList.Reverse();

            foreach (MbObjectXmlInformation mbprojXml in mbprojXmlList)
            {
                if (File.Exists(ModuleHelper.GetXmlPathForNative(mbprojXml.ModuleName, mbprojXml.Name)))
                {
                    elementNameList.Add(ModuleHelper.GetXmlPathForNativeWBase(mbprojXml.ModuleName, mbprojXml.Name));
                    toBeMerged.Add(Tuple.Create(ModuleHelper.GetXmlPathForNative(mbprojXml.ModuleName, mbprojXml.Name), string.Empty));
                }
                string xsltPathForNative = ModuleHelper.GetXsltPathForNative(mbprojXml.ModuleName, mbprojXml.Name);

                xsltList.Add(File.Exists(xsltPathForNative) ? xsltPathForNative : string.Empty);
            }
            XmlDocument mergedXmlForNative = MBObjectManager.CreateMergedXmlFile(toBeMerged, xsltList, true);

            System.IO.StringWriter stringWriter  = new System.IO.StringWriter();
            XmlTextWriter          xmlTextWriter = new XmlTextWriter(stringWriter);

            mergedXmlForNative.WriteTo(xmlTextWriter);
            baseSkinsXmlPath = elementNameList.First();
            __result         = stringWriter.ToString();

            return(false);
        }
        public static bool Prefix(ref string __result, ref string baseSkinsXmlPath)
        {
            Debug.Print(DebugString.ToString());

            // Why do I have to clone and modify two separate methods? - Designer225
            List <string> usedPaths = new List <string>();
            List <Tuple <string, string> > toBeMerged = new List <Tuple <string, string> >();
            List <string> xsltList = new List <string>();

            List <MbObjectXmlInformation> mbprojXmlList = XmlResource.MbprojXmls.Where(x => x.Id == "soln_skins").ToList();

            mbprojXmlList.Reverse(); // restored for compatibility reason with mods that modify skin.xml that load later.

            foreach (MbObjectXmlInformation mbprojXml in mbprojXmlList)
            {
                if (File.Exists(ModuleInfo.GetXmlPathForNative(mbprojXml.ModuleName, mbprojXml.Name)))
                {
                    usedPaths.Add(ModuleInfo.GetXmlPathForNativeWBase(mbprojXml.ModuleName, mbprojXml.Name));
                    toBeMerged.Add(Tuple.Create(ModuleInfo.GetXmlPathForNative(mbprojXml.ModuleName, mbprojXml.Name), string.Empty));
                }
                string xsltPathForNative = ModuleInfo.GetXsltPathForNative(mbprojXml.ModuleName, mbprojXml.Name);

                xsltList.Add(File.Exists(xsltPathForNative) ? xsltPathForNative : string.Empty);
            }
            XmlDocument mergedXmlForNative = MBObjectManager.CreateMergedXmlFile(toBeMerged, xsltList, true);

            System.IO.StringWriter stringWriter  = new System.IO.StringWriter();
            XmlTextWriter          xmlTextWriter = new XmlTextWriter(stringWriter);

            mergedXmlForNative.WriteTo(xmlTextWriter);
            baseSkinsXmlPath = usedPaths.First();
            __result         = stringWriter.ToString();

            return(false);
        }
Ejemplo n.º 3
0
        public static bool Prefix(ref string __result, ref string baseSkinsXmlPath)
        {
            Debug.Print(DebugString.ToString());

            // Why do I have to clone and modify two separate methods? - Designer225
            List <string> elementNameList             = new List <string>();
            List <Tuple <string, string> > toBeMerged = new List <Tuple <string, string> >();
            List <string> xsltList = new List <string>();

            List <MbObjectXmlInformation> mbprojXmlList = XmlResource.MbprojXmls.Where(x => x.Id == "soln_skins").ToList();

            //mbprojXmlList = mbprojXmlList.Reverse();

            for (int i = 0; i < mbprojXmlList.Count; i++)
            {
                var mbproj = mbprojXmlList[i];

                if (mbproj.ModuleName == "Native")
                {
                    mbprojXmlList.RemoveAt(i);
                    mbprojXmlList.Add(mbproj);
                    break;
                }
            }

            foreach (MbObjectXmlInformation mbprojXml in mbprojXmlList)
            {
                if (File.Exists(ModuleInfo.GetXmlPathForNative(mbprojXml.ModuleName, mbprojXml.Name)))
                {
                    elementNameList.Add(mbprojXml.Name);
                    toBeMerged.Add(Tuple.Create(ModuleInfo.GetXmlPathForNative(mbprojXml.ModuleName, mbprojXml.Name), string.Empty));
                }
                string xsltPathForNative = ModuleInfo.GetXsltPathForNative(mbprojXml.ModuleName, mbprojXml.Name);
                if (File.Exists(xsltPathForNative))
                {
                    xsltList.Add(xsltPathForNative);
                }
                else
                {
                    xsltList.Add("");
                }
            }
            XmlDocument mergedXmlForNative = MBObjectManager.CreateMergedXmlFile(toBeMerged, xsltList, true);

            System.IO.StringWriter stringWriter  = new System.IO.StringWriter();
            XmlTextWriter          xmlTextWriter = new XmlTextWriter(stringWriter);

            mergedXmlForNative.WriteTo(xmlTextWriter);
            baseSkinsXmlPath = elementNameList.First();
            __result         = stringWriter.ToString();

            return(false);
        }