Beispiel #1
0
        public static SpiritSystem Spirit(SpiritData data, Vector3 position, bool isOwnedByPlayer = true)
        {
            var newSpiritPrefab = U.Instantiate(data.Prefab, position, Quaternion.identity, ReferenceHolder.Instance.SpiritParent);
            var newSpirit       = new SpiritSystem(newSpiritPrefab, isOwnedByPlayer)
            {
                Data     = data,
                UsedCell = null
            };

            newSpirit.SetSystem(GameData.Instance.Player);
            PlaceEffect(newSpirit.Data.Base.Element, newSpiritPrefab.transform.position);
            return(newSpirit);
        }
Beispiel #2
0
        void OnUpgrading()
        {
            if (CheckGradeListOk(out List <SpiritData> grades))
            {
                var upgradedSpiritPrefab = Instantiate(
                    grades[ChoosedSpirit.Data.GradeCount + 1].Prefab,
                    ChoosedSpirit.Prefab.transform.position,
                    Quaternion.identity,
                    ReferenceHolder.Instance.SpiritParent);
                var upgradedSpirit = new SpiritSystem(upgradedSpiritPrefab, true);

                upgradedSpirit.Upgrade(ChoosedSpirit, grades[ChoosedSpirit.Data.GradeCount + 1]);
                upgradedSpirit.SetSystem(Owner);

                SpiritUpgraded?.Invoke(upgradedSpirit);
                SpiritSold?.Invoke(ChoosedSpirit);
                ChoosedSpirit = upgradedSpirit;
            }
            Owner.SpiritUISystem.ActivateUpgradeButton(ChoosedSpirit.Data.GradeCount < grades.Count - 1);
        }