Advertisement
dobroslav-atanasov

Untitled

Mar 11th, 2018
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.85 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. public class DraftManager
  7. {
  8.     public DraftManager()
  9.     {
  10.         harvesters = new List<Harvester>();
  11.         providers = new List<Provider>();
  12.         HarvesterEnergyMultiplier = 1;
  13.         HarvesterOreMultiplier = 1;
  14.         CurrentEnergyStored = 0;
  15.         TotalOreStored = 0;
  16.     }
  17.     private List<Harvester> harvesters;
  18.     private List<Provider> providers;
  19.     private double HarvesterEnergyMultiplier;
  20.     private double HarvesterOreMultiplier;
  21.     private double CurrentEnergyStored;
  22.     private double TotalOreStored;
  23.     public void HandleInput(string intro)
  24.     {
  25.         string[] inputTokens = intro.Split(' ');
  26.         string command = inputTokens[0];
  27.         switch (command)
  28.         {
  29.             case "RegisterHarvester":
  30.                 List<string> toPassHarvester = inputTokens.Skip(1).ToList();
  31.                 Console.WriteLine(this.RegisterHarvester(toPassHarvester));
  32.                 break;
  33.             case "RegisterProvider":
  34.                 List<string> toPassProvider = inputTokens.Skip(1).ToList();
  35.                 Console.WriteLine(this.RegisterProvider(toPassProvider));
  36.                 break;
  37.             case "Day":
  38.                 Console.WriteLine(this.Day());
  39.                 break;
  40.             case "Mode":
  41.                 List<string> arguments = new List<string>();
  42.                 string mode = inputTokens[1];
  43.                 arguments.Add(mode);
  44.                 Console.WriteLine(this.Mode(arguments));
  45.                 break;
  46.             case "Check":
  47.                 string id = inputTokens[1];
  48.                 List<string> argumentsCheck = new List<string>();
  49.                 argumentsCheck.Add(id);
  50.                 Console.WriteLine(this.Check(argumentsCheck));
  51.                 break;
  52.             case "Shutdown":
  53.                 this.ShutDown();
  54.                 return;
  55.         }
  56.  
  57.     }
  58.     public string RegisterHarvester(List<string> arguments)
  59.     {
  60.         try
  61.         {
  62.             Harvester harvester;
  63.             if (arguments[0] == "RegisterHarvester")
  64.             {
  65.                 throw new Exception();
  66.             }
  67.             if (arguments[0] == "Hammer")//Hammer case
  68.             {
  69.                 harvester = new HammerHarvester(arguments[1], double.Parse(arguments[2]), double.Parse(arguments[3]));
  70.             }
  71.             else //Sonic case
  72.             {
  73.                 harvester = new SonicHarvester(arguments[1], double.Parse(arguments[2]), double.Parse(arguments[3]), int.Parse(arguments[4]));
  74.             }
  75.             this.harvesters.Add(harvester);
  76.             return $"Successfully registered {arguments[0]} Harvester - {arguments[1]}";
  77.         }
  78.         catch (ArgumentException ae)
  79.         {
  80.             return ae.Message;
  81.         }
  82.  
  83.     }
  84.     public string RegisterProvider(List<string> arguments)
  85.     {
  86.         Provider provider;
  87.         try
  88.         {
  89.             if (arguments[0] == "Solar")//Solar case
  90.             {
  91.                 provider = new SolarProvider(arguments[1], double.Parse(arguments[2]));
  92.             }
  93.             else//Pressure case
  94.             {
  95.                 provider = new PressureProvider(arguments[1], double.Parse(arguments[2]));
  96.             }
  97.             this.providers.Add(provider);
  98.             return $"Successfully registered {arguments[0]} Provider - {arguments[1]}";
  99.         }
  100.         catch (ArgumentException ae)
  101.         {
  102.             return ae.Message;
  103.         }
  104.  
  105.     }
  106.     public string Day()
  107.     {
  108.         double totalProvidedEnergyToday = providers.Sum(a => a.EnergyOutput);
  109.         this.CurrentEnergyStored = totalProvidedEnergyToday + this.CurrentEnergyStored;
  110.         double totalRequiredEnergy = harvesters.Sum(a => a.EnergyRequirement * this.HarvesterEnergyMultiplier);
  111.         double oreMinedToday = 0;
  112.         if (CurrentEnergyStored >= totalRequiredEnergy)
  113.         {
  114.             CurrentEnergyStored = CurrentEnergyStored - totalRequiredEnergy;
  115.             oreMinedToday = harvesters.Sum(a => a.OreOutput * this.HarvesterOreMultiplier);
  116.             TotalOreStored = oreMinedToday + TotalOreStored;
  117.         }
  118.         return
  119.             $"A day has passed." + Environment.NewLine +
  120.             $"Energy Provided: {totalProvidedEnergyToday}" + Environment.NewLine +
  121.             $"Plumbus Ore Mined: {oreMinedToday}";
  122.     }
  123.     public string Mode(List<string> arguments)
  124.     {
  125.         switch (arguments[0])
  126.         {
  127.             case "Full":
  128.                 this.HarvesterEnergyMultiplier = 1;
  129.                 this.HarvesterOreMultiplier = 1;
  130.                 break;
  131.             case "Half":
  132.                 this.HarvesterEnergyMultiplier = 0.6;
  133.                 this.HarvesterOreMultiplier = 0.5;
  134.                 break;
  135.             case "Energy":
  136.                 this.HarvesterEnergyMultiplier = 0;
  137.                 this.HarvesterOreMultiplier = 0;
  138.                 break;
  139.         }
  140.         return $"Successfully changed working mode to {arguments[0]} Mode";
  141.  
  142.     }
  143.     public string Check(List<string> arguments)
  144.     {
  145.         string id = arguments[0];
  146.         Harvester harvesterToFind = harvesters.Find(a => a.Id == id);
  147.         if (harvesterToFind != null)
  148.         {
  149.             return harvesterToFind.ToString();
  150.         }
  151.         else
  152.         {
  153.             Provider providerToFind = providers.Find(a => a.Id == id);
  154.             if (providerToFind != null)
  155.             {
  156.                 return providerToFind.ToString();
  157.             }
  158.             else
  159.             {
  160.                 return $"No element found with id - {id}";
  161.             }
  162.         }
  163.     }
  164.     public string ShutDown()
  165.     {
  166.         return
  167.             $"System Shutdown" + Environment.NewLine +
  168.             $"Total Energy Stored: {CurrentEnergyStored}" + Environment.NewLine +
  169.             $"Total Mined Plumbus Ore: {TotalOreStored}";
  170.     }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement