using System; using System.Collections.Generic; using com.fpnn.livedata; using HexGrid.MapHelper; using HexGrid.Math; using TMPro; using UnityEngine; namespace HexGrid { // 看看用来触发事件可行吗 public class HexGridTiler : MonoBehaviour { // private HexTile _tileData; //组件 private Transform _on; private Transform _off; // 坐标显示 private TMP_Text _textCoords; // 调停者 private IHexGridMediator _mediator; // 动画 private Animation _animation; private void Awake() { Log($"Awake ->{gameObject.name}"); // _on = transform.Find("on"); _off = transform.Find("off"); _textCoords = transform.Find("text_coords").GetComponent(); // _animation = GetComponent(); } private void Start() { Log($"Start()-> {gameObject.name}: {_tileData}"); } public void SetMediator(IHexGridMediator mediator) { _mediator = mediator; } public void LoadTileData(HexTile tile) { Log($"LoadTileData() ->{tile}"); _tileData = tile; UpdateName(); UpdateCoordsText(); } private void UpdateCoordsText() { if (_textCoords) { _textCoords.text = _tileData.tileCoords.ToString(); } } private void UpdateName() { // var tileName = $"tile{_tileData.tileCoords}"; var tileName = HexUtils.MakeTileId(_tileData.tileCoords); Log($"UpdateName()-> {tileName}"); gameObject.name = tileName; } // public async void OnHexCellClicked() { if (_tileData == null) { return; } // 放到调停者当中去 if (_tileData.tileStatus == 1) { _animation.Play("rotation"); } _mediator.OnHexCellClicked(_tileData); } public void UpdateVisual() { Log("UpdateVisual -> "); var status = _tileData.tileStatus; if (status == 0) { gameObject.SetActive(false); } else { gameObject.SetActive(true); if (status == 1) { _on.gameObject.SetActive(true); _off.gameObject.SetActive(true); _off.localScale = Vector3.one; _on.localScale = new Vector3(0, 0, 0); _on.rotation = Quaternion.Euler(0,60,270); } else if (status == 2) { _on.gameObject.SetActive(true); _off.gameObject.SetActive(false); _off.localScale = Vector3.zero; } } } private static void Log(object t) { Debug.Log($"HexGridTiler -> {t} "); } } }