using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PlayerInfomation : MonoBehaviour { Character player; InputController input; Inventory inven; public void OnInitialized(MapManager mapManager) { player = mapManager.player.character; player.ec.Remove(OnEvent); player.ec.Add(OnEvent); input = player.GetComponent(); inven = mapManager.player.inven; inven.ec.Remove(OnEvent); inven.ec.Add(OnEvent); } void OnEvent(int type, object value) { switch((Character.State)type) { case Character.State.HP_Change: HPDraw(); break; case Character.State.Inventory: HoldDraw((ItemData)value); break; case Character.State.Status: Status(); break; } } public Text txtHP; public List hearts; public List armorHearts; public Color colorAH; void HPDraw() { txtHP.text = $"{player.HP}/{player.HP_Max}"; //int HP_Max = (int)(player.HP_Max / 100f); //int HP = (int)(player.HP / 100f); //int AH = (int)(player.AH / 100f); int HP_Max = player.HP_Max; int HP = player.HP; int AH = player.AH; int cntMax = (int)(HP_Max / 2f); int cnt = (int)(HP / 2f); int cnt2 = (int)(HP % 2f); int i = 0; for(; i < hearts.Count; i++) { hearts[i].gameObject.SetActive(true); if (i < cnt) hearts[i].sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"itemHeart2"); else if (cnt2 == 1) { hearts[i].sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"itemHeart1"); cnt2 = 0; } else if (i < cntMax) hearts[i].sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"itemHeartEmpty"); else break; } cntMax += (int)(AH / 2f); cnt = (int)(AH / 2f); cnt2 = (int)(AH % 2f); for (; i < hearts.Count; i++) { hearts[i].gameObject.SetActive(true); if (0 < cnt--) hearts[i].sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"itemArmorHeart2"); else if (cnt2 == 1) { hearts[i].sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"itemArmorHeart1"); cnt2 = 0; } else if (i < cntMax) hearts[i].sprite = SpriteManager.Instance.SpriteGet($"AtlasIngame", $"itemArmorHeartEmpty"); else hearts[i].gameObject.SetActive(false); } } [Space(10)] public Text txtValue_Coin; public Text txtValue_Bomb; public Text txtValue_Key; void HoldDraw(ItemData item) { switch(item.idx) { case "Coin": txtValue_Coin.text = $"{item.hold}"; break; case "Bomb": txtValue_Bomb.text = $"{item.hold}"; break; case "Key": txtValue_Key.text = $"{item.hold}"; break; } } [Space(10)] public Text txtStatus; [Space(10)] public GameObject uiPause; void Status() { string txt = string.Empty; txt = $"ATK : {player.CalculateATK()}({player.ATK}*{player.ATK_PER})\n"; txt += $"ATK SPD : {player.SPDATK_PER}\n"; float ATK_DLA = player.CalculateAttackDelay(); string str = ATK_DLA == 0.3f ? "ff0000" : "ffffff"; txt += $"ATK DLA : {ATK_DLA}({player.DLAATK}*{player.DLAATK_PER})\n"; txt += $"RANGE : {player.RANGE + input.fire.prefabProjectile.distance}({input.fire.prefabProjectile.distance} + {player.RANGE})\n"; float MOVE_SPD = player.CalculateMoveSpeed(); str = MOVE_SPD == 60 ? "ff0000" : "ffffff"; txt += $"MOVE SPD : {MOVE_SPD}({player.SPDMOVE}*{player.SPDMOVE_PER})\n"; txtStatus.text = txt; } static public bool TEST = false; void Update() { if (Input.GetKeyDown(KeyCode.Z)) { txtStatus.gameObject.SetActive(TEST = !TEST); EventManager.Instance.Invoke("TestMode", TEST); } if (Input.GetKeyDown(KeyCode.Escape)) uiPause.gameObject.SetActive(true); } }