From e371272a7885723c7b0ef31a20ae5d0fbead1d30 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Sat, 26 Dec 2020 16:58:41 +0800
Subject: [PATCH] 12.26第二次

---
 Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs |  182 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 135 insertions(+), 47 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs b/Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs
index e98d12c..6a731c6 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/PlacementTile.cs
+++ b/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
@@ -104,52 +113,96 @@
         //     }
         // }
 
+        // /// <summary>
+        // /// 设置是否可以放置
+        // /// </summary>
+        // /// <param name="canPlace"></param>
+        // public void CheckCanPlace(bool canPlace)
+        // {
+        //     if (canPlaceRenderer)
+        //     {
+        //         if (canPlaceRenderer.enabled != canPlace)
+        //             canPlaceRenderer.enabled = canPlace;
+        //         if (canPlace)
+        //         {
+        //             SetSelect(false);
+        //         }
+        //         else if (towerVSRenderer.enabled)
+        //         {
+        //             towerVSRenderer.enabled = false;
+        //         }
+        //     }
+
+        // }
+
+        // /// <summary>
+        // /// 设置当前材质
+        // /// </summary>
+        // /// <param name="isSelect"></param>
+        // /// <param name="isEmpty"></param>
+        // public void SetSelect(bool isSelect)
+        // {
+        //     if (isSelect)
+        //     {
+        //         if (canPlaceRenderer.material != selectMat)
+        //         {
+        //             canPlaceRenderer.material = selectMat;
+        //         }
+        //         //激活绿色的底
+        //     }
+        //     else
+        //     {
+        //         if (canPlaceRenderer.material != canPlaceMat)
+        //         {
+        //             canPlaceRenderer.material = canPlaceMat;
+        //         }
+        //         if (towerVSRenderer.enabled)
+        //             towerVSRenderer.enabled = false;
+        //     }
+        // }
+
         /// <summary>
-        /// 设置是否可以放置
+        /// 是否放置塔
         /// </summary>
-        /// <param name="canPlace"></param>
-        public void CheckCanPlace(bool canPlace)
+        /// <param name="isOn"></param>
+        /// <param name="towerName"></param>
+        public void SetRender(bool isOn, string towerName)
         {
-            if (canPlaceRenderer)
+            if (canPlaceRenderer.enabled != isOn)
             {
-                if (canPlaceRenderer.enabled != canPlace)
-                    canPlaceRenderer.enabled = canPlace;
-                if (canPlace)
-                {
-                    SetSelect(false);
-                }
-                else if (towerVSRenderer.enabled)
-                {
-                    towerVSRenderer.enabled = false;
-                }
+                canPlaceRenderer.enabled = isOn;
+            }
+            if (myDragSelectPS.activeSelf != isOn)
+            {
+                myDragSelectPS.SetActive(isOn);
+            }
+            // if (isOn)
+            // {
+            //     myDragSelectPS.Play();
+            // }
+            // else
+            // {
+            //     myDragSelectPS.Stop();
+            // }
+
+            if (isOn && towerName != "")
+            {
+                //SetTowerVirtualshadow(towerName);
+                EndlessWaveLineManager.instance.SetWaveLineShow(GridPosition.x, true);
+            }
+            else if (!isOn)
+            {
+                towerVSRenderer.enabled = false;
+                EndlessWaveLineManager.instance.SetWaveLineShow(GridPosition.x, false);
             }
 
         }
 
-        /// <summary>
-        /// 设置当前材质
-        /// </summary>
-        /// <param name="isSelect"></param>
-        /// <param name="isEmpty"></param>
-        public void SetSelect(bool isSelect)
+        public void SetWarning(bool isOn)
         {
-            if (isSelect)
-            {
-                if (canPlaceRenderer.material != selectMat)
-                {
-                    canPlaceRenderer.material = selectMat;
-                }
-            }
-            else
-            {
-                if (canPlaceRenderer.material != canPlaceMat)
-                {
-                    canPlaceRenderer.material = canPlaceMat;
-                }
-                if (towerVSRenderer.enabled)
-                    towerVSRenderer.enabled = false;
-            }
+            canPlaceRenderer.material = isOn ? canNotPlaceMat : canPlaceMat;
         }
+
         /// <summary>
         /// 塔的虚影
         /// </summary>
@@ -160,18 +213,18 @@
         /// </summary>
         public Material towerVSMat;
 
-        public Texture fire, wood;
+        public Texture fire, wood, water;
 
+        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 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 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);
 
-        private Vector3 fireOffectp = new Vector3(-0.05f, 0f, 0f);
-        private Vector3 woodOffectp = new Vector3(0.0f, 0f, 0.19f);
         public void SetTowerVirtualshadow(string towerName)
         {
-
             if (towerName.StartsWith("GrowUpTower"))
             {
                 if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true;
@@ -184,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;
 
@@ -196,7 +248,11 @@
             else if (towerName.StartsWith("CopyCatTower"))
             {
                 //水元素
+                if (!towerVSRenderer.enabled) towerVSRenderer.enabled = true;
 
+                towerVSMat.SetTexture(shaderPropertyName, water);
+                towerVSRenderer.transform.localScale = waterScale;
+                towerVSRenderer.transform.localPosition = waterOffectp;
             }
         }
         string shaderPropertyName;
@@ -213,6 +269,14 @@
             towerVSRenderer.enabled = false;
         }
 
+        private GameObject buyMesh;
+        public GameObject BuyMesh
+        {
+            get
+            {
+                return buyMesh;
+            }
+        }
 
         /// <summary>
         /// 根据传入的参数来设置当前Grid对应的显示信息
@@ -224,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;
@@ -237,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)
@@ -244,5 +319,18 @@
                     break;
             }
         }
+
+        public void BuyPs()
+        {
+            myOpenPS?.Play();
+            AudioSourceManager.Ins.Play(AudioEnum.OpenTowerPlace);
+            EndlessRandomTower.instance.CheckMoney();
+        }
+
+        public void PutPs()
+        {
+            myPutPS?.Play();
+        }
+
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1