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); }
public virtual void Execute(IWork.Token token) { if (token.GameManager.PlayerEntity.Inventory.ContainsItem(Item)) { Act.WriteLine($"{Item.Name} is already in your inventory."); return; } token.GameManager.ActiveScene.RemoveItem(Item); token.GameManager.PlayerEntity.Inventory.AddItem(Item); Act.WriteLine($"Added {Item.Name.ToLower()} to inventory."); token.GameManager.PlayerEntity.Inventory.GenerateDisplay(); }
private void DisplayError() { Act.WriteLine(ErrorMessage); }