Ejemplo n.º 1
0
 /// <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);
 }
Ejemplo n.º 2
0
        /// <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;
        }
Ejemplo n.º 3
0
 public ScientistRepository(ScienceContext context) : base(context)
 {
 }
Ejemplo n.º 4
0
 public SubjectRepository(ScienceContext context) : base(context)
 {
     this.db = context;
 }
Ejemplo n.º 5
0
 public FieldRepository(ScienceContext context) : base(context)
 {
     this.db = context;
 }