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);
                }
            }
        }
示例#2
0
 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;
 }