Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using System.Linq;
- public class Engine
- {
- private bool isRunning;
- private DungeonMaster dungeonMaster;
- private IReader reader;
- private IWriter writer;
- public Engine(IReader reader, IWriter writer)
- {
- this.dungeonMaster = new DungeonMaster();
- this.reader = reader;
- this.writer = writer;
- }
- public void Run()
- {
- this.isRunning = true;
- while (this.isRunning)
- {
- List<string> inputArgs = reader.ReadLine().Split().ToList();
- var command = inputArgs[0];
- if (string.IsNullOrEmpty(command))
- {
- this.isRunning = false;
- return;
- }
- var args = inputArgs.Skip(1).ToArray();
- try
- {
- switch (command)
- {
- case "JoinParty":
- writer.WriteLine(dungeonMaster.JoinParty(args));
- break;
- case "AddItemToPool":
- writer.WriteLine(dungeonMaster.AddItemToPool(args));
- break;
- case "PickUpItem":
- writer.WriteLine(dungeonMaster.PickUpItem(args));
- break;
- case "UseItem":
- writer.WriteLine(dungeonMaster.UseItem(args));
- break;
- case "UseItemOn":
- writer.WriteLine(dungeonMaster.UseItemOn(args));
- break;
- case "GiveCharacterItem":
- writer.WriteLine(dungeonMaster.GiveCharacterItem(args));
- break;
- case "GetStats":
- writer.WriteLine(dungeonMaster.GetStats());
- break;
- case "Attack":
- writer.WriteLine(dungeonMaster.Attack(args));
- break;
- case "Heal":
- writer.WriteLine(dungeonMaster.Heal(args));
- break;
- case "EndTurn":
- writer.WriteLine(dungeonMaster.EndTurn(args));
- break;
- }
- }
- catch (System.ArgumentException e)
- {
- this.writer.WriteLine("Parameter Error: " + e.Message);
- }
- catch (System.InvalidOperationException e)
- {
- this.writer.WriteLine("Invalid Operation: " + e.Message);
- }
- if (this.dungeonMaster.IsGameOver() || this.isRunning == false)
- {
- this.writer.WriteLine("Final stats:");
- this.writer.WriteLine(this.dungeonMaster.GetStats());
- this.isRunning = false;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement