using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class BeautyMMTravelCell : MonoBehaviour { [SerializeField] Button clickGirdBtn; //根据状态决定 [SerializeField] Image itemImage; [SerializeField] Text multiText; [SerializeField] Image horseImg; [SerializeField] Image notOpenImg; [SerializeField] Image crackImg; // 破碎图标 [SerializeField] UIEffectPlayer openEffect; [SerializeField] UIEffectPlayer boomEffect; [SerializeField] UIEffectPlayer gateEffect; [SerializeField] RotationTween restartTween; public void Display(int index) { restartTween.Stop(); restartTween.SetEndState(); Int2 girdPos = BeautyMMManager.Instance.ChangeIndexToGrid(index); var grid = BeautyMMManager.Instance.GetGrid(girdPos); clickGirdBtn.AddListener(() => { ClickGird(girdPos, grid); }); if (grid == null) { notOpenImg.SetActive(true); itemImage.SetActive(false); horseImg.SetActive(false); crackImg.SetActive(false); gateEffect.SetActive(false); return; } ////状态:0-未点击;1-已开启;2-裂纹 if (grid.State == 0 || grid.State == 2) { notOpenImg.SetActive(true); itemImage.SetActive(false); horseImg.SetActive(false); crackImg.SetActive(grid.State == 2); gateEffect.SetActive(false); return; } notOpenImg.SetActive(false); // 99 - 代表该格是 传送门 // 100 - 代表该格是 空格子 // 101 - 代表该格是 马匹 // 大于200 对应表里的 物品 if (grid.EventID == 99) { gateEffect.SetActive(true); gateEffect.Play(); itemImage.SetActive(false); horseImg.SetActive(false); crackImg.SetActive(false); } else if (grid.EventID == 100) { itemImage.SetActive(false); horseImg.SetActive(false); crackImg.SetActive(false); gateEffect.SetActive(false); } else if (grid.EventID == 101) { itemImage.SetActive(false); horseImg.SetActive(true); crackImg.SetActive(false); gateEffect.SetActive(false); } else if (grid.EventID > 200) { itemImage.SetActive(true); horseImg.SetActive(false); crackImg.SetActive(false); gateEffect.SetActive(false); itemImage.SetItemSprite(TravelEventConfig.Get(grid.EventID).AwardItemID); if (grid.Multi > 1) { multiText.text = $"x{grid.Multi}"; } else { multiText.text = ""; } } else { itemImage.SetActive(false); horseImg.SetActive(false); crackImg.SetActive(false); gateEffect.SetActive(false); } if (BeautyMMManager.Instance.openChangeGridList.Contains(girdPos)) { openEffect.Play(); } } // 99 - 代表该格是 传送门 // 100 - 代表该格是 空格子 // 101 - 代表该格是 马匹 // 大于200 对应表里的 物品 void ClickGird(Int2 girdPos, TravelGrid grid) { if (Time.time - restartTime < 0.5f) { return; } ////状态:0-未点击;1-已开启;2-裂纹 if (grid.State == 0 || grid.State == 2) { SoundPlayer.Instance.PlayUIAudio(25); if (BeautyMMManager.Instance.m_Energy == 0) { SysNotifyMgr.Instance.ShowTip("BeautyMM4"); TimingGiftManager.Instance.TryAddWhenInsufficient(5, BeautyMMManager.Instance.m_Energy, 1); return; } } // 如果正好消耗完,不触发固定概率的判定 if (!TimingGiftManager.Instance.TryAddWhenExactConsumption(5, BeautyMMManager.Instance.m_Energy, 1)) { TimingGiftManager.Instance.TryAddWithFixedProbabilityWhenSufficient(5, BeautyMMManager.Instance.m_Energy, 1); } if (grid.EventID == (int)GirdEventType.Empty) { // 空格子 return; } if (grid.EventID < (int)GirdEventType.Door && grid.EventID > 0) { //判断建筑是否都开全了没 if (!BeautyMMManager.Instance.CanOpenBuild()) { SysNotifyMgr.Instance.ShowTip("BeautyMM3"); return; } } if (grid.EventID == (int)GirdEventType.Horse) { boomEffect.Play(); } var pack = new CB040_tagCSTravelClick(); pack.Row = (byte)girdPos.x; pack.Col = (byte)girdPos.y; GameNetSystem.Instance.SendInfo(pack); BeautyMMManager.Instance.clickGirdPos = girdPos; if (grid.EventID == (int)GirdEventType.Door) { BeautyMMManager.Instance.isClickDoor = true; } } float restartTime = 0; public void RestartAnim() { restartTween.Play(); restartTime = Time.time; } }