public static bool CheckCrewForPart(ProtoCrewMember pcm, string partName) { // lolwut. But just in case. if (pcm == null) { return(false); } bool requireTraining = HighLogic.CurrentGame.Parameters.CustomParams <RP0Settings>().IsTrainingEnabled; if (!requireTraining || EntryCostStorage.GetCost(partName) == 1) { return(true); } partName = TrainingDatabase.SynonymReplace(partName); FlightLog.Entry ent = pcm.careerLog.Last(); if (ent == null) { return(false); } bool lacksMission = true; for (int i = pcm.careerLog.Entries.Count; i-- > 0;) { FlightLog.Entry e = pcm.careerLog.Entries[i]; if (lacksMission) { if (string.IsNullOrEmpty(e.type) || string.IsNullOrEmpty(e.target)) { continue; } if (e.type == "TRAINING_mission" && e.target == partName) { double exp = CrewHandler.Instance.GetExpiration(pcm.name, e); lacksMission = exp == 0d || exp < Planetarium.GetUniversalTime(); } } else { if (string.IsNullOrEmpty(e.type) || string.IsNullOrEmpty(e.target)) { continue; } if (e.type == "TRAINING_proficiency" && e.target == partName) { return(true); } } } return(false); }
public override string GetInfo() { string data = null, apInfo = null; if (part.partInfo is AvailablePart ap) { apInfo = $"Tech Required: {ap.TechRequired}"; if (part.CrewCapacity > 0) { apInfo = $"Training course: {(TrainingDatabase.SynonymReplace(part.name, out string name) ? name : ap.title)}\n{apInfo}"; } } string res = $"Part name: {part.name}\n{apInfo}\n{data}"; return(res); }
public override string GetInfo() { string data = null, apInfo = null; //if (EntryCostDatabaseAccessor.GetHolder(part.name) is RealFuels.PartEntryCostHolder h) // data = $"Total cost: {EntryCostDatabaseAccessor.GetCost(h)}\n{EntryCostDatabaseAccessor.DisplayHolder(h, false)}"; if (part.partInfo is AvailablePart ap) { apInfo = $"Tech Required: {ap.TechRequired}"; if (part.CrewCapacity > 0) { apInfo = $"Training course: {TrainingDatabase.SynonymReplace(part.name)}\n{apInfo}"; } } string res = $"Part name: {part.name}\n{apInfo}\n{data}"; return(res); }
public override string GetInfo() { EntryCostDatabaseAccessor.Init(); EntryCostDatabaseAccessor.GetFields(); string data = null, apInfo = null; string nm = (string)EntryCostDatabaseAccessor.GetPartName.Invoke(null, new object[] { part.name }); if (EntryCostDatabaseAccessor.GetHolder(nm) is RealFuels.PartEntryCostHolder h) { data = $"Total cost: {EntryCostDatabaseAccessor.GetCost(h)}\n{EntryCostDatabaseAccessor.DisplayHolder(h, false)}"; } if (part.partInfo is AvailablePart ap) { apInfo = $"Tech Required: {ap.TechRequired}"; if (part.CrewCapacity > 0) { apInfo = $"Training course: {(TrainingDatabase.SynonymReplace(part.name, out string name) ? name : ap.title)}\n{apInfo}"; } } string res = $"Part name: {part.name}\n{apInfo}\n{data}"; return(res); }