Пример #1
0
        public void Execute()
        {
            string input;
            Scene  previousScene;

            Act.Display(ActiveScene);
            do
            {
                previousScene = ActiveScene;
                input         = Act.ReadLine().ToUpper();
                if (input == "QUIT")
                {
                    Quit();
                }
                switch (input)
                {
                case "HELP":
                case "H":
                    Act.WriteTitle("Help Menu");
                    Act.WriteLine(@"Commands:
INVENTORY/I
GO
EXAMINE/E
COLLECT/PICK UP
USE");
                    break;

                case "INVENTORY":
                case "I":
                    Act.Display(PlayerEntity.Inventory);
                    break;

                default:
                    if (!PlayerEntity.Inventory.Work(this, input) && !ActiveScene.Work(this, input))
                    {
                        DisplayError();
                    }
                    if (ActiveScene != previousScene)
                    {
                        Act.Display(ActiveScene);
                        IEpisode.Token token = new IEpisode.Token(this, ActiveScene, toRemoveEpisodes);
                        foreach (IEpisode episode in ActiveScene.Episodes)
                        {
                            episode.Play(token);
                            if (token.IsCanceled)
                            {
                                return;
                            }
                        }
                        foreach (IEpisode episode in toRemoveEpisodes)
                        {
                            ActiveScene.RemoveEpisode(episode);
                        }
                        toRemoveEpisodes.Clear();
                    }
                    break;
                }
            } while (!quit);
        }
Пример #2
0
 public void Play(IEpisode.Token token)
 {
     token.RemoveEpisode(this);
     Act.WriteLine(Description);
 }
 public void Play(IEpisode.Token token)
 {
     Act.WriteLine(@"The screen displays a button labeled ""Begin.""");
     token.ActiveScene.AddWork(new BeginWork());
 }