|
|
|
|
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<InputController>();
|
|
|
|
|
|
|
|
|
|
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<Image> hearts;
|
|
|
|
|
public List<Image> 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 : <color=#{str}>{ATK_DLA}</color>({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 : <color=#{str}>{MOVE_SPD}</color>({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);
|
|
|
|
|
}
|
|
|
|
|
}
|