예제 #1
0
        public void Equip(int armorId, int weaponId)
        {
            var spineResourcePath = $"Character/Player/{armorId}";

            ChangeSpine(spineResourcePath);
            var sprite = SpriteHelper.GetPlayerSpineTextureWeapon(weaponId);

            SpineController.UpdateWeapon(sprite);
        }
예제 #2
0
        public void EquipWeapon(Weapon weapon)
        {
            if (IsFullCostumeEquipped || !SpineController)
            {
                return;
            }

            var sprite = weapon.GetPlayerSpineTexture();

            SpineController.UpdateWeapon(sprite);
        }
예제 #3
0
        private void UpdateTailById(int tailCostumeId)
        {
            if (IsFullCostumeEquipped || SpineController is null)
            {
                return;
            }

            var sheet = Game.instance.TableSheets.CostumeItemSheet;

            if (!sheet.TryGetValue(tailCostumeId, out var row, true))
            {
                return;
            }

            var sprite = Resources.Load <Sprite>(row.SpineResourcePath);

            SpineController.UpdateTail(sprite);
        }
예제 #4
0
        private void UpdateEyeById(int eyeCostumeId)
        {
            if (IsFullCostumeEquipped || SpineController is null)
            {
                return;
            }

            var sheet = Game.instance.TableSheets.CostumeItemSheet;

            if (!sheet.TryGetValue(eyeCostumeId, out var row, true))
            {
                return;
            }

            var halfSprite = Resources.Load <Sprite>($"{row.SpineResourcePath}_half");
            var openSprite = Resources.Load <Sprite>($"{row.SpineResourcePath}_open");

            SpineController.UpdateEye(halfSprite, openSprite);
        }
예제 #5
0
        private void UpdateEarById(int earCostumeId)
        {
            if (IsFullCostumeEquipped || SpineController is null)
            {
                return;
            }

            var sheet = Game.instance.TableSheets.CostumeItemSheet;

            if (!sheet.TryGetValue(earCostumeId, out var row, true))
            {
                return;
            }

            var leftSprite  = Resources.Load <Sprite>($"{row.SpineResourcePath}_left");
            var rightSprite = Resources.Load <Sprite>($"{row.SpineResourcePath}_right");

            SpineController.UpdateEar(leftSprite, rightSprite);
        }
예제 #6
0
        private void UpdateHairById(int hairCostumeId)
        {
            if (IsFullCostumeEquipped || SpineController is null)
            {
                return;
            }

            var sheet = Game.instance.TableSheets.CostumeItemSheet;

            if (!sheet.TryGetValue(hairCostumeId, out var row, true))
            {
                return;
            }

            var sprites = Enumerable.Range(0, SpineController.HairSlotCount)
                          .Select(index =>
                                  $"{row.SpineResourcePath}_{SpineController.hairTypeIndex:00}_{index + 1:00}")
                          .Select(Resources.Load <Sprite>).ToList();

            SpineController.UpdateHair(sprites);
        }
예제 #7
0
        public override void OnStateEnter(
            Animator animator,
            AnimatorStateInfo stateInfo,
            int layerIndex)
        {
            if (!_controller)
            {
                _controller = animator.GetComponent <SpineController>();
                if (!_controller)
                {
                    throw new NotFoundComponentException <SpineController>();
                }
            }

            if (!_skeletonAnimation)
            {
                _skeletonAnimation = animator.GetComponentInChildren <SkeletonAnimation>();
                if (!_skeletonAnimation)
                {
                    throw new NotFoundComponentException <SkeletonAnimation>();
                }

                _spineAnimationState = _skeletonAnimation.state;
            }

            try
            {
                _trackEntry           = _controller.PlayAnimationForState(animationClip, layer);
                _trackEntry.TimeScale = timeScale;
                _normalizedTime       = 0f;
            }
            catch (KeyNotFoundException)
            {
                Debug.LogError($"{nameof(_trackEntry)} is null!");
            }
        }