Files
test/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgTeamMate.cs
T
2026-03-12 16:11:09 +07:00

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