Пример #1
0
        public static double Shielding(ConnectedLivingSpace.ICLSSpace space)
        {
            double amount   = 0.0;
            double capacity = 0.0;

            foreach (var part in space.Parts)
            {
                amount   += Lib.GetResourceAmount(part.Part, "Shielding");
                capacity += Lib.GetResourceCapacity(part.Part, "Shielding");
            }
            return(Shielding(amount, capacity));
        }
Пример #2
0
 public static double Entertainment(ConnectedLivingSpace.ICLSSpace space)
 {
   double entertainment = 1.0;
   foreach(var part in space.Parts)
   {
     foreach(Entertainment m in part.Part.FindModulesImplementing<Entertainment>())
     {
       entertainment *= m.rate;
     }
     foreach(GravityRing m in part.Part.FindModulesImplementing<GravityRing>())
     {
       entertainment *= m.rate;
     }
   }
   return entertainment;
 }
Пример #3
0
 public static double Entertainment(Vessel v, ConnectedLivingSpace.ICLSSpace space)
 {
   // calculate entertainment for the internal space
   // note: vessel-wide entertainment parts are considered
   double entertainment = 1.0;
   foreach(Entertainment m in v.FindPartModulesImplementing<Entertainment>())
   {
     if (m.vessel_wide || space.Parts.Find(k => k.Part.flightID == m.part.flightID) != null)
     {
       entertainment *= m.rate;
     }
   }
   foreach(var part in space.Parts)
   {
     foreach(GravityRing m in part.Part.FindModulesImplementing<GravityRing>())
     {
       entertainment *= m.rate;
     }
   }
   return Math.Min(entertainment, MaxEntertainmnent);
 }
Пример #4
0
 // return living space inside a connected space
 public static double LivingSpace(ConnectedLivingSpace.ICLSSpace space)
 {
   return LivingSpace((uint)space.Crew.Count, (uint)space.MaxCrew);
 }