chenxin
2020-10-27 e4389b2f493112306b4aa143e99b2738332ca8d2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using UnityEngine;
 
namespace TowerDefense.UI.HUD
{
    /// <summary>
    /// States the placement tile can be in
    /// </summary>
    public enum PlacementTileState
    {
        Filled,
        Empty
    }
    
    /// <summary>
    /// Simple class to illustrate tile placement locations
    /// 主要功能是在场景内能够表示可以放置Tower的位置
    /// </summary>
    public class PlacementTile : MonoBehaviour
    {
        /// <summary>
        /// Material to use when this tile is empty
        /// </summary>
        public Material emptyMaterial;
        /// <summary>
        /// Material to use when this tile is filled
        /// </summary>
        public Material filledMaterial;
        /// <summary>
        /// The renderer whose material we're changing
        /// </summary>
        public Renderer tileRenderer;
 
        /// <summary>
        /// 等待购买的材质
        /// </summary>
        public Material waitBuyMat;
 
        /// <summary>
        /// 已开放的材质.
        /// </summary>
        public Material openMat;
 
        /// <summary>
        /// 塔位已被破坏的材质
        /// </summary>
        public Material destroyedMat;
 
        /// <summary>
        /// Update the state of this placement tile
        /// </summary>
        public void SetState(PlacementTileState newState)
        {
            switch (newState)
            {
                case PlacementTileState.Filled:
                    if (tileRenderer != null && filledMaterial != null)
                    {
                        tileRenderer.sharedMaterial = filledMaterial;
                    }
                    break;
                case PlacementTileState.Empty:
                    if (tileRenderer != null && emptyMaterial != null)
                    {
                        tileRenderer.sharedMaterial = emptyMaterial;
                    }
                    break;
            }
        }
 
 
        /// <summary>
        /// 根据传入的参数来设置当前Grid对应的显示信息
        /// WORK START: 从这个函数开始,替换相关的显示效果
        /// </summary>
        /// <param name="newtype"></param>
        public void SetTileType( PlacementGridType newtype)
        {
            switch( newtype)
            {
                case PlacementGridType.EGridWaitBuy:
                    if (tileRenderer != null && waitBuyMat != null)
                        tileRenderer.sharedMaterial = waitBuyMat;
                    break;
                case PlacementGridType.EGridOpen:
                    if (tileRenderer != null && openMat != null)
                        tileRenderer.sharedMaterial = openMat;
                    break;
                case PlacementGridType.EGridDestroyed:
                    if (tileRenderer != null && destroyedMat != null)
                        tileRenderer.sharedMaterial = destroyedMat;
                    break;
            }
        }
    }
}