using System.Collections; using System.Collections.Generic; using UnityEngine; namespace TBTK{ public class GridIndicator : MonoBehaviour { [Header("Square")] public Transform sqCursor; public Transform sqSelect; public Transform sqMovable; public Transform sqHostile; public Transform sqAbility; public Transform sqDeploy; public Transform sqFog; [HideInInspector] public List sqMovableList=new List(); [HideInInspector] public List sqHostileList=new List(); [HideInInspector] public List sqAbilityList=new List(); [HideInInspector] public List sqDeployList=new List(); [Header("Hex")] public Transform hexCursor; public Transform hexSelect; public Transform hexMovable; public Transform hexHostile; public Transform hexAbility; public Transform hexDeploy; public Transform hexFog; [HideInInspector] public List hexMovableList=new List(); [HideInInspector] public List hexHostileList=new List(); [HideInInspector] public List hexAbilityList=new List(); [HideInInspector] public List hexDeployList=new List(); [Header("Common")] public Transform coverOverlayF; public Transform coverOverlayH; [HideInInspector] public List coverOverlayFList=new List(); [HideInInspector] public List coverOverlayHList=new List(); [HideInInspector] public List fogList=new List(); [Header("Runtime")] public Transform cursor; public Transform select; [HideInInspector] public List extraCursorList=new List(); //for aoe public static GridIndicator instance; public void Awake(){ instance=this; } void Start(){ bool manualDeployment=UnitManager.RequireManualDeployment(); if(GridManager.IsHexGrid()){ for(int i=0; i<30; i++) AddElement(hexMovable, hexMovableList); for(int i=0; i<15; i++) AddElement(hexHostile, hexHostileList); for(int i=0; i<20; i++) AddElement(hexAbility, hexAbilityList); if(manualDeployment){ for(int i=0; i<10; i++) AddElement(hexDeploy, hexDeployList); } } else{ for(int i=0; i<30; i++) AddElement(sqMovable, sqMovableList); for(int i=0; i<15; i++) AddElement(sqHostile, sqHostileList); for(int i=0; i<20; i++) AddElement(sqAbility, sqAbilityList); if(manualDeployment){ for(int i=0; i<10; i++) AddElement(sqDeploy, hexDeployList); } } if(GameControl.EnableFogOfWar()){ if(GridManager.IsHexGrid() && hexFog!=null){ for(int i=0; iextraCursorList.Count){ Transform cursorX=AddElement(cursor, extraCursorList, true); cursorX.localScale=cursor.localScale; } } public static void SetCursor(Node node){ instance._SetCursor(node); } public void _SetCursor(Node node){ if(node==lastNode) return; lastNode=node; if(AbilityManager.IsWaitingForTarget()){ if(node!=null){ List list=new List(); if(AbilityManager.IsCurAbilityCone()){ int fov=AbilityManager.GetCurAbilityFOV(); list=GridManager.GetNodesInACone(AbilityManager.GetCurNode(), node, AbilityManager.GetCurAbilityRange(), fov); CheckCursorCount(list.Count); node=null; } else{ int aoe=AbilityManager.GetCurAbilityAOE(); if(aoe>0){ list=GridManager.GetNodesWithinDistance(node, aoe); CheckCursorCount(list.Count); } } for(int i=0; i> grid=GridManager.GetGrid(); int count=0; for(int x=0; x=fogList.Count) AddElement(GridManager.IsHexGrid() ? hexFog : sqFog, fogList); fogList[count].position=grid[x][z].GetPos(); fogList[count].gameObject.SetActive(true); count+=1; } } for(int i=count; ihexDeployList.Count){ //~ int count=nList.Count-hexDeployList.Count; //~ for(int i=0; i nList){ instance._ShowDeployment(nList); } public void _ShowDeployment(List nList){ if(GridManager.IsHexGrid()){ if(nList.Count>hexDeployList.Count){ int count=nList.Count-hexDeployList.Count; for(int i=0; isqDeployList.Count){ int count=nList.Count-sqDeployList.Count; for(int i=0; i nList){ instance._ShowMovable(nList); } public void _ShowMovable(List nList){ HideAbility(); if(GridManager.IsHexGrid()){ if(nList.Count>hexMovableList.Count){ int count=nList.Count-hexMovableList.Count; for(int i=0; isqMovableList.Count){ int count=nList.Count-sqMovableList.Count; for(int i=0; i cachedHostileList=new List(); public static void ShowHostile(List nList){ instance._ShowHostile(nList); } public void _ShowHostile(List nList, bool cacheList=true){ HideAbility(); if(GridManager.IsHexGrid()){ if(nList.Count>hexHostileList.Count){ int count=nList.Count-hexHostileList.Count; for(int i=0; isqHostileList.Count){ int count=nList.Count-sqHostileList.Count; for(int i=0; i nList){ instance._PreviewHostile(nList); } public void _PreviewHostile(List nList){ previewingHostile=true; _ShowHostile(nList, false); } public static void ClearPreviewHostile(){ if(!previewingHostile) return; previewingHostile=false; ShowHostile(instance.cachedHostileList); } public static void ShowAbility(List nList){ instance._ShowAbility(nList); } public void _ShowAbility(List nList){ HideNormal(); if(GridManager.IsHexGrid()){ if(nList.Count>hexAbilityList.Count){ int count=nList.Count-hexAbilityList.Count; for(int i=0; isqAbilityList.Count){ int count=nList.Count-sqAbilityList.Count; for(int i=0; i tgtList=null, bool activeState=false, float scale=1){ Transform newItem=(Transform)Instantiate(prefab); newItem.localScale*=GridManager.GetNodeSize(false) * scale; newItem.parent=transform; newItem.gameObject.SetActive(activeState); if(tgtList!=null) tgtList.Add(newItem); return newItem; } } }