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)); }
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; }
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); }
// return living space inside a connected space public static double LivingSpace(ConnectedLivingSpace.ICLSSpace space) { return LivingSpace((uint)space.Crew.Count, (uint)space.MaxCrew); }