using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class MiniMapItem : MonoBehaviour { public RectTransform rect; public Image imgBG; public Image iconBlkType; public Text txtType; private void OnDisable() { EventManager.Instance.Remove("TestMode", TestMode); } private void OnEnable() { blk = null; imgBG.sprite = spriteNot; imgBG.gameObject.SetActive(false); CHK = false; } [HideInInspector] public MapBlock blk; [HideInInspector] MiniMap miniMap; public void OnInitialized(MiniMap miniMap, MapBlock blk, bool SHOW_PATH) { EventManager.Instance.Add("TestMode", TestMode); this.miniMap = miniMap; this.blk = blk; this.blk.OnDropChanged += DropChanged; transform.SetAsLastSibling(); imgBG.gameObject.SetActive(true); iconBlkType.sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"minimap{blk.blkType}"); iconBlkType.gameObject.SetActive(blk.blkType != MapBlock.Type.None && blk.blkType != MapBlock.Type.Monster); iconBlkType.SetNativeSize(); imgBG.enabled = false; iconBlkType.enabled = false; } bool TEST = false; void TestMode(object value) { TEST = (bool)value; imgBG.enabled = TEST || CHK; iconBlkType.enabled = TEST || CHK; } public Sprite spriteCurrent; public Sprite spriteClear; public Sprite spriteNot; public bool CHK = false; public void MapChanged(MapBlock blk, bool NEAR = true) { if (blk == null || this.blk == null) return; if (NEAR && blk == this.blk) { miniMap.OnNear(this.blk, this.blk.idx); imgBG.sprite = spriteCurrent; } else imgBG.sprite = this.blk.CLEAR ? spriteClear : spriteNot; imgBG.enabled = true; iconBlkType.enabled = true; CHK = true; if (iconBlkType.gameObject.activeSelf) iconBlkType.transform.SetAsLastSibling(); } public void DropChanged(List list) { switch(blk.blkType) { case MapBlock.Type.Empty: case MapBlock.Type.Monster: case MapBlock.Type.None: { if (list != null && 0 < list.Count) { ItemData item = list[list.Count - 1].item; string type = item.type; switch (type) { case "Use": case "Pickup": { switch(item.idx) { case "Heart1": case "Heart2": type = "Heart"; break; case "ArmorHeart1": case "ArmorHeart2": type = "ArmorHeart"; break; case "ManaPotion1": case "ManaPotion2": case "ManaPotion3": type = "ManaPotion"; break; default: type = item.idx; break; } } break; } iconBlkType.sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"minimap{type}"); iconBlkType.gameObject.SetActive(true); iconBlkType.SetNativeSize(); } else { iconBlkType.gameObject.SetActive(false); } } break; } } }