Advertisement
shady_obeyd

DraftManager

Mar 14th, 2018
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.73 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.     private List<Harvester> harvesters;
  9.     private List<Provider> providers;
  10.     private double totalOreMined;
  11.     private double totalEnergyStored;
  12.     private string mode;
  13.  
  14.     public DraftManager()
  15.     {
  16.         this.harvesters = new List<Harvester>();
  17.         this.providers = new List<Provider>();
  18.         this.totalOreMined = 0;
  19.         this.totalEnergyStored = 0;
  20.         this.mode = "Full";
  21.     }
  22.  
  23.     public string RegisterHarvester(List<string> arguments)
  24.     {
  25.         string harvesterType = arguments[0];
  26.         string id = arguments[1];
  27.         double oreOutput = double.Parse(arguments[2]);
  28.         double energyRequirement = double.Parse(arguments[3]);
  29.  
  30.         Harvester harvester = null;
  31.  
  32.         string message = string.Empty;
  33.  
  34.         try
  35.         {
  36.             if (harvesterType == "Sonic")
  37.             {
  38.                 int sonicFactor = int.Parse(arguments[4]);
  39.                 harvester = new SonicHarvester(id, oreOutput, energyRequirement, sonicFactor);
  40.             }
  41.             else if (harvesterType == "Hammer")
  42.             {
  43.                 harvester = new HammerHarvester(id, oreOutput, energyRequirement);
  44.             }
  45.             this.harvesters.Add(harvester);
  46.             message = $"Successfully registered {harvesterType} Harvester – {id}";
  47.         }
  48.         catch (ArgumentOutOfRangeException ex)
  49.         {
  50.             message = ex.Message;
  51.         }
  52.         return message;
  53.     }
  54.  
  55.     public string RegisterProvider(List<string> arguments)
  56.     {
  57.         string providerType = arguments[0];
  58.         string id = arguments[1];
  59.         double energyOutput = double.Parse(arguments[2]);
  60.  
  61.         Provider provider = null;
  62.  
  63.         string message = string.Empty;
  64.  
  65.         try
  66.         {
  67.             if (providerType == "Solar")
  68.             {
  69.                 provider = new SolarProvider(id, energyOutput);
  70.             }
  71.             else if (providerType == "Pressure")
  72.             {
  73.                 provider = new PressureProvider(id, energyOutput);
  74.             }
  75.             this.providers.Add(provider);
  76.             message = $"Successfully registered {providerType} Provider – {id}";
  77.         }
  78.         catch (ArgumentOutOfRangeException ex)
  79.         {
  80.             message = ex.Message;
  81.         }
  82.         return message;
  83.     }
  84.  
  85.     public string Day()
  86.     {
  87.         double orePerDayMined = 0;
  88.         double energyPerDayRequired = 0;
  89.         double energyPerDayProvided = providers.Sum(p => p.EnergyOutput);
  90.         this.totalEnergyStored += energyPerDayProvided;
  91.  
  92.         StringBuilder builder = new StringBuilder();
  93.  
  94.         if (this.mode == "Full")
  95.         {
  96.             energyPerDayRequired = harvesters.Sum(h => h.EnergyRequirement);
  97.             orePerDayMined = harvesters.Sum(h => h.OreOutput);
  98.         }
  99.         else if (this.mode == "Half")
  100.         {
  101.             energyPerDayRequired = harvesters.Sum(h => h.EnergyRequirement) * 0.6;
  102.             orePerDayMined = harvesters.Sum(h => h.OreOutput) * 0.5;
  103.         }
  104.         else if (this.mode == "Energy")
  105.         {
  106.             energyPerDayRequired = 0;
  107.             orePerDayMined = 0;
  108.         }
  109.  
  110.         if (totalEnergyStored >= energyPerDayRequired)
  111.         {
  112.             this.totalEnergyStored -= energyPerDayRequired;
  113.             this.totalOreMined += orePerDayMined;
  114.         }
  115.         else
  116.         {
  117.             orePerDayMined = 0;
  118.         }
  119.  
  120.         builder.AppendLine("A day has passed.");
  121.         builder.AppendLine($"Energy Provided: {energyPerDayProvided}");
  122.         builder.AppendLine($"Plumbus Ore Mined: {orePerDayMined}");
  123.  
  124.         return builder.ToString().TrimEnd();
  125.     }
  126.  
  127.     public string Mode(List<string> arguments)
  128.     {
  129.         this.mode = arguments[0];
  130.         return $"Successfully changed working mode to {this.mode} Mode";
  131.     }
  132.  
  133.     public string Check(List<string> arguments)
  134.     {
  135.         string id = arguments[0];
  136.  
  137.         if (this.providers.Any(p => p.Id == id))
  138.         {
  139.             return providers.FirstOrDefault(p => p.Id == id).ToString();
  140.         }
  141.         else if (this.harvesters.Any(h => h.Id == id))
  142.         {
  143.             return harvesters.FirstOrDefault(h => h.Id == id).ToString();
  144.         }
  145.         else
  146.         {
  147.             return $"No element found with id - {id}";
  148.         }
  149.     }
  150.     public string ShutDown()
  151.     {
  152.         StringBuilder builder = new StringBuilder();
  153.  
  154.         builder.AppendLine($"System Shutdown");
  155.         builder.AppendLine($"Total Energy Stored: {this.totalEnergyStored}");
  156.         builder.AppendLine($"Total Mined Plumbus Ore: {this.totalOreMined}");
  157.  
  158.         return builder.ToString().TrimEnd();
  159.     }
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement