Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- public class DraftManager
- {
- public DraftManager()
- {
- harvesters = new List<Harvester>();
- providers = new List<Provider>();
- HarvesterEnergyMultiplier = 1;
- HarvesterOreMultiplier = 1;
- CurrentEnergyStored = 0;
- TotalOreStored = 0;
- }
- private List<Harvester> harvesters;
- private List<Provider> providers;
- private double HarvesterEnergyMultiplier;
- private double HarvesterOreMultiplier;
- private double CurrentEnergyStored;
- private double TotalOreStored;
- public void HandleInput(string intro)
- {
- string[] inputTokens = intro.Split(' ');
- string command = inputTokens[0];
- switch (command)
- {
- case "RegisterHarvester":
- List<string> toPassHarvester = inputTokens.Skip(1).ToList();
- Console.WriteLine(this.RegisterHarvester(toPassHarvester));
- break;
- case "RegisterProvider":
- List<string> toPassProvider = inputTokens.Skip(1).ToList();
- Console.WriteLine(this.RegisterProvider(toPassProvider));
- break;
- case "Day":
- Console.WriteLine(this.Day());
- break;
- case "Mode":
- List<string> arguments = new List<string>();
- string mode = inputTokens[1];
- arguments.Add(mode);
- Console.WriteLine(this.Mode(arguments));
- break;
- case "Check":
- string id = inputTokens[1];
- List<string> argumentsCheck = new List<string>();
- argumentsCheck.Add(id);
- Console.WriteLine(this.Check(argumentsCheck));
- break;
- case "Shutdown":
- this.ShutDown();
- break;
- }
- }
- public string RegisterHarvester(List<string> arguments)
- {
- Harvester harvester;
- if (arguments[0] == "RegisterHarvester")
- {
- throw new Exception();
- }
- if (arguments[0] == "Hammer")//Hammer case
- {
- harvester = new HammerHarvester(arguments[1], double.Parse(arguments[2]), double.Parse(arguments[3]));
- }
- else //Sonic case
- {
- harvester = new SonicHarvester(arguments[1], double.Parse(arguments[2]), double.Parse(arguments[3]), int.Parse(arguments[4]));
- }
- this.harvesters.Add(harvester);
- return $"Successfully registered {arguments[0]} Harvester - {arguments[1]}";
- }
- public string RegisterProvider(List<string> arguments)
- {
- Provider provider;
- if (arguments[0]=="Solar")//Solar case
- {
- provider = new SolarProvider(arguments[1], double.Parse(arguments[2]));
- }
- else//Pressure case
- {
- provider = new PressureProvider(arguments[1], double.Parse(arguments[2]));
- }
- this.providers.Add(provider);
- return $"Successfully registered {arguments[0]} Provider - {arguments[1]}";
- }
- public string Day()
- {
- double totalProvidedEnergyToday = providers.Sum(a => a.EnergyOutput);
- this.CurrentEnergyStored = totalProvidedEnergyToday + this.CurrentEnergyStored;
- double totalRequiredEnergy = harvesters.Sum(a => a.EnergyRequirement * this.HarvesterEnergyMultiplier);
- double oreMinedToday = 0;
- if (CurrentEnergyStored >= totalRequiredEnergy)
- {
- CurrentEnergyStored = CurrentEnergyStored - totalRequiredEnergy;
- oreMinedToday = harvesters.Sum(a => a.OreOutput * this.HarvesterOreMultiplier);
- TotalOreStored = oreMinedToday+TotalOreStored;
- }
- return
- $"A day has passed."+Environment.NewLine+
- $"Energy Provided: {totalProvidedEnergyToday}"+ Environment.NewLine+
- $"Plumbus Ore Mined: {oreMinedToday}";
- }
- public string Mode(List<string> arguments)
- {
- switch (arguments[0])
- {
- case "Full":
- this.HarvesterEnergyMultiplier = 1;
- this.HarvesterOreMultiplier = 1;
- break;
- case "Half":
- this.HarvesterEnergyMultiplier = 0.6;
- this.HarvesterOreMultiplier = 0.5;
- break;
- case "Energy":
- this.HarvesterEnergyMultiplier = 0;
- this.HarvesterOreMultiplier = 0;
- break;
- }
- return $"Successfully changed working mode to {arguments[0]} Mode";
- }
- public string Check(List<string> arguments)
- {
- string id = arguments[0];
- Harvester harvesterToFind=harvesters.Find(a=>a.Id==id);
- if (harvesterToFind != null)
- {
- return harvesterToFind.ToString();
- }
- else
- {
- Provider providerToFind = providers.Find(a => a.Id == id);
- if (providerToFind != null)
- {
- return providerToFind.ToString();
- }
- else
- {
- return $"No element found with id - {id}";
- }
- }
- }
- public string ShutDown()
- {
- //TODO: Add some logic here …
- return
- $"System Shutdown" + Environment.NewLine +
- $"Total Energy Stored: {CurrentEnergyStored}" + Environment.NewLine +
- $"Total Mined Plumbus Ore: {TotalOreStored}";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement