Example #1
0
        public void Initialize(ProtoCrewMember.Gender?gender = null, string name = null)
        {
            if (name != null)
            {
                this.name = name;
                _pcm      = pcm;
            }

            if (gender != null)
            {
                this.gender = gender.Value;
            }
            else
            {
                this.gender = RandomGender();
            }

            if (_pcm != null)
            {
                SetCrew(_pcm);
            }
            else
            {
                this.name       = name ?? KerbalName(this.gender);
                experienceTrait = RandomExperienceTrait();
                kerbalType      = ProtoCrewMember.KerbalType.Crew;
            }
        }
 public SpawnPassengers(List<string> passengerNames, int minPassengers, ProtoCrewMember.Gender? gender, ProtoCrewMember.KerbalType kerbalType, string experienceTrait)
 {
     this.passengerNames = passengerNames;
     this.count = passengerNames.Count != 0 ? passengerNames.Count : minPassengers;
     this.gender = gender;
     this.kerbalType = kerbalType;
     this.experienceTrait = experienceTrait;
 }
        public override bool Load(ConfigNode configNode)
        {
            // Load base class
            bool valid = base.Load(configNode);

            valid &= ConfigNodeUtil.ParseValue<int>(configNode, "count", x => count = x, this, 1, x => Validation.GE(x, 1));
            valid &= ConfigNodeUtil.ParseValue<List<string>>(configNode, "passengerName", x => passengerName = x, this, new List<string>());
            valid &= ConfigNodeUtil.ParseValue<ProtoCrewMember.Gender?>(configNode, "gender", x => gender = x, this, (ProtoCrewMember.Gender?)null);
            valid &= ConfigNodeUtil.ParseValue<ProtoCrewMember.KerbalType>(configNode, "kerbalType", x => kerbalType = x, this, ProtoCrewMember.KerbalType.Tourist);
            valid &= ConfigNodeUtil.ParseValue<string>(configNode, "experienceTrait", x => experienceTrait = x, this, "");

            return valid;
        }
 private static ProtoCrewMember SpawnKerbal(ProtoCrewMember.Gender?chosenGender)
 {
     for (int attempt = 0; attempt < 100; attempt++)
     {
         var kerb = HighLogic.CurrentGame.CrewRoster.GetNewKerbal(ProtoCrewMember.KerbalType.Crew);
         if ((!chosenGender.HasValue) || (chosenGender.Value == kerb.gender))
         {
             return(kerb);
         }
         HighLogic.CurrentGame.CrewRoster.Remove(kerb);
     }
     Debug.LogError("Failed spawning a kerbal with the wanted gender");
     return(HighLogic.CurrentGame.CrewRoster.GetNewKerbal(ProtoCrewMember.KerbalType.Crew));
 }
 protected override void OnLoadFromConfig(ConfigNode node)
 {
     level  = ConfigNodeUtil.ParseValue <int>(node, "level", 0);
     gender = ConfigNodeUtil.ParseValue <ProtoCrewMember.Gender?>(node, "gender", null);
     trait  = ConfigNodeUtil.ParseValue <string>(node, "trait", (string)null);
 }
 public CrewData(CrewData cd)
 {
     name        = cd.name;
     gender      = cd.gender;
     addToRoster = cd.addToRoster;
 }
 public KerbalData(KerbalData k)
 {
     name = k.name;
     crewMember = k.crewMember;
     body = k.body;
     orbit = k.orbit;
     latitude = k.latitude;
     longitude = k.longitude;
     altitude = k.altitude;
     landed = k.landed;
     owned = k.owned;
     addToRoster = k.addToRoster;
     gender = k.gender;
     kerbalType = k.kerbalType;
     pqsCity = k.pqsCity;
     pqsOffset = k.pqsOffset;
     heading = k.heading;
 }
        private void kHire()
        {
            if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
            {
                double myFunds = Funding.Instance.Funds;
                Funding.Instance.AddFunds(-costMath(), TransactionReasons.CrewRecruited);
                Debug.Log("KSI :: Total Funds removed " + costMath());
            }

            for (int i = 0; i < KBulki; i++)
            {
                ProtoCrewMember.Gender?chosenGender = null;
                var selectedGender = KGendArray[KGender].text;
                if (selectedGender.Equals("Male"))
                {
                    chosenGender = ProtoCrewMember.Gender.Male;
                }
                else if (selectedGender.Equals("Female"))
                {
                    chosenGender = ProtoCrewMember.Gender.Female;
                }
                ProtoCrewMember newKerb = SpawnKerbal(chosenGender);

                string career = _recruitableKolonists[KCareer];
                // Sets the kerbal's career based on the KCareer switch.
                KerbalRoster.SetExperienceTrait(newKerb, career);

                // Debug.Log("KSI :: KIA MIA Stat is: " + KDead);
                // Debug.Log("KSI :: " + newKerb.experienceTrait.TypeName + " " + newKerb.name + " has been created in: " + loopcount.ToString() + " loops.");
                newKerb.rosterStatus = ProtoCrewMember.RosterStatus.Available;
                newKerb.experience   = 0;


                if (KolonyACOptions.CustomKerbonautsEnabled)
                {
                    newKerb.experienceLevel = 0;
                    newKerb.courage         = KCourage / 100;
                    newKerb.stupidity       = KStupidity / 100;
                    if (KFearless)
                    {
                        newKerb.isBadass = true;
                    }
                }

                // Debug.Log("PSH :: Status set to Available, courage and stupidity set, fearless trait set.");
                if (KLevel > 0)
                {
                    var logName       = RecruitLevel + KLevel;
                    var homeworldName = FlightGlobals.Bodies.Where(cb => cb.isHomeWorld).FirstOrDefault().name;
                    newKerb.flightLog.AddEntry(logName, homeworldName);
                    newKerb.ArchiveFlightLog();
                    newKerb.experience      = GetExperienceNeededFor(KLevel);
                    newKerb.experienceLevel = KLevel;
                }
                if (ACLevel == 5 || kerExp == false)
                {
                    newKerb.experience      = 9999;
                    newKerb.experienceLevel = 5;
                    Debug.Log("KSI :: Level set to 5 - Non-Career Mode default.");
                }
            }

            // Refreshes the AC so that new kerbal shows on the available roster.
            Debug.Log("PSH :: Hiring Function Completed.");
            GameEvents.onGUIAstronautComplexDespawn.Fire();
            GameEvents.onGUIAstronautComplexSpawn.Fire();
        }
 public CrewData(CrewData cd)
 {
     name = cd.name;
     gender = cd.gender;
     addToRoster = cd.addToRoster;
 }
 protected override void OnLoadFromConfig(ConfigNode node)
 {
     level = ConfigNodeUtil.ParseValue<int>(node, "level", 0);
     gender = ConfigNodeUtil.ParseValue<ProtoCrewMember.Gender?>(node, "gender", null);
     trait = ConfigNodeUtil.ParseValue<string>(node, "trait", (string)null);
 }
        protected override void OnLoad(ConfigNode node)
        {
            base.OnLoad(node);
            count = Convert.ToInt32(node.GetValue("count"));
            passengerNames = ConfigNodeUtil.ParseValue<List<string>>(node, "potentialPassenger", new List<string>());
            gender = ConfigNodeUtil.ParseValue<ProtoCrewMember.Gender?>(node, "gender", (ProtoCrewMember.Gender?)null);
            kerbalType = ConfigNodeUtil.ParseValue<ProtoCrewMember.KerbalType>(node, "kerbalType", ProtoCrewMember.KerbalType.Tourist);
            experienceTrait = ConfigNodeUtil.ParseValue<string>(node, "experienceTrait", "");

            foreach (ConfigNode child in node.GetNodes("PASSENGER_DATA"))
            {
                ProtoCrewMember crew = ConfigNodeUtil.ParseValue<ProtoCrewMember>(child, "passenger");
                bool loaded = ConfigNodeUtil.ParseValue<bool>(child, "loaded");

                if (crew != null)
                {
                    passengers[crew] = loaded;

                    if (!string.IsNullOrEmpty(experienceTrait))
                    {
                        KerbalRoster.SetExperienceTrait(crew, experienceTrait);
                    }
                }
            }
        }