示例#1
0
    public static int ChildAge(RootPerson parent1, Person parent2, int remainingChildren)
    {
        if (remainingTwins > 0)
        {
            remainingTwins--;
            return(prevAge);
        }
        else
        {
            Person baseParent = GenerationHelpers.GetBaseParent(parent1, parent2);

            int maxAge = Mathf.Min(22, baseParent.age - 18, prevAge - 1);
            int minAge = Mathf.Max(0, remainingChildren);

            int age = Random.Range(minAge, maxAge + 1);

            if (remainingChildren > 0)
            {
                float det = Random.Range(0.0f, 1.0f);

                if (det <= 0.05f || baseParent.age == 18)
                {
                    remainingTwins = 1;
                }
                else if (det <= 0.06f)
                {
                    remainingTwins = 2;
                }
            }

            prevAge = age;
            return(age);
        }
    }
示例#2
0
    public static EyeColor ChildEyeColor(RootPerson root)
    {
        float det = Random.Range(0.0f, 1.0f);

        if (det <= 0.5f)
        {
            return(root.eyeColor);
        }
        else
        {
            det = Random.Range(0.0f, 1.0f);

            switch (root.eyeColor)
            {
            case EyeColor.brown:
                if (det <= 2.0f / 3.0f)
                {
                    return(EyeColor.brown);
                }
                else if (det <= 5.0f / 6.0f)
                {
                    return(EyeColor.blue);
                }
                else
                {
                    return(EyeColor.green);
                }

            case EyeColor.blue:
                if (det <= 1.0f / 6.0f)
                {
                    return(EyeColor.brown);
                }
                else if (det <= 5.0f / 6.0f)
                {
                    return(EyeColor.blue);
                }
                else
                {
                    return(EyeColor.green);
                }

            case EyeColor.green:
                if (det <= 1.0f / 6.0f)
                {
                    return(EyeColor.brown);
                }
                else if (det <= 1.0f / 3.0f)
                {
                    return(EyeColor.blue);
                }
                else
                {
                    return(EyeColor.green);
                }
            }

            return(EyeColor.brown);
        }
    }
示例#3
0
    public static int ChildAge(RootPerson root, int remainingChildren)
    {
        if (remainingTwins > 0)
        {
            remainingTwins--;
            return(prevAge);
        }
        else
        {
            int maxAge = Mathf.Min(22, root.age - 18, prevAge - 1);
            int minAge = Mathf.Max(0, remainingChildren);

            int age = Random.Range(minAge, maxAge + 1);

            if (remainingChildren > 0)
            {
                float det = Random.Range(0.0f, 1.0f);

                if (det <= 0.05f || root.age == 18)
                {
                    remainingTwins = 1;
                }
                else if (det <= 0.06f)
                {
                    remainingTwins = 2;
                }
            }

            prevAge = age;
            return(age);
        }
    }
示例#4
0
        public List <Person> FindPeople([FromBody] Person person)
        {
            RootPerson    personList = dl.GetDummyPersonData();
            List <Person> peoplelist = personList.persons.Where(r => (r.FirstName == person.FirstName) || (r.LastName == person.LastName)).ToList();

            return(peoplelist);
        }
示例#5
0
    private void GenPartner(RootPerson root)
    {
        gender   = Generators.PartnerGender(root);
        ageGroup = Generators.PartnerAgeGroup(root);
        age      = Generators.Age(ageGroup);

        skinColor = Generators.PartnerSkinColor(root);
        hairColor = Generators.RootHairColor(skinColor);
        eyeColor  = Generators.RootEyeColor(skinColor);
    }
示例#6
0
 public Person(PersonType type, RootPerson parent1, Person parent2, int remainingChildren)
 {
     if (type == PersonType.child)
     {
         personType = type;
         GenChild(parent1, parent2, remainingChildren);
     }
     else
     {
         Debug.LogError("Used child constructor for non-child");
     }
 }
示例#7
0
    public static SkinColor PartnerSkinColor(RootPerson root)
    {
        float det = Random.Range(0.0f, 1.0f);

        if (det <= 0.5f)
        {
            return(root.skinColor);
        }
        else
        {
            return(RootSkinColor());
        }
    }
示例#8
0
    public static Gender ChildGender(RootPerson parent1, Person parent2)
    {
        if (GenerationHelpers.GenderTypeMatch(parent1, parent2))
        {
            return(ChildGender(parent1));
        }
        else
        {
            float det = Random.Range(0.0f, 1.0f);

            if (GenerationHelpers.IsNB(parent1) || GenerationHelpers.IsNB(parent2))
            {
                if (det <= 0.35f)
                {
                    return(Gender.cisMale);
                }
                else if (det <= 0.7f)
                {
                    return(Gender.cisFemale);
                }
                else if (det <= 0.85f)
                {
                    return(Gender.dmabNonBinary);
                }
                else
                {
                    return(Gender.dfabNonBinary);
                }
            }
            else
            {
                if (det <= 0.45f)
                {
                    return(Gender.cisMale);
                }
                else if (det <= 0.9f)
                {
                    return(Gender.cisFemale);
                }
                else if (det <= 0.95f)
                {
                    return(Gender.dmabNonBinary);
                }
                else
                {
                    return(Gender.dfabNonBinary);
                }
            }
        }
    }
示例#9
0
    private void GenChild(RootPerson parent1, Person parent2, int remainingChildren)
    {
        gender = Generators.ChildGender(parent1, parent2);
        age    = Generators.ChildAge(parent1, parent2, remainingChildren);

        float det = Random.Range(0.0f, 1.0f);

        if (GenerationHelpers.SABMatch(parent1, parent2) || det <= 0.1f)
        {
            skinColor = Generators.RootSkinColor();
            hairColor = Generators.RootHairColor(skinColor);
            eyeColor  = Generators.RootEyeColor(skinColor);
        }
        else
        {
        }
    }
示例#10
0
    private void GenChild(RootPerson root, int remainingChildren)
    {
        gender = Generators.ChildGender(root);
        age    = Generators.ChildAge(root, remainingChildren);

        float det = Random.Range(0.0f, 1.0f);

        if (det <= 2.0f / 3.0f)
        {
            skinColor = Generators.ChildSkinColor(root);
            hairColor = Generators.ChildHairColor(root);
            eyeColor  = Generators.ChildEyeColor(root);
        }
        else
        {
            skinColor = Generators.RootSkinColor();
            hairColor = Generators.RootHairColor(skinColor);
            eyeColor  = Generators.RootEyeColor(skinColor);
        }
    }
示例#11
0
    public Person(PersonType type, RootPerson root)
    {
        personType = type;

        switch (type)
        {
        case PersonType.partner:
            GenPartner(root);
            break;

        case PersonType.roommate:
            GenRoommate(root);
            break;

        case PersonType.child:
            Debug.LogError("Used non-child constructor to initialize child");
            break;

        default:
            Debug.LogError("Invalid person type");
            break;
        }
    }
示例#12
0
    public Household()
    {
        root         = new RootPerson();
        otherMembers = new List <Person>();

        if (root.relationship != Relationship.single)
        {
            otherMembers.Add(new Person(PersonType.partner, root));
        }

        int numChildren = NumChildren();

        for (int i = 0; i < numChildren; i++)
        {
            if (root.relationship == Relationship.single)
            {
                otherMembers.Add(new Person(PersonType.child, root, numChildren - i - 1));
            }
            else
            {
                otherMembers.Add(new Person(PersonType.child, root, otherMembers[0], numChildren - i - 1));
            }
        }
    }
示例#13
0
    public static Gender ChildGender(RootPerson root)
    {
        float det = Random.Range(0.0f, 1.0f);

        switch (root.gender)
        {
        case Gender.cisMale:
        case Gender.cisFemale:
            if (det <= 0.49f)
            {
                return(Gender.cisMale);
            }
            else if (det <= 0.98f)
            {
                return(Gender.cisFemale);
            }
            else if (det <= 0.99f)
            {
                return(Gender.dmabNonBinary);
            }
            else
            {
                return(Gender.dfabNonBinary);
            }

        case Gender.transMale:
        case Gender.transFemale:
            if (det <= 0.4f)
            {
                return(Gender.cisMale);
            }
            else if (det <= 0.8f)
            {
                return(Gender.cisFemale);
            }
            else if (det <= 0.9f)
            {
                return(Gender.dmabNonBinary);
            }
            else
            {
                return(Gender.dfabNonBinary);
            }

        case Gender.dmabNonBinary:
        case Gender.dfabNonBinary:
            if (det <= 0.25f)
            {
                return(Gender.cisMale);
            }
            else if (det <= 0.5f)
            {
                return(Gender.cisFemale);
            }
            else if (det <= 0.75f)
            {
                return(Gender.dmabNonBinary);
            }
            else
            {
                return(Gender.dfabNonBinary);
            }
        }

        return(Gender.cisMale);
    }
示例#14
0
    public static HairColor ChildHairColor(RootPerson root)
    {
        float det = Random.Range(0.0f, 1.0f);

        if (det <= 0.5f)
        {
            return(root.hairColor);
        }
        else
        {
            det = Random.Range(0.0f, 1.0f);

            switch (root.hairColor)
            {
            case HairColor.black:
                if (det <= 0.5f)
                {
                    return(HairColor.black);
                }
                else if (det <= 0.875f)
                {
                    return(HairColor.brown);
                }
                else if (det <= 0.9375f)
                {
                    return(HairColor.blonde);
                }
                else
                {
                    return(HairColor.red);
                }

            case HairColor.brown:
                if (det <= 0.125f)
                {
                    return(HairColor.black);
                }
                else if (det <= 0.75f)
                {
                    return(HairColor.brown);
                }
                else if (det <= 0.875f)
                {
                    return(HairColor.blonde);
                }
                else
                {
                    return(HairColor.red);
                }

            case HairColor.blonde:
                if (det <= 0.0625f)
                {
                    return(HairColor.black);
                }
                else if (det <= 0.3125f)
                {
                    return(HairColor.brown);
                }
                else if (det <= 0.875f)
                {
                    return(HairColor.blonde);
                }
                else
                {
                    return(HairColor.red);
                }

            case HairColor.red:
                if (det <= 0.0625f)
                {
                    return(HairColor.black);
                }
                else if (det <= 0.3125f)
                {
                    return(HairColor.brown);
                }
                else if (det <= 0.4375f)
                {
                    return(HairColor.blonde);
                }
                else
                {
                    return(HairColor.red);
                }
            }

            return(HairColor.black);
        }
    }
示例#15
0
    public static SkinColor ChildSkinColor(RootPerson root)
    {
        float det = Random.Range(0.0f, 1.0f);

        if (det <= 0.5f)
        {
            return(root.skinColor);
        }
        else
        {
            det = Random.Range(0.0f, 1.0f);

            switch (root.skinColor)
            {
            case SkinColor.black:
                if (det <= 0.5f)
                {
                    return(SkinColor.black);
                }
                else
                {
                    return(SkinColor.brown);
                }

            case SkinColor.brown:
                if (det <= 0.25f)
                {
                    return(SkinColor.black);
                }
                else
                {
                    return(SkinColor.brown);
                }

            case SkinColor.yellow:
                if (det <= 0.5f)
                {
                    return(SkinColor.brown);
                }
                else
                {
                    return(SkinColor.yellow);
                }

            case SkinColor.white:
                if (det <= 0.5f)
                {
                    return(SkinColor.brown);
                }
                else if (det <= 0.75f)
                {
                    return(SkinColor.yellow);
                }
                else
                {
                    return(SkinColor.white);
                }
            }

            return(SkinColor.brown);
        }
    }
示例#16
0
    public static AgeGroup PartnerAgeGroup(RootPerson root)
    {
        float det = Random.Range(0.0f, 1.0f);

        if (root.wealth == Wealth.wealthy)
        {
            switch (root.ageGroup)
            {
            case AgeGroup.youngAdult:
                if (det <= 0.5f)
                {
                    return(AgeGroup.youngAdult);
                }
                else if (det <= 0.99f)
                {
                    return(AgeGroup.adult);
                }
                else
                {
                    return(AgeGroup.middleAged);
                }

            case AgeGroup.adult:
                if (det <= 0.45f)
                {
                    return(AgeGroup.youngAdult);
                }
                else if (det <= 0.9f)
                {
                    return(AgeGroup.adult);
                }
                else
                {
                    return(AgeGroup.middleAged);
                }

            case AgeGroup.middleAged:
                if (det <= 0.45f)
                {
                    return(AgeGroup.youngAdult);
                }
                else if (det <= 0.7f)
                {
                    return(AgeGroup.adult);
                }
                else
                {
                    return(AgeGroup.middleAged);
                }

            case AgeGroup.senior:
                if (det <= 0.4f)
                {
                    return(AgeGroup.youngAdult);
                }
                else if (det <= 0.65f)
                {
                    return(AgeGroup.adult);
                }
                else if (det <= 0.7f)
                {
                    return(AgeGroup.middleAged);
                }
                else
                {
                    return(AgeGroup.senior);
                }
            }
        }
        else
        {
            if (det <= 0.5f)
            {
                return(root.ageGroup);
            }
            else if (det <= 0.99f)
            {
                switch (root.ageGroup)
                {
                case AgeGroup.youngAdult:
                    return(AgeGroup.adult);

                case AgeGroup.adult:
                    det = Random.Range(0.0f, 1.0f);
                    if (det <= 0.5f)
                    {
                        return(AgeGroup.youngAdult);
                    }
                    else
                    {
                        return(AgeGroup.middleAged);
                    }

                case AgeGroup.middleAged:
                    det = Random.Range(0.0f, 1.0f);
                    if (det <= 0.5f)
                    {
                        return(AgeGroup.adult);
                    }
                    else
                    {
                        return(AgeGroup.senior);
                    }

                case AgeGroup.senior:
                    return(AgeGroup.middleAged);
                }
            }
            else
            {
                switch (root.ageGroup)
                {
                case AgeGroup.youngAdult:
                    return(AgeGroup.middleAged);

                case AgeGroup.adult:
                    return(AgeGroup.senior);

                case AgeGroup.middleAged:
                    return(AgeGroup.youngAdult);

                case AgeGroup.senior:
                    return(AgeGroup.adult);
                }
            }
        }

        return(root.ageGroup);
    }
示例#17
0
    public static Gender PartnerGender(RootPerson root)
    {
        float det = Random.Range(0.0f, 1.0f);

        switch (root.sexuality)
        {
        case Sexuality.straight:
            switch (root.gender)
            {
            case Gender.cisMale:
                if (det <= 0.98f)
                {
                    return(Gender.cisFemale);
                }
                else
                {
                    return(Gender.transFemale);
                }

            case Gender.cisFemale:
                if (det <= 0.98f)
                {
                    return(Gender.cisMale);
                }
                else
                {
                    return(Gender.transMale);
                }

            case Gender.transMale:
                if (det <= 0.9f)
                {
                    return(Gender.cisFemale);
                }
                else
                {
                    return(Gender.transFemale);
                }

            case Gender.transFemale:
                if (det <= 0.9f)
                {
                    return(Gender.cisMale);
                }
                else
                {
                    return(Gender.transMale);
                }
            }
            break;

        case Sexuality.gay:
            switch (root.gender)
            {
            case Gender.cisMale:
                if (det <= 0.95f)
                {
                    return(Gender.cisMale);
                }
                else
                {
                    return(Gender.transMale);
                }

            case Gender.cisFemale:
                if (det <= 0.95f)
                {
                    return(Gender.cisFemale);
                }
                else
                {
                    return(Gender.transFemale);
                }

            case Gender.transMale:
                if (det <= 0.95f)
                {
                    return(Gender.cisMale);
                }
                else
                {
                    return(Gender.transMale);
                }

            case Gender.transFemale:
                if (det <= 0.95f)
                {
                    return(Gender.cisFemale);
                }
                else
                {
                    return(Gender.transFemale);
                }
            }
            break;

        case Sexuality.bi:
            if (det <= 0.47f)
            {
                return(Gender.cisMale);
            }
            else if (det <= 0.5f)
            {
                return(Gender.transMale);
            }
            else if (det <= 0.97f)
            {
                return(Gender.cisFemale);
            }
            else
            {
                return(Gender.transFemale);
            }

        case Sexuality.pan:
            if (det <= 0.15f)
            {
                return(Gender.cisMale);
            }
            else if (det <= 0.3f)
            {
                return(Gender.cisFemale);
            }
            else if (det <= 0.45f)
            {
                return(Gender.transMale);
            }
            else if (det <= 0.6f)
            {
                return(Gender.transFemale);
            }
            else if (det <= 0.8f)
            {
                return(Gender.dmabNonBinary);
            }
            else
            {
                return(Gender.dfabNonBinary);
            }
        }
        return(Gender.dfabNonBinary);
    }