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.
134 lines
4.2 KiB
134 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; |
|
} |
|
} |
|
}
|
|
|