예제 #1
0
        private void PlayScene(ITalkingScene scene)
        {
            var cheated = false;

            switch (scene.SceneType)
            {
            case SceneType.Logic:
                Console.WriteLine("Path of Logic");
                break;

            case SceneType.Intuitional:
                Console.WriteLine("Path of Intuition");
                break;
            }

            foreach (var phrase in scene.Dialogues)
            {
                if (string.IsNullOrEmpty(phrase.Person))
                {
                    Console.WriteLine(phrase.Text);
                }
                else
                {
                    var person = DecodeName(phrase.Person);
                    Console.WriteLine($@"{person}: ""{phrase.Text}""");
                    if (scene.SceneType == SceneType.Love &&
                        !person.Equals(_story.Hero.Name) &&
                        !person.Equals(_story.Hero.MainLover) &&
                        _story.Hero.MaxSympathy >= 10)
                    {
                        cheated = true;
                    }
                }
                var ans = Console.ReadLine();
                while (ans == null)
                {
                    ans = Console.ReadLine();
                }

                if (ans.Equals("m"))
                {
                    Menu();
                }
            }
            if (!cheated)
            {
                return;
            }
            Console.WriteLine("Вы изменили своей второй половинке!");
            _story.Hero.SetSympathies(new Dictionary <string, int> {
                { "MainLover", -2 }
            });
        }
예제 #2
0
        public void ProcessSerie()
        {
            if (_story.CurrentSeason == -1 ||
                (_story.CurrentSeason == 0 && _story.CurrentSeries == -1))
            {
                Console.WriteLine("Введите имя и нажмите enter");
                _story.Hero.Name = Console.ReadLine();
            }
            var filename = _story.GetNextSeries();

            if (string.IsNullOrEmpty(filename))
            {
                Console.WriteLine("Oooops We don't have series");
                Program.Player.TrySetKeys(1);
                Console.WriteLine($"Ключей {Program.Player.Keys}");
                return;
            }

            List <Scene> scenesList;

            using (_scenesParser)
            {
                _scenesParser.SetFilenameForReading(filename);
                scenesList = _scenesParser.GetObject();
            }
            foreach (var scene in scenesList)
            {
                if (scene.SceneType == SceneType.None)
                {
                    IChoiceScene currentScene = scene;
                    var          person       = DecodeName(currentScene.Hero);
                    Console.WriteLine($"Алмазов {Program.Player.Diamonds}");
                    Console.WriteLine($"{person} : ");
                    foreach (var optionSqueeze in currentScene.Choices.Select(choice => choice.DiamondDelta == 0 ? choice.Text :
                                                                              string.Join(" ", choice.Text,
                                                                                          Math.Abs(choice.DiamondDelta).ToString())))
                    {
                        Console.WriteLine(optionSqueeze);
                    }


                    var ans = Console.ReadLine();
                    while (ans == null)
                    {
                        ans = Console.ReadLine();
                    }
                    if (ans.Equals("m"))
                    {
                        Menu();
                        ans = Console.ReadLine();
                    }

                    var selectedOption = currentScene.Choices[int.Parse(ans)];
                    while (!Program.Player.TryRemoveDiamonds(selectedOption.DiamondDelta))
                    {
                        Console.WriteLine("We don't have enough diamonds! Rechoose");
                        ans = Console.ReadLine();
                        while (ans == null)
                        {
                            ans = Console.ReadLine();
                        }
                        if (ans.Equals("m"))
                        {
                            Menu();
                            ans = Console.ReadLine();
                        }
                        selectedOption = currentScene.Choices[int.Parse(ans)];
                    }

                    _diamondsDelta += selectedOption.DiamondDelta;
                    Console.WriteLine($"Алмазов {Program.Player.Diamonds}");
                    _logicDelta     += selectedOption.LogicDelta;
                    _intuitionDelta += selectedOption.IntuitionalDelta;
                    _story.Hero.SetSympathies(selectedOption.RelationshipDelta);
                    foreach (var nextScene in selectedOption.NextScenes)
                    {
                        PlayScene(nextScene);
                    }
                }
                else
                {
                    ITalkingScene currentScene = scene;
                    if ((currentScene.SceneType == SceneType.Logic && _story.Hero.Intuition + _intuitionDelta > _story.Hero.Logic + _logicDelta) ||
                        (currentScene.SceneType == SceneType.Intuitional && _story.Hero.Logic + _logicDelta >= _story.Hero.Intuition + _intuitionDelta))
                    {
                        continue;
                    }
                    PlayScene(scene);
                }
            }
            EndSerie();
        }