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