Exemplo n.º 1
0
        /// <summary>
        /// Initializes character renderers with selected sprites.
        /// </summary>
        private void TryInitialize()
        {
            //if (Expressions.All(i => i.Name != "Default") || Expressions.All(i => i.Name != "Angry") || Expressions.All(i => i.Name != "Dead"))
            //	throw new Exception("Character must have at least 3 basic expressions: Default, Angry and Dead.");

            //HeadRenderer.sprite = Head;
            HairRenderer.sprite = Helmet == null || Hair == null ? Hair : HairCut;
            //HairRenderer.maskInteraction = Helmet == null || Helmet.name.Contains("[FullHair]") ? SpriteMaskInteraction.None : SpriteMaskInteraction.VisibleInsideMask;
            //EarsRenderers.ForEach(i => i.sprite = Ears);
            SetExpression(Expression);
            //BeardRenderer.sprite = Beard;
            MapSprites(BodyRenderers, Body);
            HelmetRenderer.sprite = Helmet;
            //GlassesRenderer.sprite = Glasses;
            //MaskRenderer.sprite = Mask;
            //EarringsRenderer.sprite = Earrings;
            MapSprites(ArmorRenderers, Armor);
            //CapeRenderer.sprite = Cape;
            //BackRenderer.sprite = Back;
            PrimaryMeleeWeaponRenderer.sprite = PrimaryMeleeWeapon;
            //SecondaryMeleeWeaponRenderer.sprite = SecondaryMeleeWeapon;
            MapSprites(BowRenderers, CompositeWeapon);
            //FirearmsRenderers.ForEach(i => i.sprite = Firearms.SingleOrDefault(j => j != null && i.name.Contains(j.name)));
            ShieldRenderer.sprite = Shield;

            PrimaryMeleeWeaponRenderer.enabled   = WeaponType != WeaponType.Bow;
            SecondaryMeleeWeaponRenderer.enabled = WeaponType == WeaponType.MeleePaired;
            BowRenderers.ForEach(i => i.enabled  = WeaponType == WeaponType.Bow);

            if (WeaponType == WeaponType.Crossbow)
            {
                MapSprites(new List <SpriteRenderer> {
                    PrimaryMeleeWeaponRenderer
                }, CompositeWeapon);
            }

            if (Hair != null && Hair.name.Contains("[HideEars]"))
            {
                EarsRenderers.ForEach(i => i.sprite = null);
            }

            if (Helmet != null && !Helmet.name.Contains("[ShowEars]"))
            {
                EarsRenderers.ForEach(i => i.sprite = null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes character renderers with selected sprites.
        /// </summary>
        private void TryInitialize()
        {
            //if (Expressions.All(i => i.Name != "Default") || Expressions.All(i => i.Name != "Angry") || Expressions.All(i => i.Name != "Dead"))
            //	throw new Exception("Character must have at least 3 basic expressions: Default, Angry and Dead.");

            //HeadRenderer.sprite = Head;
            HairRenderer.sprite = Hair == null ? null : CropHair ? HairCropped : Hair;
            MapSprites(EarsRenderers, Ears);
            EarsRenderers.ForEach(i => i.enabled = !HideEars);
            SetExpression(Expression);
            //BeardRenderer.sprite = Beard;
            MapSprites(BodyRenderers, Body);
            HelmetRenderer.sprite = Helmet;
            //GlassesRenderer.sprite = Glasses;
            //MaskRenderer.sprite = Mask;
            //EarringsRenderer.sprite = Earrings;
            MapSprites(ArmorRenderers, Armor);
            //CapeRenderer.sprite = Cape;
            //BackRenderer.sprite = Back;
            PrimaryMeleeWeaponRenderer.sprite   = PrimaryMeleeWeapon;
            SecondaryMeleeWeaponRenderer.sprite = SecondaryMeleeWeapon;
            MapSprites(BowRenderers, CompositeWeapon);
            //FirearmsRenderers.ForEach(i => i.sprite = Firearms.SingleOrDefault(j => j != null && i.name.Contains(j.name)));
            MapSprites(ShieldRenderers, Shield);

            PrimaryMeleeWeaponRenderer.enabled   = WeaponType != WeaponType.Bow;
            SecondaryMeleeWeaponRenderer.enabled = WeaponType == WeaponType.MeleePaired;
            BowRenderers.ForEach(i => i.enabled  = WeaponType == WeaponType.Bow);

            if (WeaponType == WeaponType.Crossbow)
            {
                var quiver = BowRenderers.Single(i => i.name == "Quiver");

                quiver.enabled = true;
                MapSprites(new List <SpriteRenderer> {
                    PrimaryMeleeWeaponRenderer, quiver
                }, CompositeWeapon);
            }
        }
Exemplo n.º 3
0
        public override void LoadFromJson(string serialized)
        {
            var description = JsonUtility.FromJson <SerializableDictionary <string, string> >(serialized);
            var sc          = SpriteCollection.Instance;

            if (sc == null)
            {
                throw new Exception("SpriteCollection is missed on scene!");
            }

            RestoreFromString(ref Body, BodyRenderers, sc.Body, description["Body"]);
            EarsRenderers.ForEach(i => RestoreFromString(ref Ears, i, sc.Ears, description["Ears"]));
            RestoreFromString(ref Hair, HairRenderer, sc.Hair, description["Hair"]);
            RestoreFromString(ref Beard, BeardRenderer, sc.Beard, description["Beard"]);
            RestoreFromString(ref Helmet, HelmetRenderer, sc.Armor, description["Helmet"]);
            RestoreFromString(ref Glasses, GlassesRenderer, sc.Glasses, description["Glasses"]);
            RestoreFromString(ref Mask, MaskRenderer, sc.Mask, description["Mask"]);
            RestoreFromString(ref Armor, ArmorRenderers, sc.Armor, description["Armor"]);
            WeaponType = (WeaponType)Enum.Parse(typeof(WeaponType), description["WeaponType"]);
            RestoreFromString(ref PrimaryMeleeWeapon, PrimaryMeleeWeaponRenderer, GetWeaponCollection(WeaponType), description["PrimaryMeleeWeapon"]);
            RestoreFromString(ref SecondaryMeleeWeapon, SecondaryMeleeWeaponRenderer, GetWeaponCollection(WeaponType), description["SecondaryMeleeWeapon"]);
            RestoreFromString(ref Cape, CapeRenderer, sc.Cape, description["Cape"]);
            RestoreFromString(ref Back, BackRenderer, sc.Back, description["Back"]);
            RestoreFromString(ref Shield, ShieldRenderer, sc.Shield, description["Shield"]);
            RestoreFromString(ref CompositeWeapon, BowRenderers, sc.Bow, description["Bow"]);
            Expression  = description["Expression"];
            Expressions = new List <Expression>();

            foreach (var key in description.Keys)
            {
                if (key.Contains("Expression."))
                {
                    var parts          = key.Split('.');
                    var expressionName = parts[1];
                    var expressionPart = parts[2];
                    var expression     = Expressions.SingleOrDefault(i => i.Name == expressionName);

                    if (expression == null)
                    {
                        expression = new Expression {
                            Name = expressionName
                        };
                        Expressions.Add(expression);
                    }

                    switch (expressionPart)
                    {
                    case "Eyebrows":
                        RestoreFromString(ref expression.Eyebrows, EyebrowsRenderer, sc.Eyebrows, description[key]);
                        break;

                    case "Eyes":
                        RestoreFromString(ref expression.Eyes, EyesRenderer, sc.Eyes, description[key]);
                        break;

                    case "Mouth":
                        RestoreFromString(ref expression.Mouth, MouthRenderer, sc.Mouth, description[key]);
                        break;

                    default:
                        throw new NotSupportedException(expressionPart);
                    }
                }
            }

            Initialize();
            UpdateAnimation();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Set character's body parts.
        /// </summary>
        public override void SetBody(SpriteGroupEntry item, BodyPart part, Color?color)
        {
            switch (part)
            {
            case BodyPart.Body:
                Body = item?.Sprites;
                BodyRenderers.ForEach(i => i.color = color ?? i.color);
                Head = HeadRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                HeadRenderer.color = color ?? HeadRenderer.color;
                break;

            case BodyPart.Head:
                Head = HeadRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                HeadRenderer.color = color ?? HeadRenderer.color;
                break;

            case BodyPart.Hair:
                Hair = HairRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                HairRenderer.color = color ?? HairRenderer.color;
                HideEars           = item != null && item.Tags.Contains("HideEars");
                if (item != null && item.Tags.Contains("NoPaint"))
                {
                    HairRenderer.color = Color.white; HairRenderer.material = new Material(Shader.Find("Sprites/Default"));
                }
                break;

            case BodyPart.Ears:
                Ears = item?.Sprites;
                EarsRenderers.ForEach(i => i.color = color ?? i.color);
                break;

            case BodyPart.Eyebrows:
                if (EyebrowsRenderer)
                {
                    Expressions[0].Eyebrows = EyebrowsRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                }
                break;

            case BodyPart.Eyes:
                if (EyesRenderer)
                {
                    Expressions[0].Eyes = EyesRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                    Expressions.Where(i => i.Name != "Dead").ToList().ForEach(i => i.EyesColor = color ?? EyesRenderer.color);
                    EyesRenderer.color = color ?? EyesRenderer.color;
                }
                break;

            case BodyPart.Mouth:
                if (MouthRenderer)
                {
                    Expressions[0].Mouth = MouthRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                }
                break;

            case BodyPart.Beard:
                if (BeardRenderer)
                {
                    Beard = BeardRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                    BeardRenderer.color = color ?? BeardRenderer.color;
                }
                break;

            case BodyPart.Makeup:
                if (MakeupRenderer)
                {
                    Makeup = MakeupRenderer.GetComponent <SpriteMapping>().FindSprite(item?.Sprites);
                    MakeupRenderer.color = color ?? MakeupRenderer.color;
                }
                break;

            default: throw new NotImplementedException($"Unsupported part: {part}.");
            }

            Initialize();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Initializes character renderers with selected sprites.
        /// </summary>
        private void TryInitialize()
        {
            if (Expressions.All(i => i.Name != "Default") || Expressions.All(i => i.Name != "Angry") || Expressions.All(i => i.Name != "Dead"))
            {
                throw new Exception("Character must have at least 3 basic expressions: Default, Angry and Dead.");
            }

            if (ShowHelmet)
            {
                HairRenderer.sprite = Hair == null ? null : CropHair ? HairCropped : Hair;
                EarsRenderers.ForEach(i => i.enabled = !HideEars);
                HelmetRenderer.sprite = Helmet;
            }
            else
            {
                HairRenderer.sprite = Hair;
                EarsRenderers.ForEach(i => i.enabled = true);
                HelmetRenderer.sprite = null;
            }

            MapSprites(EarsRenderers, Ears);
            SetExpression(Expression);
            if (BeardRenderer != null)
            {
                BeardRenderer.sprite = Beard;
            }
            MapSprites(BodyRenderers, Body);
            MapSprite(HeadRenderer, Body);
            MapSprites(ArmorRenderers, Armor);
            //CapeRenderer.sprite = Cape;
            //BackRenderer.sprite = Back;
            PrimaryWeaponRenderer.sprite    = PrimaryWeapon;
            PrimaryWeaponRenderer.enabled   = WeaponType == WeaponType.Melee1H || WeaponType == WeaponType.Melee2H || WeaponType == WeaponType.Paired || WeaponType == WeaponType.Crossbow || WeaponType == WeaponType.Throwable;
            SecondaryWeaponRenderer.sprite  = SecondaryWeapon;
            SecondaryWeaponRenderer.enabled = WeaponType == WeaponType.Paired;
            MapSprites(BowRenderers, CompositeWeapon);
            BowRenderers.ForEach(i => i.enabled = WeaponType == WeaponType.Bow);
            MapSprites(ShieldRenderers, Shield);
            ShieldRenderers.ForEach(i => i.enabled = WeaponType == WeaponType.Melee1H);

            if (MakeupRenderer != null)
            {
                MakeupRenderer.sprite = Makeup;
            }
            if (MaskRenderer != null)
            {
                MaskRenderer.sprite = Mask;
            }
            MapSprites(EarringsRenderers, Earrings);

            if (WeaponType == WeaponType.Crossbow)
            {
                var quiver = BowRenderers.Single(i => i.name == "Quiver");

                quiver.enabled = true;
                MapSprites(new List <SpriteRenderer> {
                    PrimaryWeaponRenderer, quiver
                }, CompositeWeapon);
            }

            ApplyMaterials();
        }