Exemplo n.º 1
0
        public static OrderedDictionary <String, TransifexEntry> PrepareTexts(String filePath)
        {
            OrderedDictionary <String, TransifexEntry> dic = StructuredJson.Read(filePath);

            return(PrepareTexts(dic));
        }
Exemplo n.º 2
0
        public static void Main(string[] args)
        {
            Dictionary <String, String> ids = new Dictionary <String, String>();
            var lines = new OrderedDictionary <String, TransifexEntry>();

            void Add(String id, String text, String comment)
            {
                String key = text + comment;

                if (ids.TryGetValue(key, out String knownId))
                {
                    lines.Add(id.ToString(), new TransifexEntry()
                    {
                        Text    = "${" + knownId + "}",
                        Comment = comment
                    });
                }
                else
                {
                    lines.Add(id.ToString(), new TransifexEntry()
                    {
                        Text    = text,
                        Comment = comment
                    });
                    ids.Add(key, id);
                }
            }

            Dictionary <String, String> names = new Dictionary <String, String>();

            foreach (var item in ReadCharacterData())
            {
                names[item.Name] = item.DisplayNameEnglish;
                names[item.DisplayNameJapanese] = item.DisplayNameEnglish;
            }

            var regexes = Tags.OrderByDescending(t => t.Length).Select(t => new KeyValuePair <String, String>(t.Replace("�", ""), t)).ToArray();

            names.Add("一般兵", "Soldier");
            names.Add("一般兵A", "Soldier A");
            names.Add("侍女", "Maid");
            names.Add("リアナ&ラーナ", "Liana & Lana");
            names.Add("指揮官(ナイトマスター)", "Commander (Knight Master)");
            names.Add("モンスター", "Monster");
            names.Add("システムメッセージ", "System Message");
            names.Add("0", "System");

            // Langrisser I
            var path = @"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\eventMessage.txt";

            foreach (var group in DB.EnumerateAll <EventMessage>(path).GroupBy(m => m.ScenarioNumber))
            {
                lines.Clear();
                ids.Clear();
                foreach (var message in group)
                {
                    Add(message.GetKey(), PrepareMessage(message, regexes), $"{names[message.CharacterName]} ({message.VoiceFile})");
                }

                path = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\L1\L1_Stage_{group.Key:D3}.json";
                StructuredJson.Write(path, lines);
            }

            // Langrisser II
            path = @"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\eventMessage2.txt";
            foreach (var group in DB.EnumerateAll <EventMessage>(path).GroupBy(m => m.ScenarioNumber))
            {
                lines.Clear();
                ids.Clear();
                foreach (var message in group)
                {
                    Add(message.GetKey(), PrepareMessage(message, regexes), $"{names[message.CharacterName]} ({message.VoiceFile})");
                }

                path = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\L2\L2_Stage_{group.Key:D3}.json";
                StructuredJson.Write(path, lines);
            }
        }
Exemplo n.º 3
0
        public static void Main_InformationList(string[] args)
        {
            InfomationData[] information = DB.ReadAll <InfomationData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\csv\Resources\csv\InfomationList.txt");

            Dictionary <String, SystemDataId>          ids   = new Dictionary <String, SystemDataId>();
            OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>();

            foreach (var item in information)
            {
                SystemDataId id = new SystemDataId(item.Id, null);

                var messageId = id.ToString();
                if (ids.TryGetValue(item.MessageEnglish, out var knownId))
                {
                    lines.Add(messageId, new TransifexEntry()
                    {
                        Text    = "${" + knownId + "}",
                        Context = SceneTranlsations[item.Scene]
                    });
                }
                else
                {
                    lines.Add(messageId, new TransifexEntry()
                    {
                        Text    = item.MessageEnglish.Replace(',', ',').Replace("⏎", Environment.NewLine),
                        Context = SceneTranlsations[item.Scene]
                    });
                    ids.Add(item.MessageEnglish, id);
                }

                for (Int32 i = 0; i < 4; i++)
                {
                    SystemDataId buttonId = new SystemDataId(item.Id, i + 1);
                    String       english  = item[i].English;

                    var buttonKey = buttonId.ToString();
                    if (ids.TryGetValue(english, out knownId))
                    {
                        lines.Add(buttonKey, new TransifexEntry()
                        {
                            Text    = "${" + knownId + "}",
                            Context = SceneTranlsations[item.Scene]
                        });
                    }
                    else
                    {
                        lines.Add(buttonKey, new TransifexEntry()
                        {
                            Text    = english.Replace(',', ',').Replace("⏎", Environment.NewLine),
                            Context = SceneTranlsations[item.Scene]
                        });

                        ids.Add(english, buttonId);
                    }
                }
            }

            var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\System.json";

            StructuredJson.Write(gp, lines);
        }
Exemplo n.º 4
0
        public static void Main_GoddessDialog_00(string[] args)
        {
            var questions = DB.ReadAll <QuestionData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\question.txt");
            var rewards   = DB.ReadAll <QuestionReward>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\questionReward.txt");
            var skills    = DB.ReadAll <SkillData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\skillData.txt");
            var items     = DB.ReadAll <ItemData>(@"C:\Steam\steamapps\common\Langrisser I & II\csv\itemData.txt");

            var questionsDic = questions.ToDictionary(d => d.Id);
            var skillsDic    = skills.ToDictionary(s => s.ClassName);
            var itemsDic     = items.ToLastKeyDictionary(s => s.NameJapanese);

            String[,] skillRewardA = new String[4, 4];
            String[,] skillRewardB = new String[4, 4];
            String[,] itemRewardA  = new String[4, 4];
            String[,] itemRewardB  = new String[4, 4];
            String[,] itemRewardC  = new String[4, 4];
            Int32 index = 0;

            foreach (var item in rewards)
            {
                if (item.Type.StartsWith("スキル"))
                {
                    String[,] list = (item.Type.EndsWith("A")) ? skillRewardA : skillRewardB;

                    for (Int32 i = 0; i < 4; i++)
                    {
                        var skillData = skillsDic[item[i]];
                        list[index % 4, i] = $"{skillData.NameEnglish}: {skillData.ShortDescriptionEnglish.Replace("<#ffdd00>", "").Replace("<#ffffff>", "")}";
                    }

                    index++;
                }
                else if (item.Type.StartsWith("アイテム"))
                {
                    // Not an error: A => A, C => B, E => C
                    String[,] list = (item.Type.EndsWith("A")) ? itemRewardA : item.Type.EndsWith("C") ? itemRewardB : itemRewardC;

                    for (Int32 i = 0; i < 4; i++)
                    {
                        var itemData = itemsDic[item[i]];
                        list[index % 4, i] = $"{itemData.NameEnglish}: {itemData.ShortDescriptionEnglish.Replace("<#ffdd00>", "").Replace("<#ffffff>", "")}";
                    }

                    index++;
                }
            }

            var l1 = questionsDic[questionsDic[4].NextQuestion1];
            var l2 = questionsDic[questions[5].NextQuestion1];

            OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>();
            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < questions.Length; i++)
            {
                var q = questions[i];
                sb.AppendLine("|-");
                sb.Append($"| colspan=\"3\" | [{q.Id:D2}] '''");
                sb.Append(q.QuestionEnglish).AppendLine("'''");
                sb.AppendLine("|-");

                TransifexEntry goddessEntry = new TransifexEntry()
                {
                    Text    = q.QuestionEnglish.Replace(',', ',').Replace("⏎", Environment.NewLine),
                    Comment = "Lucilis (Goddess)"
                };

                var goddessKey = $"GoddessDialog_{q.Id:D2}";
                lines.Add(goddessKey, goddessEntry);

                Int32 aIndex = 0;
                foreach (var a in q.Answers)
                {
                    aIndex++;
                    sb.Append("|| ");
                    sb.Append(aIndex).Append(". ").Append(a.Answer.English).Append(' ');
                }

                sb.AppendLine();
                sb.AppendLine("|-");

                aIndex = 0;
                foreach (var a in q.Answers)
                {
                    aIndex++;

                    if (a.Answer.English == "-")
                    {
                        continue;
                    }


                    StringBuilder  sb1         = new StringBuilder();
                    TransifexEntry answerEntry = new TransifexEntry()
                    {
                        Text = a.Answer.English.Replace(',', ',').Replace("⏎", Environment.NewLine)
                    };

                    var answerKey = $"GoddessDialog_{q.Id:D2}_A{aIndex}";
                    lines.Add(answerKey, answerEntry);

                    sb.Append("|| ");

                    if (a.SkillA != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 1 ↓");
                    }
                    if (a.SkillB != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 1 →");
                    }
                    if (a.SkillC != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 2 ↓");
                    }
                    if (a.SkillD != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Skill 2 →");
                    }
                    if (a.ItemA != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Weapon: Rank Up");
                    }
                    if (a.ItemB != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Weapon: Magic Wand");
                    }
                    if (a.ItemC != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Armor: Rank Up");
                    }
                    if (a.ItemE == 1)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Accessory: Rank Up");
                    }
                    if (a.ItemE > 1)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Accessory: Boots of Wind");
                    }
                    if (a.ItemF != 0)
                    {
                        (sb1.Length == 0 ? sb1 : sb1.Append("; ")).Append($"Accessory: Chunk of Gold");
                    }

                    if (sb1.Length == 0)
                    {
                        sb1.Append("None");
                    }

                    answerEntry.Comment = $"Reward: {sb1}";
                    sb.Append(sb1.ToString());
                    sb.Append(' ');
                }

                sb.AppendLine();
            }


            var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\GoddessDialog.json";

            StructuredJson.Write(gp, lines);

            Int32 SkillA = 0;
            Int32 SkillB = 0;
            Int32 SkillC = 0;
            Int32 SkillD = 0;
            Int32 ItemA  = 0;
            Int32 ItemB  = 0;
            Int32 ItemC  = 0;
            Int32 ItemD  = 0;
            Int32 ItemE  = 0;
            Int32 ItemF  = 0;

            Int32 Get(Int32 value)
            {
                if (value < 0)
                {
                    return(0);
                }
                if (value > 3)
                {
                    return(3);
                }
                return(value);
            }

            StringBuilder line   = new StringBuilder();
            StringBuilder result = new StringBuilder();

            HashSet <String> uniqueSkills = new HashSet <String>();
            HashSet <String> uniqueItems  = new HashSet <String>();
            HashSet <String> unique       = new HashSet <String>();

            Traverse(questionsDic[10]);

            void Traverse(QuestionData q)
            {
                line.AppendLine(q.QuestionEnglish);

                Int32 aIndex = 0;

                foreach (var a in q.Answers)
                {
                    aIndex++;
                    if (a.Next == 0)
                    {
                        continue;
                    }

                    line.Append('\t');
                    line.AppendLine(a.Answer.English);

                    SkillA += a.SkillA;
                    SkillB += a.SkillB;
                    SkillC += a.SkillC;
                    SkillD += a.SkillD;
                    ItemA  += a.ItemA;
                    ItemB  += a.ItemB;
                    ItemC  += a.ItemC;
                    ItemD  += a.ItemD;
                    ItemE  += a.ItemE;
                    ItemF  += a.ItemF;

                    if (a.Next == -1)
                    {
                        var s1 = skillRewardA[Get(SkillA), Get(SkillB)];
                        var s2 = skillRewardB[Get(SkillC), Get(SkillD)];
                        var i1 = itemRewardA[Get(ItemA), Get(ItemB)];
                        var i2 = itemRewardB[Get(ItemC), Get(ItemD)];
                        var i3 = itemRewardC[Get(ItemE), Get(ItemF)];

                        uniqueSkills.Add(s1);
                        uniqueSkills.Add(s2);

                        uniqueItems.Add(i1);
                        uniqueItems.Add(i2);
                        uniqueItems.Add(i3);

                        List <String> tmp = new List <String> {
                            s1, s2, i1, i2, i3
                        };
                        tmp.Sort();
                        var reward = String.Join("", tmp);

                        if (unique.Add(reward))
                        {
                            result.AppendLine(Environment.NewLine);
                            result.AppendLine("-----------------------------------------");
                            var value = line.ToString();
                            result.AppendLine(value);
                            result.AppendLine(s1);
                            result.AppendLine(s2);
                            result.AppendLine(i1);
                            result.AppendLine(i2);
                            result.AppendLine(i3);
                        }
                    }
                    else
                    {
                        Traverse(questionsDic[a.Next]);
                    }

                    line.Length -= a.Answer.English.Length + Environment.NewLine.Length + 1;

                    SkillA -= a.SkillA;
                    SkillB -= a.SkillB;
                    SkillC -= a.SkillC;
                    SkillD -= a.SkillD;
                    ItemA  -= a.ItemA;
                    ItemB  -= a.ItemB;
                    ItemC  -= a.ItemC;
                    ItemD  -= a.ItemD;
                    ItemE  -= a.ItemE;
                    ItemF  -= a.ItemF;
                }

                line.Length -= q.QuestionEnglish.Length + Environment.NewLine.Length;
            }

            String skills1 = String.Join(Environment.NewLine + "|-" + Environment.NewLine + "| ", uniqueSkills.OrderBy(s => s).Select(s => s.Replace(": ", " || ")));
            String items1  = String.Join(Environment.NewLine + "|-" + Environment.NewLine + "| ", uniqueItems.OrderBy(s => s).Select(s => s.Replace(": ", " || ")));
        }
Exemplo n.º 5
0
        public static void Main_Tags(string[] args)
        {
            // HashSet<Char> chars = new HashSet<Char>();
            // foreach (var filePath in Directory.EnumerateFiles(@"C:\Steam\steamapps\common\Langrisser I & II\Langrisser I & II_Data\StreamingAssets\Text\RU", "*.json"))
            // {
            //     var entries = StructuredJson.Read(filePath);
            //     foreach (var entry in entries)
            //     {
            //         foreach (var ch in entry.Value.Text)
            //         {
            //             chars.Add(ch);
            //         }
            //     }
            // }
            //
            // foreach (var ch in "【】%23:ABCDEFGHIJKLM■!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~×‥…※ⅠⅡЁАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЬЭЯабвгдежзийклмнопрстуфхцчшщъыьэюяё")
            // {
            //     chars.Add(ch);
            // }
            //
            // var str = new String(chars.OrderBy(c => c).ToArray()).Trim();

            OrderedDictionary <String, TransifexEntry> lines = new OrderedDictionary <String, TransifexEntry>();

            void Add(String tag, String replacement)
            {
                String id = $"Tag {tag}";

                lines.Add(id, new TransifexEntry()
                {
                    Context = tag,
                    Text    = replacement
                });
            }

            Add("{Blue}", "<#88aaff>");
            Add("{Yellow}", "<#ffdd00>");
            Add("{Green}", "<#5eff00>");
            Add("{White}", "<#ffffff>");
            Add("{LightYellow}", "<#ffffdd>");
            Add("{LightPurple}", "<#ddddff>");
            Add("{AGL}", "AGL");
            Add("{ATK}", "ATK");
            Add("{DEF}", "DEF");
            Add("{DEX}", "DEX");
            Add("{DMG}", "DMG");
            Add("{MAG}", "MAG");
            Add("{MGR}", "MGR");
            Add("{MOV}", "MOV");

            foreach (var tag in Tags)
            {
                var replacement = tag.Replace("�", "");
                var text        = '{' + replacement + '}';

                Add(text, replacement);
            }

            var gp = $@"C:\Steam\steamapps\common\Langrisser I & II\csv\Tags.json";

            StructuredJson.Write(gp, lines);
        }