public void CreateTower(TowerData towerData, IPlacementArea placementArea, IntVector2 placeGrid, Vector3 position, Quaternion rotation)
        {
            if (towerData == null)
            {
                return;
            }

            TowerLevelData towerLevelData = towerData.GetTowerLevelData(0);

            if (dataPlayer.Energy < towerLevelData.BuildEnergy)
            {
                return;
            }

            dataPlayer.AddEnergy(-towerLevelData.BuildEnergy);

            Tower tower = dataTower.CreateTower(towerData.Id);

            if (tower == null)
            {
                Log.Error("Create tower fail,Tower data id is '{0}'.", towerData.Id);
                return;
            }

            entityLoader.ShowEntity(towerData.EntityId, TypeUtility.GetEntityType(tower.Type),
                                    (entity) =>
            {
                EntityTowerBase entityTowerBase = entity.Logic as EntityTowerBase;
                dicTowerInfo.Add(tower.SerialId, TowerInfo.Create(tower, entityTowerBase, placementArea, placeGrid));
            }
                                    , EntityDataTower.Create(tower, position, rotation));

            HidePreviewTower();
        }
 private void RaiseEnergy()
 {
     dataPlayer.AddEnergy(entityDataTower.Tower.EnergyRaise);
     GameEntry.Sound.PlaySound(EnumSound.TDCurrency, Entity);
     if (entityLogicTowerLevel != null && entityLogicTowerLevel.effect != null)
     {
         entityLogicTowerLevel.effect.gameObject.SetActive(true);
         entityLogicTowerLevel.effect.Play(true);
     }
 }
        protected override void Dead()
        {
            base.Dead();

            dataPlayer.AddEnergy(EntityDataEnemy.EnemyData.AddEnergy);
            if (!hide)
            {
                hide = true;
                GameEntry.Event.Fire(this, HideEnemyEventArgs.Create(Id));
            }
        }