public bool TryParseTieredResourceName(string tieredResourceName, out TieredResource resource, out TechTier tier) { int dashIndex = tieredResourceName.IndexOf('-'); if (dashIndex < 0) { resource = AllTieredResources.FirstOrDefault(tr => tr.BaseName == tieredResourceName); tier = TechTier.Tier4; return(resource != null); } else { try { // Oh, but we do pine ever so much for .Net 4.6... tier = (TechTier)Enum.Parse(typeof(TechTier), tieredResourceName.Substring(dashIndex + 1)); var tier4Name = tieredResourceName.Substring(0, dashIndex); resource = GetTieredResourceByName(tier4Name); return(resource != null); } catch (Exception) { resource = null; tier = TechTier.Tier0; return(false); } } }
public StubProducer(TieredResource output, TieredResource input, double productionRate, TechTier tier) { this.Output = output; this.Input = input; this.ProductionRate = productionRate; this.Tier = tier; this.Body = (output.ProductionRestriction == ProductionRestriction.Space) ? null : "munmuss"; }
public TechTier GetMaxUnlockedTier(TieredResource forResource, string atBody) { if (atBody == null) { return(AgroponicsMaxTier); } else { return(maxTiers.TryGetValue($"{atBody}-{forResource.ResearchCategory.DisplayName}", out TechTier tier) ? tier : TechTier.Tier0); } }
static StubColonizationResearchScenario() { Stuff = new TieredResource("Stuff", null, productionResearchCategory, false, false, true, null, TechTier.Tier0); Fertilizer = new TieredResource("Fertilizer", "Kerbal-Days", productionResearchCategory, true, false, false, null, TechTier.Tier0); HydroponicSnacks = new TieredResource("HydroponicSnacks", "kerbal-days", hydroponicResearchCategory, false, false, false, Fertilizer, TechTier.Tier0, .2, .4, .55, .7, .95); Snacks = new TieredResource("Snacks", "kerbal-days", farmingResearchCategory, true, false, false, Fertilizer, TechTier.Tier0, .6, .85, .95, .98, 1.0); CrushIns = new TieredResource("CrushIns", null, productionResearchCategory, false, false, true, null, TechTier.Tier0); Scanning = new TieredResource("ScanningData", "Kerbal-Days", scanningResearchCategory, false, false, true, null, TechTier.Tier0); Shinies = new TieredResource("Shinies", "Bling-per-day", shiniesResearchCategory, true, false, false, null, TechTier.Tier0); LocalParts = new TieredResource("LocalParts", "Parts", rocketPartsResearchCategory, false, false, false, Stuff, TechTier.Tier0); AllTieredResources = new TieredResource[] { HydroponicSnacks, Snacks, Fertilizer, Shinies, Stuff, Scanning }; }
public bool ContributeResearch(TieredResource source, string atBody, double timespentInKerbalSeconds) { if (source.ResearchCategory == hydroponicResearchCategory) { this.AgroponicResearchProgress += timespentInKerbalSeconds; if (this.AgroponicResearchProgress > KerbalTime.KerbalYearsToSeconds(source.ResearchCategory.KerbalYearsToNextTier(this.AgroponicsMaxTier))) { this.AgroponicResearchProgress = 0; ++this.AgroponicsMaxTier; return(true); } } else if (source.ResearchCategory == farmingResearchCategory) { this.AgricultureResearchProgress += timespentInKerbalSeconds; } else if (source.ResearchCategory == productionResearchCategory) { this.ProductionResearchProgress += timespentInKerbalSeconds; } return(false); }
public StorageProducer(TieredResource resource, TechTier tier, double amount) { this.Output = resource; this.Tier = tier; this.Amount = amount; }