wangguan
2020-12-26 e371272a7885723c7b0ef31a20ae5d0fbead1d30
Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs
@@ -1,7 +1,6 @@
using UnityEngine;
using TowerDefense.Level;
using UnityEditor;
using KTGMGemClient;
using Core.Utilities;
namespace TowerDefense.UI.HUD
{
@@ -57,6 +56,7 @@
        /// 可以放置的
        /// </summary>
        public Material canPlaceMat;
        public Material canNotPlaceMat;
        /// <summary>
        /// 放置在当前位置
@@ -65,6 +65,15 @@
        //public ParticleSystem myPS;//可以升级的特效
        public ParticleSystem myOpenPS;//购买后的特效
        public ParticleSystem myPutPS;//交换塔位置后的特效
        public GameObject myDragSelectPS;//推拽时候移动到当前塔的特效
        /// <summary>
        /// 所在的格子坐标
        /// </summary>
        public IntVector2 GridPosition { get; set; }
        /// <summary>
        /// Update the state of this placement tile
@@ -163,15 +172,35 @@
            {
                canPlaceRenderer.enabled = isOn;
            }
            if (myDragSelectPS.activeSelf != isOn)
            {
                myDragSelectPS.SetActive(isOn);
            }
            // if (isOn)
            // {
            //     myDragSelectPS.Play();
            // }
            // else
            // {
            //     myDragSelectPS.Stop();
            // }
            if (isOn && towerName != "")
            {
                SetTowerVirtualshadow(towerName);
                //SetTowerVirtualshadow(towerName);
                EndlessWaveLineManager.instance.SetWaveLineShow(GridPosition.x, true);
            }
            else if (!isOn && towerVSRenderer.enabled)
            else if (!isOn)
            {
                towerVSRenderer.enabled = false;
                EndlessWaveLineManager.instance.SetWaveLineShow(GridPosition.x, false);
            }
        }
        public void SetWarning(bool isOn)
        {
            canPlaceRenderer.material = isOn ? canNotPlaceMat : canPlaceMat;
        }
        /// <summary>
@@ -186,13 +215,13 @@
        public Texture fire, wood, water;
        private Vector3 fireScale = new Vector3(1.02f, 0.926f, 1f);
        private Vector3 woodScale = new Vector3(0.82f, 1.03f, 1f);
        private Vector3 waterScale = new Vector3(1.0f, 1.0f, 1.88f);
        private Vector3 fireScale = new Vector3(1f, 1f, 1f);
        private Vector3 woodScale = new Vector3(0.8f, 1.12f, 1f);
        private Vector3 waterScale = new Vector3(1.55f, 1.35f, 1f);
        private Vector3 fireOffectp = new Vector3(-0.05f, 0f, 0f);
        private Vector3 woodOffectp = new Vector3(0.0f, 0f, 0.19f);
        private Vector3 waterOffectp = new Vector3(0.0f, 0f, 0.19f);
        private Vector3 fireOffectp = new Vector3(-0.05f, 0f, 0.15f);
        private Vector3 woodOffectp = new Vector3(0.0f, 0f, 0.3f);
        private Vector3 waterOffectp = new Vector3(0.0f, 0f, 0.47f);
        public void SetTowerVirtualshadow(string towerName)
        {
@@ -208,11 +237,10 @@
            }
            else if (towerName.StartsWith("BlinkTower"))
            {
                //木元素
                if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true;
                //木元素
                towerVSMat.SetTexture(shaderPropertyName, wood);
                //木元素
                towerVSRenderer.transform.localScale = woodScale;
                towerVSRenderer.transform.localPosition = woodOffectp;
@@ -220,13 +248,11 @@
            else if (towerName.StartsWith("CopyCatTower"))
            {
                //水元素
                //if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true;
                if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true;
                //水元素
                //towerVSMat.SetTexture(shaderPropertyName, water);
                //水元素
                //towerVSRenderer.transform.localScale = waterScale;
                //towerVSRenderer.transform.localPosition = waterOffectp;
                towerVSMat.SetTexture(shaderPropertyName, water);
                towerVSRenderer.transform.localScale = waterScale;
                towerVSRenderer.transform.localPosition = waterOffectp;
            }
        }
        string shaderPropertyName;
@@ -243,6 +269,14 @@
            towerVSRenderer.enabled = false;
        }
        private GameObject buyMesh;
        public GameObject BuyMesh
        {
            get
            {
                return buyMesh;
            }
        }
        /// <summary>
        /// 根据传入的参数来设置当前Grid对应的显示信息
@@ -254,10 +288,15 @@
            switch (newtype)
            {
                case PlacementGridType.EGridWaitBuy:
                    GameObject prefab = Resources.Load<GameObject>("Prefabs/BuyMesh");
                    buyMesh = Instantiate(prefab, transform);
                    //Debug.Log("未开启塔位" + buyMesh);
                    if (tileRenderer != null && waitBuyMat != null)
                        tileRenderer.sharedMaterial = waitBuyMat;
                    break;
                case PlacementGridType.EGridOpen:
                    //Debug.Log("开了塔" + EndlessLevelManager.instanceExists);
                    if (EndlessLevelManager.instanceExists)
                    {
                        tileRenderer.enabled = false;
@@ -267,6 +306,12 @@
                        if (tileRenderer != null && openMat != null)
                            tileRenderer.sharedMaterial = openMat;
                    }
                    SetWarning(false);
                    if (buyMesh != null)
                    {
                        Destroy(buyMesh);
                    }
                    break;
                case PlacementGridType.EGridDestroyed:
                    if (tileRenderer != null && destroyedMat != null)
@@ -274,5 +319,18 @@
                    break;
            }
        }
        public void BuyPs()
        {
            myOpenPS?.Play();
            AudioSourceManager.Ins.Play(AudioEnum.OpenTowerPlace);
            EndlessRandomTower.instance.CheckMoney();
        }
        public void PutPs()
        {
            myPutPS?.Play();
        }
    }
}