Advertisement
Guest User

DraftManager

a guest
Mar 11th, 2018
286
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.53 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.                 break;
  55.         }
  56.  
  57.     }
  58.     public string RegisterHarvester(List<string> arguments)
  59.     {
  60.         Harvester harvester;
  61.         if (arguments[0] == "RegisterHarvester")
  62.         {
  63.             throw new Exception();
  64.         }
  65.         if (arguments[0] == "Hammer")//Hammer case
  66.         {
  67.             harvester = new HammerHarvester(arguments[1], double.Parse(arguments[2]), double.Parse(arguments[3]));
  68.         }
  69.         else //Sonic case
  70.         {
  71.             harvester = new SonicHarvester(arguments[1], double.Parse(arguments[2]), double.Parse(arguments[3]), int.Parse(arguments[4]));
  72.         }
  73.         this.harvesters.Add(harvester);
  74.         return $"Successfully registered {arguments[0]} Harvester - {arguments[1]}";
  75.     }
  76.     public string RegisterProvider(List<string> arguments)
  77.     {
  78.         Provider provider;
  79.         if (arguments[0]=="Solar")//Solar case
  80.         {
  81.             provider = new SolarProvider(arguments[1], double.Parse(arguments[2]));
  82.         }
  83.         else//Pressure case
  84.         {
  85.             provider = new PressureProvider(arguments[1], double.Parse(arguments[2]));
  86.         }
  87.         this.providers.Add(provider);
  88.         return $"Successfully registered {arguments[0]} Provider - {arguments[1]}";
  89.     }
  90.     public string Day()
  91.     {
  92.         double totalProvidedEnergyToday = providers.Sum(a => a.EnergyOutput);
  93.         this.CurrentEnergyStored = totalProvidedEnergyToday + this.CurrentEnergyStored;
  94.         double totalRequiredEnergy = harvesters.Sum(a => a.EnergyRequirement * this.HarvesterEnergyMultiplier);
  95.         double oreMinedToday = 0;
  96.         if (CurrentEnergyStored >= totalRequiredEnergy)
  97.         {
  98.             CurrentEnergyStored = CurrentEnergyStored - totalRequiredEnergy;
  99.             oreMinedToday = harvesters.Sum(a => a.OreOutput * this.HarvesterOreMultiplier);
  100.             TotalOreStored = oreMinedToday+TotalOreStored;
  101.         }
  102.         return
  103.             $"A day has passed."+Environment.NewLine+
  104.             $"Energy Provided: {totalProvidedEnergyToday}"+ Environment.NewLine+
  105.             $"Plumbus Ore Mined: {oreMinedToday}";
  106.     }
  107.     public string Mode(List<string> arguments)
  108.     {
  109.         switch (arguments[0])
  110.         {
  111.             case "Full":
  112.                 this.HarvesterEnergyMultiplier = 1;
  113.                 this.HarvesterOreMultiplier = 1;
  114.                 break;
  115.             case "Half":
  116.                 this.HarvesterEnergyMultiplier = 0.6;
  117.                 this.HarvesterOreMultiplier = 0.5;
  118.                 break;
  119.             case "Energy":
  120.                 this.HarvesterEnergyMultiplier = 0;
  121.                 this.HarvesterOreMultiplier = 0;
  122.                 break;
  123.         }
  124.         return $"Successfully changed working mode to {arguments[0]} Mode";
  125.  
  126.     }
  127.     public string Check(List<string> arguments)
  128.     {
  129.         string id = arguments[0];
  130.         Harvester harvesterToFind=harvesters.Find(a=>a.Id==id);
  131.         if (harvesterToFind != null)
  132.         {
  133.             return harvesterToFind.ToString();
  134.         }
  135.         else
  136.         {
  137.             Provider providerToFind = providers.Find(a => a.Id == id);
  138.             if (providerToFind != null)
  139.             {
  140.                 return providerToFind.ToString();
  141.             }
  142.             else
  143.             {
  144.                 return $"No element found with id - {id}";
  145.             }
  146.         }
  147.     }
  148.     public string ShutDown()
  149.     {
  150.         //TODO: Add some logic here …
  151.         return
  152.             $"System Shutdown" + Environment.NewLine +
  153.             $"Total Energy Stored: {CurrentEnergyStored}" + Environment.NewLine +
  154.             $"Total Mined Plumbus Ore: {TotalOreStored}";
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement