using System.Collections.Generic;
// SkillBase(Buff 部分):Buff 包(HB428 刷新 / HB429 删除)的识别与分发。
public partial class SkillBase
{
///
/// 判断是否为 Buff 相关的包(HB428 或 HB429)
///
protected bool IsBuffPack(GameNetPackBasic pack)
{
return pack is HB428_tagSCBuffRefresh || pack is HB429_tagSCBuffDel;
}
///
/// 处理收集到的 Buff 包列表(HB428 刷新 和 HB429 删除)
///
protected void ProcessBuffPacks(List buffPacks)
{
if (buffPacks == null || buffPacks.Count == 0) return;
foreach (var pack in buffPacks)
{
if (pack is HB428_tagSCBuffRefresh buffRefresh)
{
BattleObject battleObj = battleField.battleObjMgr.GetBattleObject((int)buffRefresh.ObjID);
if (battleObj != null)
{
var buffMgr = battleObj.GetBuffMgr();
if (buffMgr != null) // 命格不有 buff 管理器
{
buffMgr.RefreshBuff(buffRefresh, true);
}
}
}
else if (pack is HB429_tagSCBuffDel buffDel)
{
BattleObject battleObj = battleField.battleObjMgr.GetBattleObject((int)buffDel.ObjID);
if (battleObj != null)
{
var buffMgr = battleObj.GetBuffMgr();
if (buffMgr != null) // 命格不有 buff 管理器
{
buffMgr.RemoveBuff(buffDel, false);
}
}
}
}
}
///
/// 强制分发 Buff 包(用于 ForceFinished 场景)
///
protected void DistributeBuffPacks(List buffPacks)
{
if (buffPacks == null || buffPacks.Count == 0) return;
foreach (var pack in buffPacks)
{
// 【使用 parentRecordAction.innerRecordPlayer】
// 原因:Buff包是技能效果的核心组成部分,应该由SkillRecordAction管理
// 即使是强制分发的情况,也要保持在正确的RecordAction上下文中
PackageRegeditEx.DistributeToRecordAction(pack, ownRecordAction);
}
}
}