Exemple #1
0
        static void Main(string[] args)
        {
            var getHead         = new Head();
            var getHeadCovering = new HeadCovering();
            var getLeftArm      = new LeftArm();
            var getRightArm     = new RightArm();
            var getLegs         = new Legs();

            Console.WriteLine("You have been given a basic body piece. It is up to you to create the perfect specimen of Legohood.");
            var figureItems = new FigureBase[] { getHead, getHeadCovering, getLeftArm, getRightArm, getLegs };

            foreach (var piece in figureItems)
            {
                piece.GetPiece();
            }
            Console.WriteLine("Press Enter to Escape");
        }
        // randomization method based on previously selected variables
        void RandomizeByVariable(CharacterObjectGroups cog, Gender gender, Elements elements, Race race, FacialHair facialHair, SkinColor skinColor, HeadCovering headCovering)
        {
            // if facial elements are enabled
            switch (elements)
            {
            case Elements.Yes:
                //select head with all elements
                if (cog.headAllElements.Count != 0)
                {
                    ActivateItem(cog.headAllElements[Random.Range(0, cog.headAllElements.Count)]);
                }

                //select eyebrows
                if (cog.eyebrow.Count != 0)
                {
                    ActivateItem(cog.eyebrow[Random.Range(0, cog.eyebrow.Count)]);
                }

                //select facial hair (conditional)
                if (cog.facialHair.Count != 0 && facialHair == FacialHair.Yes && gender == Gender.Male && headCovering != HeadCovering.HeadCoverings_No_FacialHair)
                {
                    ActivateItem(cog.facialHair[Random.Range(0, cog.facialHair.Count)]);
                }

                // select hair attachment
                switch (headCovering)
                {
                case HeadCovering.HeadCoverings_Base_Hair:
                    // set hair attachment to index 1
                    if (allGender.all_Hair.Count != 0)
                    {
                        ActivateItem(allGender.all_Hair[1]);
                    }
                    if (allGender.headCoverings_Base_Hair.Count != 0)
                    {
                        ActivateItem(allGender.headCoverings_Base_Hair[Random.Range(0, allGender.headCoverings_Base_Hair.Count)]);
                    }
                    break;

                case HeadCovering.HeadCoverings_No_FacialHair:
                    // no facial hair attachment
                    if (allGender.all_Hair.Count != 0)
                    {
                        ActivateItem(allGender.all_Hair[Random.Range(0, allGender.all_Hair.Count)]);
                    }
                    if (allGender.headCoverings_No_FacialHair.Count != 0)
                    {
                        ActivateItem(allGender.headCoverings_No_FacialHair[Random.Range(0, allGender.headCoverings_No_FacialHair.Count)]);
                    }
                    break;

                case HeadCovering.HeadCoverings_No_Hair:
                    // select hair attachment
                    if (allGender.headCoverings_No_Hair.Count != 0)
                    {
                        ActivateItem(allGender.all_Hair[Random.Range(0, allGender.all_Hair.Count)]);
                    }
                    // if not human
                    if (race != Race.Human)
                    {
                        // select elf ear attachment
                        if (allGender.elf_Ear.Count != 0)
                        {
                            ActivateItem(allGender.elf_Ear[Random.Range(0, allGender.elf_Ear.Count)]);
                        }
                    }
                    break;
                }
                break;

            case Elements.No:
                //select head with no elements
                if (cog.headNoElements.Count != 0)
                {
                    ActivateItem(cog.headNoElements[Random.Range(0, cog.headNoElements.Count)]);
                }
                break;
            }

            // select torso starting at index 1
            if (cog.torso.Count != 0)
            {
                ActivateItem(cog.torso[Random.Range(1, cog.torso.Count)]);
            }

            // determine chance for upper arms to be different and activate
            if (cog.arm_Upper_Right.Count != 0)
            {
                RandomizeLeftRight(cog.arm_Upper_Right, cog.arm_Upper_Left, 15);
            }

            // determine chance for lower arms to be different and activate
            if (cog.arm_Lower_Right.Count != 0)
            {
                RandomizeLeftRight(cog.arm_Lower_Right, cog.arm_Lower_Left, 15);
            }

            // determine chance for hands to be different and activate
            if (cog.hand_Right.Count != 0)
            {
                RandomizeLeftRight(cog.hand_Right, cog.hand_Left, 15);
            }

            // select hips starting at index 1
            if (cog.hips.Count != 0)
            {
                ActivateItem(cog.hips[Random.Range(1, cog.hips.Count)]);
            }

            // determine chance for legs to be different and activate
            if (cog.leg_Right.Count != 0)
            {
                RandomizeLeftRight(cog.leg_Right, cog.leg_Left, 15);
            }

            // select chest attachment
            if (allGender.chest_Attachment.Count != 0)
            {
                ActivateItem(allGender.chest_Attachment[Random.Range(0, allGender.chest_Attachment.Count)]);
            }

            // select back attachment
            if (allGender.back_Attachment.Count != 0)
            {
                ActivateItem(allGender.back_Attachment[Random.Range(0, allGender.back_Attachment.Count)]);
            }

            // determine chance for shoulder attachments to be different and activate
            if (allGender.shoulder_Attachment_Right.Count != 0)
            {
                RandomizeLeftRight(allGender.shoulder_Attachment_Right, allGender.shoulder_Attachment_Left, 10);
            }

            // determine chance for elbow attachments to be different and activate
            if (allGender.elbow_Attachment_Right.Count != 0)
            {
                RandomizeLeftRight(allGender.elbow_Attachment_Right, allGender.elbow_Attachment_Left, 10);
            }

            // select hip attachment
            if (allGender.hips_Attachment.Count != 0)
            {
                ActivateItem(allGender.hips_Attachment[Random.Range(0, allGender.hips_Attachment.Count)]);
            }

            // determine chance for knee attachments to be different and activate
            if (allGender.knee_Attachement_Right.Count != 0)
            {
                RandomizeLeftRight(allGender.knee_Attachement_Right, allGender.knee_Attachement_Left, 10);
            }

            // start randomization of the random characters colors
            RandomizeColors(skinColor);
        }
        // character randomization method
        void Randomize()
        {
            // initialize settings
            Gender       gender       = Gender.Male;
            Race         race         = Race.Human;
            SkinColor    skinColor    = SkinColor.White;
            Elements     elements     = Elements.Yes;
            HeadCovering headCovering = HeadCovering.HeadCoverings_Base_Hair;
            FacialHair   facialHair   = FacialHair.Yes;

            // disable any enabled objects before clear
            if (enabledObjects.Count != 0)
            {
                foreach (GameObject g in enabledObjects)
                {
                    g.SetActive(false);
                }
            }

            // clear enabled objects list (all objects now disabled)
            enabledObjects.Clear();

            // roll for gender
            if (!GetPercent(50))
            {
                gender = Gender.Female;
            }

            // roll for human (70% chance, 30% chance for elf)
            if (!GetPercent(70))
            {
                race = Race.Elf;
            }

            // roll for facial elements (beard, eyebrows)
            if (!GetPercent(50))
            {
                elements = Elements.No;
            }

            // select head covering 33% chance for each
            int headCoveringRoll = Random.Range(0, 100);

            // HeadCoverings_Base_Hair
            if (headCoveringRoll <= 33)
            {
                headCovering = HeadCovering.HeadCoverings_Base_Hair;
            }
            // HeadCoverings_No_FacialHair
            if (headCoveringRoll > 33 && headCoveringRoll < 66)
            {
                headCovering = HeadCovering.HeadCoverings_No_FacialHair;
            }
            // HeadCoverings_No_Hair
            if (headCoveringRoll >= 66)
            {
                headCovering = HeadCovering.HeadCoverings_No_Hair;
            }

            // select skin color if human, otherwise set skin color to elf
            switch (race)
            {
            case Race.Human:
                // select human skin 33% chance for each
                int colorRoll = Random.Range(0, 100);
                // select white skin
                if (colorRoll <= 33)
                {
                    skinColor = SkinColor.White;
                }
                // select brown skin
                if (colorRoll > 33 && colorRoll < 66)
                {
                    skinColor = SkinColor.Brown;
                }
                // select black skin
                if (colorRoll >= 66)
                {
                    skinColor = SkinColor.Black;
                }
                break;

            case Race.Elf:
                // select elf skin
                skinColor = SkinColor.Elf;
                break;
            }

            //roll for gender
            switch (gender)
            {
            case Gender.Male:
                // roll for facial hair if male
                if (!GetPercent(50))
                {
                    facialHair = FacialHair.No;
                }

                // initialize randomization
                RandomizeByVariable(male, gender, elements, race, facialHair, skinColor, headCovering);
                break;

            case Gender.Female:

                // no facial hair if female
                facialHair = FacialHair.No;

                // initialize randomization
                RandomizeByVariable(female, gender, elements, race, facialHair, skinColor, headCovering);
                break;
            }
        }
Exemple #4
0
    public void RandomizeBody()
    {
#if (UNITY_EDITOR)
        InitBody();
#endif

        // initialize settings
        Gender gender = Gender.Male;
        race = Race.Human;
        Elements     elements     = Elements.Yes;
        HeadCovering headCovering = HeadCovering.HeadCoverings_Base_Hair;
        FacialHair   facialHair   = FacialHair.Yes;

        // roll for gender
        if (!GetPercent(50))
        {
            gender = Gender.Female;
        }

        // roll for human (70% chance, 30% chance for elf)
        if (!GetPercent(70))
        {
            race = Race.Elf;
        }

        // roll for facial elements (beard, eyebrows)
        if (!GetPercent(50))
        {
            elements = Elements.No;
        }

        // select head covering 33% chance for each
        int headCoveringRoll = UnityEngine.Random.Range(0, 100);
        // HeadCoverings_Base_Hair
        if (headCoveringRoll <= 33)
        {
            headCovering = HeadCovering.HeadCoverings_Base_Hair;
        }
        // HeadCoverings_No_FacialHair
        if (headCoveringRoll > 33 && headCoveringRoll < 66)
        {
            headCovering = HeadCovering.HeadCoverings_No_FacialHair;
        }
        // HeadCoverings_No_Hair
        if (headCoveringRoll >= 66)
        {
            headCovering = HeadCovering.HeadCoverings_No_Hair;
        }

        CharacterObjectGroups         cog       = cRan.female;
        CharacterObjectListsAllGender allGender = cRan.allGender;
        //roll for gender
        switch (gender)
        {
        case Gender.Male:
            cog = cRan.male;
            // roll for facial hair if male
            if (!GetPercent(50))
            {
                facialHair = FacialHair.No;
            }
            break;

        case Gender.Female:
            cog = cRan.female;
            // no facial hair if female
            facialHair = FacialHair.No;

            break;
        }

        // if facial elements are enabled
        switch (elements)
        {
        case Elements.Yes:
            //select head with all elements
            if (cog.headAllElements.Count != 0)
            {
                ActivateItem(cog.headAllElements[UnityEngine.Random.Range(0, cog.headAllElements.Count)]);
            }

            //select eyebrows
            if (cog.eyebrow.Count != 0)
            {
                ActivateItem(cog.eyebrow[UnityEngine.Random.Range(0, cog.eyebrow.Count)]);
            }

            //select facial hair (conditional)
            if (cog.facialHair.Count != 0 && facialHair == FacialHair.Yes && gender == Gender.Male && headCovering != HeadCovering.HeadCoverings_No_FacialHair)
            {
                ActivateItem(cog.facialHair[UnityEngine.Random.Range(0, cog.facialHair.Count)]);
            }

            // select hair attachment
            switch (headCovering)
            {
            case HeadCovering.HeadCoverings_Base_Hair:
                // set hair attachment to index 1
                if (allGender.all_Hair.Count != 0)
                {
                    ActivateItem(allGender.all_Hair[1]);
                }
                if (allGender.headCoverings_Base_Hair.Count != 0)
                {
                    ActivateItem(allGender.headCoverings_Base_Hair[UnityEngine.Random.Range(0, allGender.headCoverings_Base_Hair.Count)]);
                }
                break;

            case HeadCovering.HeadCoverings_No_FacialHair:
                // no facial hair attachment
                if (allGender.all_Hair.Count != 0)
                {
                    ActivateItem(allGender.all_Hair[UnityEngine.Random.Range(0, allGender.all_Hair.Count)]);
                }
                if (allGender.headCoverings_No_FacialHair.Count != 0)
                {
                    ActivateItem(allGender.headCoverings_No_FacialHair[UnityEngine.Random.Range(0, allGender.headCoverings_No_FacialHair.Count)]);
                }
                break;

            case HeadCovering.HeadCoverings_No_Hair:
                // select hair attachment
                if (allGender.headCoverings_No_Hair.Count != 0)
                {
                    ActivateItem(allGender.all_Hair[UnityEngine.Random.Range(0, allGender.all_Hair.Count)]);
                }
                // if not human
                if (race != Race.Human)
                {
                    // select elf ear attachment
                    if (allGender.elf_Ear.Count != 0)
                    {
                        ActivateItem(allGender.elf_Ear[UnityEngine.Random.Range(0, allGender.elf_Ear.Count)]);
                    }
                }
                break;
            }
            break;

        case Elements.No:
            //select head with no elements
            if (cog.headNoElements.Count != 0)
            {
                ActivateItem(cog.headNoElements[UnityEngine.Random.Range(0, cog.headNoElements.Count)]);
            }
            break;
        }

        // select torso starting at index 1
        if (cog.torso.Count != 0)
        {
            ActivateItem(cog.torso[UnityEngine.Random.Range(1, cog.torso.Count)]);
        }

        // determine chance for upper arms to be different and activate
        if (cog.arm_Upper_Right.Count != 0)
        {
            RandomizeLeftRight(cog.arm_Upper_Right, cog.arm_Upper_Left, 15);
        }

        // determine chance for lower arms to be different and activate
        if (cog.arm_Lower_Right.Count != 0)
        {
            RandomizeLeftRight(cog.arm_Lower_Right, cog.arm_Lower_Left, 15);
        }

        // determine chance for hands to be different and activate
        if (cog.hand_Right.Count != 0)
        {
            RandomizeLeftRight(cog.hand_Right, cog.hand_Left, 15);
        }

        // select hips starting at index 1
        if (cog.hips.Count != 0)
        {
            ActivateItem(cog.hips[UnityEngine.Random.Range(1, cog.hips.Count)]);
        }

        // determine chance for legs to be different and activate
        if (cog.leg_Right.Count != 0)
        {
            RandomizeLeftRight(cog.leg_Right, cog.leg_Left, 15);
        }

        // select chest attachment
        if (allGender.chest_Attachment.Count != 0)
        {
            ActivateItem(allGender.chest_Attachment[UnityEngine.Random.Range(0, allGender.chest_Attachment.Count)]);
        }

        // select back attachment
        if (allGender.back_Attachment.Count != 0)
        {
            ActivateItem(allGender.back_Attachment[UnityEngine.Random.Range(0, allGender.back_Attachment.Count)]);
        }

        // determine chance for shoulder attachments to be different and activate
        if (allGender.shoulder_Attachment_Right.Count != 0)
        {
            RandomizeLeftRight(allGender.shoulder_Attachment_Right, allGender.shoulder_Attachment_Left, 10);
        }

        // determine chance for elbow attachments to be different and activate
        if (allGender.elbow_Attachment_Right.Count != 0)
        {
            RandomizeLeftRight(allGender.elbow_Attachment_Right, allGender.elbow_Attachment_Left, 10);
        }

        // select hip attachment
        if (allGender.hips_Attachment.Count != 0)
        {
            ActivateItem(allGender.hips_Attachment[UnityEngine.Random.Range(0, allGender.hips_Attachment.Count)]);
        }

        // determine chance for knee attachments to be different and activate
        if (allGender.knee_Attachement_Right.Count != 0)
        {
            RandomizeLeftRight(allGender.knee_Attachement_Right, allGender.knee_Attachement_Left, 10);
        }
    }