/// <summary> /// Creates a new instance of the Experiment class. /// </summary> /// <param name="experiment">The ScienceExperiment to be used.</param> /// <param name="situation">The Situation this experiment is valid in.</param> /// <param name="onboardScience">A collection of all onboard ScienceData.</param> public ScienceInstance(ScienceExperiment experiment, Situation situation, ScienceContext Sci) { _experiment = experiment; _situation = situation; ScienceSubject = null; Update(Sci); }
/// <summary> /// Updates the IsUnlocked, CompletedScience, TotalScience, OnboardScience, and IsComplete fields. /// </summary> /// <param name="onboardScience">The total onboard ScienceData.</param> public void Update(ScienceContext Sci) { ScienceSubject tmp; if (Sci.ScienceSubjects.TryGetValue(Id, out tmp)) { ScienceSubject = tmp; } else { ScienceSubject = new ScienceSubject(ScienceExperiment, Situation.ExperimentSituation, Situation.Body.CelestialBody, Situation.SubBiome ?? Situation.Biome ?? string.Empty); Sci.ScienceSubjects.Add(Id, ScienceSubject); } IsUnlocked = Sci.UnlockedInstruments.IsUnlocked(ScienceExperiment.id) && (Situation.Body.Reached != null); CompletedScience = ScienceSubject.science * HighLogic.CurrentGame.Parameters.Career.ScienceGainMultiplier; TotalScience = ScienceSubject.scienceCap * HighLogic.CurrentGame.Parameters.Career.ScienceGainMultiplier; IsComplete = CompletedScience > TotalScience || TotalScience - CompletedScience < 0.1; var multiplier = ScienceExperiment.baseValue / ScienceExperiment.scienceCap; OnboardScience = 0; if (Sci.OnboardScienceList.ContainsKey(ScienceSubject.id)) { var data = Sci.OnboardScienceList[ScienceSubject.id]; // var _logger = new Logger( "Experiment" ); // _logger.Trace( ScienceSubject.id + " found " + data.Count( ) + " items" ); for (int x = 0; x < data.Count; x++) { var next = (TotalScience - (CompletedScience + OnboardScience)) * multiplier; OnboardScience += next; } } var AllCollectedScience = CompletedScience + OnboardScience; IsCollected = AllCollectedScience > TotalScience || TotalScience - AllCollectedScience < 0.1; }
public ScientistRepository(ScienceContext context) : base(context) { }
public SubjectRepository(ScienceContext context) : base(context) { this.db = context; }
public FieldRepository(ScienceContext context) : base(context) { this.db = context; }