using System.Collections.Generic;
|
|
// SkillBase(Buff 部分):Buff 包(HB428 刷新 / HB429 删除)的识别与分发。
|
public partial class SkillBase
|
{
|
/// <summary>
|
/// 判断是否为 Buff 相关的包(HB428 或 HB429)
|
/// </summary>
|
protected bool IsBuffPack(GameNetPackBasic pack)
|
{
|
return pack is HB428_tagSCBuffRefresh || pack is HB429_tagSCBuffDel;
|
}
|
|
/// <summary>
|
/// 处理收集到的 Buff 包列表(HB428 刷新 和 HB429 删除)
|
/// </summary>
|
protected void ProcessBuffPacks(List<GameNetPackBasic> 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);
|
}
|
}
|
}
|
}
|
}
|
|
/// <summary>
|
/// 强制分发 Buff 包(用于 ForceFinished 场景)
|
/// </summary>
|
protected void DistributeBuffPacks(List<GameNetPackBasic> buffPacks)
|
{
|
if (buffPacks == null || buffPacks.Count == 0) return;
|
|
foreach (var pack in buffPacks)
|
{
|
// 【使用 parentRecordAction.innerRecordPlayer】
|
// 原因:Buff包是技能效果的核心组成部分,应该由SkillRecordAction管理
|
// 即使是强制分发的情况,也要保持在正确的RecordAction上下文中
|
PackageRegeditEx.DistributeToRecordAction(pack, ownRecordAction);
|
}
|
}
|
}
|