Super Knight : Enter the Dungeon
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.2 KiB

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<DropItem> 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;
}
}
}