Exemplo n.º 1
0
        public static void SlamItOut(Dictionary <string, TagHelper> tagsToChange, Dictionary <int, CountryMergeHelper> statesToChangeOwnership,
                                     ProvincesToChange provincesToChange, List <Ideology> ideologies, string directory, int level)
        {
            DirectoryInfo directoryInfo = new DirectoryInfo(directory);

            if (IgnoredDirectories.Contains(directoryInfo.Name))
            {
                return;
            }
            else
            {
                DirectoryInfo[]      directories    = directoryInfo.GetDirectories();
                List <DirectoryInfo> bestFuckinList = new List <DirectoryInfo>();

                if (directories != null && directories.Length > 0)
                {
                    for (int i = 0; i < directories.Length; i++)
                    {
                        bestFuckinList.Add(directories[i]);
                    }
                    //LEVEL ONE
                    if (bestFuckinList.Count > 0)
                    {
                        foreach (DirectoryInfo di in bestFuckinList)
                        {
                            SlamItOut(tagsToChange, statesToChangeOwnership, provincesToChange, ideologies, di.FullName, level + 1);
                        }
                    }
                }
                FileInfo[]      filesRaw = directoryInfo.GetFiles();
                List <FileInfo> files    = new List <FileInfo>();

                for (int i = 0; i < filesRaw.Length; i++)
                {
                    files.Add(filesRaw[i]);
                }
                foreach (FileInfo fi in files)
                {
                    ProcessFile(fi, level, directoryInfo, tagsToChange, statesToChangeOwnership, provincesToChange, ideologies);
                }
            }
        }
Exemplo n.º 2
0
        public static void ProcessFile(FileInfo fi, int level, DirectoryInfo directoryInfo, Dictionary <string, TagHelper> tagsToChange,
                                       Dictionary <int, CountryMergeHelper> statesToChangeOwner, ProvincesToChange provincesToChange, List <Ideology> ideologies)
        {
            if (File.Exists(fi.FullName))
            {
                switch (level.ToString())
                {
                case "0":
                    break;

                case "1":
                    if (directoryInfo.Name == "localisation")
                    {
                        if (fi.Name == "countries_mod_I_english.yml")
                        {
                            List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                            prefixSuffixes.Add(new Tuple <string, string>("", "_"));
                            ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                            //have to change some ideologies in here
                        }
                    }
                    if (directoryInfo.Name == "interface")
                    {
                        if (fi.Name == "converter_ideas.gfx")
                        {
                            List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                            prefixSuffixes.Add(new Tuple <string, string>("_", "_"));
                            ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                        }
                    }
                    if (directoryInfo.Name == "history")
                    {
                        break;
                    }
                    if (directoryInfo.Name == "common")
                    {
                        break;
                    }
                    if (directoryInfo.Name == "events")
                    {
                        if (fi.Name == "ElectionEvents.txt")
                        {
                            List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                            prefixSuffixes.Add(new Tuple <string, string>(" ", ""));
                            ProcessCountryTags(fi, tagsToChange, prefixSuffixes);

                            //change ideology names in here as well
                        }
                        else if (fi.Name == "converterPoliticalEvents.txt")
                        {
                            //change ideology names in here
                        }
                        else if (fi.Name == "StabilityEvents.txt")
                        {
                            //change ideology names in here as well
                        }
                        else if (fi.Name == "WarJustification.txt")
                        {
                            //change ideology names in here.  way at the end.
                        }
                    }
                    break;

                //case "2":
                //    break;
                case "2":
                    bool filenameEdited = false;
                    if (directoryInfo.Name == "names")
                    {
                        List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                        prefixSuffixes.Add(new Tuple <string, string>("", " = {"));
                        ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                    }
                    if (directoryInfo.Name == "countries" && directoryInfo.Parent.Name == "history")
                    {
                        //open a text file for the tag to be replaced
                        //if one is found

                        //scrub this file for every tag we're changing
                        List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                        prefixSuffixes.Add(new Tuple <string, string>(" ", ""));
                        prefixSuffixes.Add(new Tuple <string, string>("", "_OOB"));
                        ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                        string fileName    = fi.Name;
                        string newFileName = "";

                        //direct lookup this file in our list of tags to change
                        TagHelper th;
                        if (tagsToChange.TryGetValue(fileName.Substring(0, 3), out th))
                        {
                            if (fileName.Length > 3)
                            {
                                newFileName = directoryInfo.FullName + "\\" + th.NewTag + fileName.Substring(3);
                                File.Delete(newFileName);
                                File.Move(fi.FullName, newFileName);
                                filenameEdited = true;
                            }
                        }
                        if (filenameEdited)
                        {
                            fileName = newFileName;
                        }
                    }
                    if (directoryInfo.Name == "country_tags")
                    {
                        List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                        prefixSuffixes.Add(new Tuple <string, string>("", " ="));
                        ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                    }
                    if (directoryInfo.Name == "ideas")
                    {
                        List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                        prefixSuffixes.Add(new Tuple <string, string>("", ""));
                        ProcessCountryTags(fi, tagsToChange, prefixSuffixes);

                        string fileName    = fi.Name;
                        string newFileName = "";

                        //direct lookup this file in our list of tags to change
                        TagHelper th;
                        if (tagsToChange.TryGetValue(fileName.Substring(0, 3), out th))
                        {
                            if (fileName.Length > 3)
                            {
                                newFileName = directoryInfo.FullName + "\\" + th.NewTag + fileName.Substring(3);
                                File.Delete(newFileName);
                                File.Move(fi.FullName, newFileName);
                                filenameEdited = true;
                            }
                        }
                    }
                    if (directoryInfo.Name == "states")
                    {
                        List <Tuple <string, string> > countryPrefixSuffixes = new List <Tuple <string, string> >();
                        countryPrefixSuffixes.Add(new Tuple <string, string>("", ""));
                        ProcessCountryTags(fi, tagsToChange, countryPrefixSuffixes);

                        int stateId = 0;
                        if (int.TryParse(fi.Name.Replace(fi.Extension, ""), out stateId))
                        {
                            CountryMergeHelper cmh;
                            List <string>      provinces = new List <string>();
                            if (statesToChangeOwner.TryGetValue(stateId, out cmh))
                            {
                                List <Tuple <string, string> > statesPrefixSuffixes = new List <Tuple <string, string> >();
                                statesPrefixSuffixes.Add(new Tuple <string, string>("owner = ", " "));
                                statesPrefixSuffixes.Add(new Tuple <string, string>("add core of = ", " "));
                                ChangeStateOwners(fi, cmh, statesPrefixSuffixes);
                            }
                            if (provincesToChange.provincesFrom.TryGetValue(stateId.ToString(), out provinces))
                            {
                                //remove province from state
                                RemoveProvincesFromState(fi, provinces);
                            }

                            provinces = new List <string>();
                            if (provincesToChange.provincesTo.TryGetValue(stateId.ToString(), out provinces))
                            {
                                //add province to state
                                AddProvincesToState(fi, provinces);
                            }
                        }
                    }
                    if (directoryInfo.Name == "units")
                    {
                        string    fileName = fi.Name;
                        TagHelper th;
                        if (tagsToChange.TryGetValue(fileName.Substring(0, 3), out th))
                        {
                            if (fileName.Length > 3)
                            {
                                List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                                prefixSuffixes.Add(new Tuple <string, string>("", ""));
                                ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                                string newFileName = directoryInfo.FullName + "\\" + th.NewTag + fileName.Substring(3);
                                File.Delete(newFileName);
                                File.Move(fi.FullName, newFileName);
                            }
                        }
                    }

                    if (directoryInfo.Name == "flags")
                    {
                        string    fileName = fi.Name;
                        TagHelper th;
                        if (tagsToChange.TryGetValue(fileName.Substring(0, 3), out th))
                        {
                            if (fileName.Length > 3)
                            {
                                string newFileName = directoryInfo.FullName + "\\" + th.NewTag + fileName.Substring(3);
                                File.Delete(newFileName);
                                File.Move(fi.FullName, newFileName);
                            }
                        }
                    }

                    if (directoryInfo.Name == "Ideologies")
                    {
                        //process ideologies file
                        GenerateIdeologiesFile(fi, ideologies);
                    }

                    break;

                case "3":
                    if (directoryInfo.Name == "names")
                    {
                        List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                        prefixSuffixes.Add(new Tuple <string, string>("", " = {"));
                        ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                    }
                    if (directoryInfo.Name == "colors")
                    {
                        List <Tuple <string, string> > prefixSuffixes = new List <Tuple <string, string> >();
                        prefixSuffixes.Add(new Tuple <string, string>("", " = {"));
                        ProcessCountryTags(fi, tagsToChange, prefixSuffixes);
                    }
                    if (directoryInfo.Name == "small")
                    {
                        string    fileName = fi.Name;
                        TagHelper th;
                        if (tagsToChange.TryGetValue(fileName.Substring(0, 3), out th))
                        {
                            if (fileName.Length > 3)
                            {
                                string newFileName = directoryInfo.FullName + "\\" + th.NewTag + fileName.Substring(3);
                                File.Delete(newFileName);
                                File.Move(fi.FullName, newFileName);
                            }
                        }
                    }
                    if (directoryInfo.Name == "medium")
                    {
                        string    fileName = fi.Name;
                        TagHelper th;
                        if (tagsToChange.TryGetValue(fileName.Substring(0, 3), out th))
                        {
                            if (fileName.Length > 3)
                            {
                                string newFileName = directoryInfo.FullName + "\\" + th.NewTag + fileName.Substring(3);
                                File.Delete(newFileName);
                                File.Move(fi.FullName, newFileName);
                            }
                        }
                    }
                    break;
                }
            }
            else
            {
                Console.WriteLine("CAN't FIND THA F****N " + fi.FullName + "FILE");
                //NEW COUNTRY;
            }
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            ////COMMON/NATIONAL_FOCUS.  it's generating focus files for countries i'm making tags for.   why.


            int level;

            //home
            string baseDirectory   = "C:\\myprojects\\hoi4mod\\test";
            string outputDirectory = @"C:\Users\Jobber 2k17\Documents\Paradox Interactive\Hearts of Iron IV\mod\test";
            string dataDirectory   = "C:\\myprojects\\hoi4mod\\data\\";


            //work
            //string baseDirectory = "C:\\coreymods\\hoi4mod\\test";
            //string outputDirectory = "C:\\coreymods\\hoi4mod\\testoutput";
            //string dataDirectory = "C:\\coreymods\\hoi4mod\\data\\";

            string mergeDataFilename          = "TerritoryMergingData.csv";
            string countriesFilename          = "Countries.csv";
            string provincesFilename          = "Provinces.csv";
            string ideologyPropertiesFilename = "IdeologyProperties.csv";
            string ideologyTypesFilename      = "IdeologyTypes.csv";
            string ideologyFactionsFilename   = "IdeologyFactions.csv";
            string ideologyRulesFilename      = "IdeologyRules.csv";
            string ideologyModifiersFilename  = "IdeologyModifiers.csv";

            Dictionary <string, TagHelper> tagsToChange = new Dictionary <string, TagHelper>();

            TextReader reader    = new StreamReader(dataDirectory + countriesFilename);
            var        csvReader = new CsvReader(reader);

            csvReader.Read();
            csvReader.ReadHeader();
            var records = csvReader.GetRecords <TagHelper>();

            foreach (TagHelper th in records)
            {
                if (String.IsNullOrWhiteSpace(th.NewTag))
                {
                    continue;
                }
                else
                {
                    tagsToChange.Add(th.Tag, th);
                }
            }
            reader.Dispose();
            csvReader.Dispose();

            Dictionary <int, CountryMergeHelper> stateChanges = new Dictionary <int, CountryMergeHelper>();

            TextReader stateReader    = new StreamReader(dataDirectory + mergeDataFilename);
            var        stateCsvReader = new CsvReader(stateReader);

            stateCsvReader.Read();
            stateCsvReader.ReadHeader();
            var stateRecords = stateCsvReader.GetRecords <CountryMergeHelper>();

            foreach (CountryMergeHelper cmh in stateRecords)
            {
                if (cmh.stateId == null || String.IsNullOrWhiteSpace(cmh.stateId))
                {
                    continue;
                }
                stateChanges.Add(int.Parse(cmh.stateId), cmh);
            }
            stateReader.Dispose();
            stateCsvReader.Dispose();

            Dictionary <int, ProvinceHelper> provinceChanges = new Dictionary <int, ProvinceHelper>();

            TextReader provinceReader    = new StreamReader(dataDirectory + provincesFilename);
            var        provinceCsvReader = new CsvReader(provinceReader);

            provinceCsvReader.Read();
            provinceCsvReader.ReadHeader();
            var provinceRecords = provinceCsvReader.GetRecords <ProvinceHelper>();
            ProvincesToChange provincesToChange = new ProvincesToChange();

            provincesToChange.provincesFrom = new Dictionary <string, List <string> >();
            provincesToChange.provincesTo   = new Dictionary <string, List <string> >();
            foreach (ProvinceHelper cmh in provinceRecords)
            {
                if (cmh.provinceId == null || String.IsNullOrWhiteSpace(cmh.provinceId))
                {
                    continue;
                }
                List <string> provincesFrom;
                if (provincesToChange.provincesFrom.TryGetValue(cmh.stateFrom, out provincesFrom))
                {
                    provincesFrom.Add(cmh.provinceId);
                    provincesToChange.provincesFrom[cmh.stateFrom] = provincesFrom;
                }
                else
                {
                    provincesFrom = new List <string>();
                    provincesFrom.Add(cmh.provinceId);
                    provincesToChange.provincesFrom.Add(cmh.stateFrom, provincesFrom);
                }

                List <string> provincesTo;
                if (provincesToChange.provincesTo.TryGetValue(cmh.stateTo, out provincesTo))
                {
                    provincesTo.Add(cmh.provinceId);
                    provincesToChange.provincesTo[cmh.stateTo] = provincesTo;
                }
                else
                {
                    provincesTo = new List <string>();
                    provincesTo.Add(cmh.provinceId);
                    provincesToChange.provincesTo.Add(cmh.stateTo, provincesTo);
                }
            }
            provinceReader.Dispose();
            provinceCsvReader.Dispose();

            //ideology readers setup
            List <Ideology> ideologies = new List <Ideology>();

            TextReader ideologyPropertiesReader    = new StreamReader(dataDirectory + ideologyPropertiesFilename);
            var        ideologyPropertiesCsvReader = new CsvReader(ideologyPropertiesReader);

            ideologyPropertiesCsvReader.Read();
            ideologyPropertiesCsvReader.ReadHeader();
            var ideologyPropertiesList = ideologyPropertiesCsvReader.GetRecords <IdeologyProperties>();

            ideologyPropertiesReader.Dispose();
            ideologyPropertiesCsvReader.Dispose();

            TextReader ideologyTypesReader    = new StreamReader(dataDirectory + ideologyTypesFilename);
            var        ideologyTypesCsvReader = new CsvReader(ideologyTypesReader);

            ideologyTypesCsvReader.Read();
            ideologyTypesCsvReader.ReadHeader();
            var ideologyTypesList = ideologyTypesCsvReader.GetRecords <IdeologyType>();

            ideologyTypesReader.Dispose();
            ideologyTypesCsvReader.Dispose();

            TextReader ideologyFactionsReader    = new StreamReader(dataDirectory + ideologyFactionsFilename);
            var        ideologyFactionsCsvReader = new CsvReader(ideologyFactionsReader);

            ideologyFactionsCsvReader.Read();
            ideologyFactionsCsvReader.ReadHeader();
            var ideologyFactionsList = ideologyFactionsCsvReader.GetRecords <IdeologyFaction>();

            ideologyFactionsReader.Dispose();
            ideologyFactionsCsvReader.Dispose();


            TextReader ideologyRulesReader    = new StreamReader(dataDirectory + ideologyRulesFilename);
            var        ideologyRulesCsvReader = new CsvReader(ideologyRulesReader);

            ideologyRulesCsvReader.Read();
            ideologyRulesCsvReader.ReadHeader();
            var ideologyRulesList = ideologyRulesCsvReader.GetRecords <IdeologyRules>();

            ideologyRulesReader.Dispose();
            ideologyRulesCsvReader.Dispose();

            TextReader ideologyModifiersReader    = new StreamReader(dataDirectory + ideologyModifiersFilename);
            var        ideologyModifiersCsvReader = new CsvReader(ideologyModifiersReader);

            ideologyModifiersCsvReader.Read();
            ideologyModifiersCsvReader.ReadHeader();
            var ideologyModifiersList = ideologyModifiersCsvReader.GetRecords <IdeologyModifiers>();

            ideologyModifiersReader.Dispose();
            ideologyModifiersCsvReader.Dispose();

            foreach (IdeologyProperties ip in ideologyPropertiesList)
            {
                Ideology ideology = new Ideology();

                ideology.properties = ip;
                List <IdeologyType> ideologyTypes = new List <IdeologyType>();

                foreach (IdeologyType ideologyType in ideologyTypesList)
                {
                    if (ideologyType.name == ip.name)
                    {
                        ideologyTypes.Add(ideologyType);
                    }
                }

                ideology.types = ideologyTypes;

                List <IdeologyFaction> ideologyFactions = new List <IdeologyFaction>();
                foreach (IdeologyFaction idFa in ideologyFactionsList)
                {
                    if (idFa.name == ip.name)
                    {
                        ideologyFactions.Add(idFa);
                    }
                }

                ideology.factions = ideologyFactions;

                foreach (IdeologyRules ir in ideologyRulesList)
                {
                    if (ir.name == ip.name)
                    {
                        ideology.rules = ir;
                    }
                }

                foreach (IdeologyModifiers im in ideologyModifiersList)
                {
                    if (im.name == ip.name)
                    {
                        ideology.modifiers = im;
                    }
                }

                ideologies.Add(ideology);
            }

            ClearDirectory(outputDirectory);
            Directory.CreateDirectory(outputDirectory);
            Copy(baseDirectory, outputDirectory);

            level = 0;
            SlamItOut(tagsToChange, stateChanges, provincesToChange, ideologies, outputDirectory, level);
            //Console.WriteLine("finished tag " + th.oldTag + " to " + th.newTag);

            Console.WriteLine("TAll done.");
            Console.ReadLine();
        }