This commit is contained in:
vuong dinh hoang
2026-05-31 14:18:44 +07:00
parent e8b8153d91
commit 87cea0adcb
4 changed files with 191 additions and 84 deletions
@@ -1,59 +1,118 @@
#if UNITY_EDITOR || DEVELOPMENT_BUILD
using System;
using System.IO;
using System.Text;
using UnityEngine;
namespace BrewMonster
{
/// <summary>NDJSON debug session logger (agent instrumentation).</summary>
public static class DebugSessionLog
{
const string LogPath = @"c:\Hoang\PW\debug-a9c674.log";
const string SessionId = "a9c674";
public static void Write(string location, string message, string hypothesisId, DebugSessionPayload data, string runId = "pre-fix")
{
try
{
var ts = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
var dataJson = data != null ? JsonUtility.ToJson(data) : "{}";
var line = $"{{\"sessionId\":\"{SessionId}\",\"runId\":\"{runId}\",\"hypothesisId\":\"{hypothesisId}\",\"location\":\"{Escape(location)}\",\"message\":\"{Escape(message)}\",\"data\":{dataJson},\"timestamp\":{ts}}}\n";
File.AppendAllText(LogPath, line, Encoding.UTF8);
}
catch { /* ignore */ }
}
static string Escape(string s) => (s ?? "").Replace("\\", "\\\\").Replace("\"", "\\\"");
}
[Serializable]
public class DebugSessionPayload
{
public int skillId;
public int hostId;
public int castTargetId;
public int targetId;
public int targetCount;
public bool castInTargets;
public bool alreadyFired;
public int flyClusterCount;
public int flyDelayMs;
public int eventId;
public string flyGfx;
public string prevState;
public string newState;
public int frame;
public float spawnX;
public float spawnY;
public float spawnZ;
public float targetX;
public float targetY;
public float targetZ;
public float radius;
public float offsetMag;
public bool isCluster;
public bool isArea;
}
}
#endif
@@ -150,6 +150,7 @@ namespace BrewMonster.UI
// Իв / Reset dialog with all rank/skill sub dialogs
public void ResetDialog()
{
m_skillSubDialogs.RemoveAll(item => item == null);
m_skillSubDialogsMap.Clear();
m_skillSubCount = 0;
m_curBottom = m_originBottom;
@@ -228,15 +229,16 @@ namespace BrewMonster.UI
// ޸ijһ״̬ / Refresh a single skill sub dialog
private void UpdateOneSubDlg(int skillID)
{
BMLogger.LogError("UpdateOneSubDlg");
if (!m_skillSubDialogsMap.TryGetValue(skillID, out var pSub))
{
BMLogger.LogError($"[SkillSubList] UpdateOneSubDlg missing map entry skillId={skillID}");
return;
}
CDlgSkillSubListItem subListItem = pSub;
if (subListItem == null)
{
BMLogger.LogError($"[SkillSubList] UpdateOneSubDlg subListItem null skillId={skillID} poolCount={m_skillSubDialogs.Count} shown={m_skillSubCount}");
return;
}
subListItem.UpdateSkill(skillID);
@@ -267,26 +269,63 @@ namespace BrewMonster.UI
// һܶԻ򣬵øúUpdateOneSubDlg / Add a skill sub dialog then update it
private void AddSkillSubDlg(int skillID, int rankID)
{
BMLogger.LogError("HoangDev: AddSkillSubDlg(int skillID, int rankID)");
if (m_pSubSkill == null || m_contentRoot == null)
{
BMLogger.LogError($"[SkillSubList] AddSkillSubDlg aborted skillId={skillID} subSkillTpl={m_pSubSkill != null} contentRoot={m_contentRoot != null}");
return;
}
CDlgSkillSubListItem curSubSkill = AcquireSkillSubDialog(skillID, rankID);
if (curSubSkill == null)
{
return;
}
if (m_skillSubCount >= m_skillSubDialogs.Count)
{
CDlgSkillSubListItem pSubSkill = Instantiate(m_pSubSkill, m_rankSubDialogs[rankID].transform);
m_skillSubDialogs.Add(pSubSkill);
}
CDlgSkillSubListItem curSubSkill = m_skillSubDialogs[m_skillSubCount];
curSubSkill?.SetHighlight(false);
curSubSkill.SetHighlight(false);
m_skillSubDialogsMap[skillID] = curSubSkill;
m_skillSubCount++;
UpdateOneSubDlg(skillID);
}
private CDlgSkillSubListItem AcquireSkillSubDialog(int skillID, int rankID)
{
while (m_skillSubCount < m_skillSubDialogs.Count)
{
CDlgSkillSubListItem pooled = m_skillSubDialogs[m_skillSubCount];
if (pooled != null)
{
return pooled;
}
m_skillSubDialogs.RemoveAt(m_skillSubCount);
}
if (!m_rankSubDialogs.TryGetValue(rankID, out AUISubDialog rankSub) || rankSub == null)
{
BMLogger.LogError($"[SkillSubList] rank dialog missing rankId={rankID} allocRank={m_bAllocRankDlgs} rankDialogs={m_rankSubDialogs.Count}");
if (!m_bAllocRankDlgs)
{
InitRankDlgs();
}
if (!m_rankSubDialogs.TryGetValue(rankID, out rankSub) || rankSub == null)
{
BMLogger.LogError($"[SkillSubList] cannot instantiate skill item skillId={skillID} rankId={rankID}");
return null;
}
}
CDlgSkillSubListItem created = Instantiate(m_pSubSkill, rankSub.transform);
if (created == null)
{
BMLogger.LogError($"[SkillSubList] Instantiate returned null skillId={skillID} rankId={rankID} template={m_pSubSkill.name}");
return null;
}
m_skillSubDialogs.Add(created);
return created;
}
// ijһӦмԻ / Add dialogs for one rank
private void AddDlgsOfOneRank(CECTaoistRank taoistRank)
{
@@ -402,11 +441,15 @@ namespace BrewMonster.UI
Destroy(kv.Value.gameObject);
}
m_rankSubDialogs.Clear();
m_bAllocRankDlgs = false;
foreach (var dlg in m_skillSubDialogs)
{
if (dlg != null)
{
Destroy(dlg.gameObject);
}
}
m_skillSubDialogs.Clear();
m_skillSubDialogsMap.Clear();
@@ -422,8 +465,7 @@ namespace BrewMonster.UI
if (isActiveAndEnabled)
{
InitRankDlgs();
FitSize();
ShowLastSelectedSkill();
ResetDialog();
}
}
@@ -167,13 +167,26 @@ namespace BrewMonster
public void UpdateSkill(int skillID)
{
if (m_skillIconImgPic == null || m_skillNameLbl == null || skillLevel == null)
{
BMLogger.LogError($"[SkillSubList] UpdateSkill missing refs skillId={skillID} icon={m_skillIconImgPic != null} nameLbl={m_skillNameLbl != null} levelLbl={skillLevel != null} go={name}");
return;
}
var uiMan = CECUIManager.Instance?.GetInGameUIMan();
if (uiMan == null)
{
BMLogger.LogError($"[SkillSubList] UpdateSkill InGameUIMan null skillId={skillID}");
return;
}
CECHostSkillModel model = CECHostSkillModel.Instance;
m_skillID = skillID;
m_curLevel = model.GetSkillCurrentLevel(m_skillID);
enumSkillLearnedState learnedState = model.GetSkillLearnedState(m_skillID);
var spriteName = model.GetSkillIcon(skillID);
var slot = CECUIManager.Instance.GetInGameUIMan().SetCover(m_skillIconImgPic, spriteName, EC_GAMEUI_ICONS.ICONS_SKILL);
var slot = uiMan.SetCover(m_skillIconImgPic, spriteName, EC_GAMEUI_ICONS.ICONS_SKILL);
if (slot is AUIImagePicture picture)
{
picture.SetSkillId(skillID);
@@ -229,14 +242,7 @@ namespace BrewMonster
{
skillName += ACString(GetStringFromTable(11322));
}*/
if (m_skillNameLbl == null)
{
BMLogger.LogError("HoangDev: CDlgSkillSubListItem m_skillNameLbl is null for skillID " + skillID);
}
else
{
this.name = "Item_"+m_skillID;
}
name = "Item_" + m_skillID;
m_skillNameLbl.text = skillName;
UpdateUpgradeBtn();
@@ -190,7 +190,7 @@ namespace PerfectWorld.UI.MiniMap
if (_txtSystemTime != null)
_txtSystemTime.text = strText;
BMLogger.Log($"[Cuong] {strText}");
// BMLogger.Log($"[Cuong] {strText}");
}
/// <summary>