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); }
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); }