示例#1
0
        protected override bool PrivateUpdate(ScenarioFrame frame)
        {
            SimDescription dad = ManagerSim.Find(Sim.Pregnancy.DadDescriptionId);

            if ((GetValue <SameSexSameGenderOption, bool>()) && (dad != null) && (dad.Gender == Sim.Gender))
            {
                IncStat("Same Sex");

                Sim.Pregnancy.mGender = Sim.Gender;
                return(true);
            }

            FirstBornGender firstBorn = GetValue <FirstBornGenderOption, FirstBornGender>();

            if (firstBorn == FirstBornGender.Male)
            {
                IncStat("First Born Male");

                Sim.Pregnancy.mGender = CASAgeGenderFlags.Male;
                return(true);
            }
            else if (firstBorn == FirstBornGender.Female)
            {
                IncStat("First Born Female");

                Sim.Pregnancy.mGender = CASAgeGenderFlags.Female;
                return(true);
            }
            else
            {
                if ((GetValue <OneOfEachGenderOption, bool>()) && (Sim.Genealogy != null))
                {
                    bool male = false, female = false;

                    foreach (SimDescription child in Relationships.GetChildren(Sim))
                    {
                        if (SimTypes.IsDead(child))
                        {
                            continue;
                        }

                        if (child.IsMale)
                        {
                            male = true;
                        }
                        else if (child.IsFemale)
                        {
                            female = true;
                        }
                    }

                    if (male)
                    {
                        if (!female)
                        {
                            Sim.Pregnancy.mGender = CASAgeGenderFlags.Female;
                            return(true);
                        }
                    }
                    else if (female)
                    {
                        Sim.Pregnancy.mGender = CASAgeGenderFlags.Male;
                        return(true);
                    }
                }

                if (firstBorn == FirstBornGender.Balanced)
                {
                    Sim.Pregnancy.mGender = CalculateGenderBalancer(Pregnancies, Sim.IsPet);
                    return(true);
                }
            }

            return(false);
        }
示例#2
0
 protected override FirstBornGender Combine(FirstBornGender original, FirstBornGender add, out bool same)
 {
     same = (original == add);
     return(add);
 }
示例#3
0
 public static CASAgeGenderFlags GetGenderByFirstBorn(StoryProgressionObject manager, FirstBornGender firstBorn, bool isPet)
 {
     if (firstBorn == FirstBornGender.Male)
     {
         return(CASAgeGenderFlags.Male);
     }
     else if (firstBorn == FirstBornGender.Female)
     {
         return(CASAgeGenderFlags.Female);
     }
     else if (firstBorn == FirstBornGender.Balanced)
     {
         return(CalculateGenderBalancer(manager, isPet));
     }
     else if (RandomUtil.CoinFlip())
     {
         return(CASAgeGenderFlags.Male);
     }
     else
     {
         return(CASAgeGenderFlags.Female);
     }
 }