Пример #1
0
        private static void SetSubtitles(aqq model, Dictionary <string, string> dictionary)
        {
            var processed    = new Dictionary <string, bool>();
            var queue        = new Queue <dd2>();
            dd2 startElement = model.b();

            queue.Enqueue(startElement);

            while (queue.Count > 0)
            {
                dd2 current = queue.Dequeue();
                if (processed.ContainsKey(current.Name))
                {
                    continue;
                }

                switch (current)
                {
                case yz question:
                {
                    Dictionary <string, string> dict = question.d();

                    if (dictionary.ContainsKey(question.Name))
                    {
                        string str = dictionary[question.Name];
                        dict["English"] = str;
                    }

                    foreach (dpy answer in question.PossibleAnswers)
                    {
                        queue.Enqueue(answer);
                    }

                    break;
                }

                case c74 storyElement:
                {
                    Dictionary <string, string> dict = storyElement.d();

                    if (dictionary.ContainsKey(storyElement.Name))
                    {
                        string str = dictionary[storyElement.Name];
                        dict["English"] = str;
                    }

                    break;
                }
                }

                foreach (dd2 step in current.PossibleNextSteps)
                {
                    queue.Enqueue(step);
                }

                processed.Add(current.Name, true);
            }
        }
Пример #2
0
        private static void Write(string gameFile, string textsFile, string outputFile)
        {
            Initialize();

            switch (Path.GetExtension(gameFile))
            {
            case ".udlg":
            {
                Dictionary <string, string> texts = ReadTexts(textsFile);
                aqq model = Dialogs.SetSubtitles(gameFile, texts);
                FileManager.Save(model, outputFile, false);
                break;
            }

            case ".k":
            {
                Dictionary <string, string> texts = ReadTexts(textsFile);
                aj8 model = Knowledge.SetSubtitles(gameFile, texts);
                FileManager.Save(model, outputFile, true);
                break;
            }

            case ".item":
            {
                Dictionary <string, string> texts = ReadTexts(textsFile);
                bqj model = Items.SetSubtitles(gameFile, texts);
                FileManager.Save(model, outputFile, true);
                break;
            }

            case ".uz":
            {
                Dictionary <string, string> texts = ReadTexts(textsFile);
                cfs model = Zone.SetSubtitles(gameFile, texts);
                FileManager.Save(model, outputFile, true);
                break;
            }

            case ".uzl":
            {
                Dictionary <string, string> texts = ReadTexts(textsFile);
                cy3 model = ZoneLayer.SetSubtitles(gameFile, texts);
                FileManager.Save(model, outputFile, true);
                break;
            }
            }
        }
Пример #3
0
        private static Dictionary <string, string> GetSubtitles(aqq model)
        {
            var result = new Dictionary <string, string>();

            if (model == null)
            {
                return(result);
            }

            var processed = new Dictionary <string, bool>();

            var queue = new Queue <dd2>();

            dd2 startElement = model.b();

            queue.Enqueue(startElement);

            while (queue.Count > 0)
            {
                dd2 current = queue.Dequeue();
                if (processed.ContainsKey(current.Name))
                {
                    continue;
                }

                switch (current)
                {
                case yz question:
                {
                    Dictionary <string, string> dict = question.d();    // LocalizedTexts

                    if (dict.Count > 0 && !result.ContainsKey(question.Name))
                    {
                        string str = dict["English"];
                        result.Add(question.Name, str);
                    }

                    foreach (dpy answer in question.PossibleAnswers)
                    {
                        queue.Enqueue(answer);
                    }

                    break;
                }

                case c74 storyElement:
                {
                    Dictionary <string, string> dict = storyElement.d();

                    if (dict.Count > 0 && !result.ContainsKey(storyElement.Name))
                    {
                        string str = dict["English"];
                        result.Add(storyElement.Name, str);
                    }

                    break;
                }
                }

                foreach (dd2 step in current.PossibleNextSteps)
                {
                    queue.Enqueue(step);
                }

                processed.Add(current.Name, true);
            }

            return(result);
        }