Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.92 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using System.Linq;
  3.  
  4. public class Engine
  5. {
  6.     private bool isRunning;
  7.     private DungeonMaster dungeonMaster;
  8.     private IReader reader;
  9.     private IWriter writer;
  10.  
  11.     public Engine(IReader reader, IWriter writer)
  12.     {
  13.         this.dungeonMaster = new DungeonMaster();
  14.         this.reader = reader;
  15.         this.writer = writer;
  16.     }
  17.  
  18.     public void Run()
  19.     {
  20.         this.isRunning = true;
  21.  
  22.         while (this.isRunning)
  23.         {
  24.             List<string> inputArgs = reader.ReadLine().Split().ToList();
  25.             var command = inputArgs[0];
  26.  
  27.             if (string.IsNullOrEmpty(command))
  28.             {
  29.                 this.isRunning = false;
  30.                 return;
  31.             }
  32.  
  33.             var args = inputArgs.Skip(1).ToArray();
  34.             try
  35.             {
  36.                 switch (command)
  37.                 {
  38.                     case "JoinParty":
  39.                         writer.WriteLine(dungeonMaster.JoinParty(args));
  40.                         break;
  41.                     case "AddItemToPool":
  42.                         writer.WriteLine(dungeonMaster.AddItemToPool(args));
  43.                         break;
  44.                     case "PickUpItem":
  45.                         writer.WriteLine(dungeonMaster.PickUpItem(args));
  46.                         break;
  47.                     case "UseItem":
  48.                         writer.WriteLine(dungeonMaster.UseItem(args));
  49.                         break;
  50.                     case "UseItemOn":
  51.                         writer.WriteLine(dungeonMaster.UseItemOn(args));
  52.                         break;
  53.                     case "GiveCharacterItem":
  54.                         writer.WriteLine(dungeonMaster.GiveCharacterItem(args));
  55.                         break;
  56.                     case "GetStats":
  57.                         writer.WriteLine(dungeonMaster.GetStats());
  58.                         break;
  59.                     case "Attack":
  60.                         writer.WriteLine(dungeonMaster.Attack(args));
  61.                         break;
  62.                     case "Heal":
  63.                         writer.WriteLine(dungeonMaster.Heal(args));
  64.                         break;
  65.                     case "EndTurn":
  66.                         writer.WriteLine(dungeonMaster.EndTurn(args));
  67.                         break;
  68.                 }
  69.             }
  70.             catch (System.ArgumentException e)
  71.             {
  72.                 this.writer.WriteLine("Parameter Error: " + e.Message);
  73.             }
  74.             catch (System.InvalidOperationException e)
  75.             {
  76.                 this.writer.WriteLine("Invalid Operation: " + e.Message);
  77.             }
  78.  
  79.             if (this.dungeonMaster.IsGameOver() || this.isRunning == false)
  80.             {
  81.                 this.writer.WriteLine("Final stats:");
  82.                 this.writer.WriteLine(this.dungeonMaster.GetStats());
  83.                 this.isRunning = false;
  84.             }
  85.         }
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement