Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }