public void PlaceTower(Tile tile, TowerSaveData saveData = null) { CurrentTile = tile; m_renderer.material = m_towerMaterial; MermanLib.UnityManipulator.DestroyAndClearList(ref m_abilityInstances); for (var i = 0; i < m_data.Abilities.Count; i++) { var abilityInstance = Instantiate(m_abilityInstancePrefab, transform).GetComponent <AbilityInstance>(); m_abilityInstances.Add(abilityInstance); abilityInstance.Init(m_data.Abilities[i], Attack); } SelectAbility(); if (saveData != null) { m_saveData = saveData; } else { m_saveData = new TowerSaveData() { id = m_creatureData.Id }; } m_data.Stats.Init(m_saveData.level); }
public void AssignTowerData(Tower tower) { gameObject.SetActive(tower != null); m_tower = tower; TowerSaveData saveData = tower.GetSaveData(); TowerStats stats = tower.GetData().Stats; var data = tower.GetCreatureData(); m_towerImage.sprite = data.TowerData.TowerSprite; m_towerName.text = data.TowerData.name; var abilities = tower.GetEquippedAbilities(); m_ability1Panel.AssignData(abilities[0]); m_ability2Panel.AssignData(abilities.Count > 1 ? abilities[1] : null); SelectAbility(tower.CurrentAbilityIndex); m_xpImage.fillAmount = GameManager.Instance.GetNextLevelXpPercentage(saveData.xp, saveData.level); m_levelTMPro.text = LEVEL_BASE_TEXT + saveData.level; m_attackValueTMPro.text = "+" + stats.GetStat(EStat.AttackBuff).ToString("F0") + "%"; m_hasteValueTMPro.text = "+" + stats.GetStat(EStat.Haste).ToString("F0") + "%"; m_rangeValueTMPro.text = "+" + stats.GetStat(EStat.Range).ToString("F0") + "%"; m_presenceValueTMPro.text = "+" + stats.GetStat(EStat.Presence).ToString("F0") + "%"; m_type1Icon.AssignType(data.CreaturePrimaryType); m_type2Icon.AssignType(data.CreatureSecondaryType); }