127 lines
3.4 KiB
C#
127 lines
3.4 KiB
C#
// Placeholder for CDlgTeamMate. Minimal script for prefabs (e.g. Teamate.prefab) that reference it; real UI later.
|
|
|
|
using System.Collections.Generic;
|
|
using BrewMonster;
|
|
using BrewMonster.Managers;
|
|
using BrewMonster.Network;
|
|
using BrewMonster.Scripts;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using System;
|
|
|
|
namespace BrewMonster.UI
|
|
{
|
|
public class DlgTeamMate : AUIDialog
|
|
{
|
|
private const int CDLGTEAMMATE_ST_MAX = 10;
|
|
|
|
[Header("Display Team List")]
|
|
[SerializeField] private Image imgProf;
|
|
[SerializeField] private TMP_Text m_pTxtCharName;
|
|
[SerializeField] private TMP_Text m_pTxtLv;
|
|
[SerializeField] private Image m_PrgsHP;
|
|
[SerializeField] private Image m_PrgsMP;
|
|
[SerializeField] private Image m_pImgForce;
|
|
|
|
[Header("Status Icons")]
|
|
[SerializeField] private Image[]m_pImgST = new Image[CDLGTEAMMATE_ST_MAX];
|
|
|
|
private int m_idMember;
|
|
private int m_lastForceID;
|
|
|
|
public override void Awake()
|
|
{
|
|
base.Awake();
|
|
// Registration as Win_TeamMate1…10 can be done when real implementation is added
|
|
}
|
|
|
|
public void UpdateMemberDisplay(CECTeamMember member)
|
|
{
|
|
if (member == null)
|
|
{
|
|
CloseDialogue();
|
|
return;
|
|
}
|
|
|
|
m_idMember = member.GetCharacterID();
|
|
Show(true);
|
|
|
|
if (m_pTxtCharName != null)
|
|
{
|
|
m_pTxtCharName.text = member.GetName();
|
|
}
|
|
|
|
if (m_pTxtLv != null)
|
|
{
|
|
m_pTxtLv.text = $"Cấp {member.GetLevel()}";
|
|
}
|
|
|
|
if (m_PrgsHP != null)
|
|
{
|
|
int maxHP = member.GetMaxHP();
|
|
int curHP = member.GetCurHP();
|
|
float hpPercent = maxHP > 0 ? (float)curHP / maxHP : 0f;
|
|
m_PrgsHP.fillAmount = Mathf.Clamp01(hpPercent);
|
|
}
|
|
|
|
if (m_PrgsMP != null)
|
|
{
|
|
int maxMP = member.GetMaxMP();
|
|
int curMP = member.GetCurMP();
|
|
float mpPercent = maxMP > 0 ? (float)curMP / maxMP : 0f;
|
|
m_PrgsMP.fillAmount = Mathf.Clamp01(mpPercent);
|
|
}
|
|
|
|
UpdateProfessionIcon(member.GetProfession());
|
|
|
|
RefreshForceStatus(member);
|
|
}
|
|
|
|
private void UpdateProfessionIcon(int profession)
|
|
{
|
|
if(imgProf == null) return;
|
|
|
|
var gameRun = EC_Game.GetGameRun();
|
|
if(gameRun == null) return;
|
|
|
|
imgProf.gameObject.SetActive(profession >= 0);
|
|
}
|
|
|
|
public void RefreshForceStatus(CECTeamMember member)
|
|
{
|
|
if(m_pImgForce == null) return;
|
|
|
|
int forceId = member != null ? member.GetForce() : 0;
|
|
|
|
if (forceId == m_lastForceID)
|
|
return;
|
|
|
|
m_lastForceID = forceId;
|
|
|
|
if (forceId == 0)
|
|
{
|
|
m_pImgForce.sprite = null;
|
|
m_pImgForce.gameObject.SetActive(false);
|
|
return;
|
|
}
|
|
|
|
var host = GetHostPlayer();
|
|
if (host == null)
|
|
return;
|
|
|
|
m_pImgForce.gameObject.SetActive(true);
|
|
}
|
|
|
|
internal void SetMemberID(int v)
|
|
{
|
|
m_idMember = v;
|
|
}
|
|
|
|
internal int GetMemberID()
|
|
{
|
|
return m_idMember;
|
|
}
|
|
}
|
|
}
|