1
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
using Assets.MyGame.Scripts.Net.APIResponses.Enum;
|
||||
using Assets.MyGame.Scripts.Net.WebResponses;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
/// 烈焰风暴 Boss。
|
||||
/// 死亡流程:正常打死 → 在死亡位置爆炸 → 范围内普通鱼死亡 → 加分滚动。
|
||||
///
|
||||
/// ⭐ 特殊:爆奖分两次(爆炸杀鱼 + 爆奖红包各 2 次)。
|
||||
/// 第一次死亡时【不从鱼列表删除 Boss】,等爆奖流程(LieYanFengBaoEvent)全部结束后,
|
||||
/// 由 Event 通知 Boss 回收并从字典移除,避免爆奖过程中 Boss 被提前移除导致后续逻辑找不到。
|
||||
/// </summary>
|
||||
public class LieYanFengBao_BOSS : MonsterControl_BossBase
|
||||
{
|
||||
/// <summary>爆奖事件引用(死亡时赋值,供外部检查爆奖是否结束)</summary>
|
||||
[System.NonSerialized]
|
||||
public LieYanFengBaoEvent currEvent;
|
||||
|
||||
public override void DieFish(RoomKillNotice obj = null)
|
||||
{
|
||||
base.DieFish(obj);
|
||||
|
||||
// 标准爆奖事件初始化
|
||||
action_effect_DieAward = (o) =>
|
||||
{
|
||||
// 爆奖预制体已由 CreateFishManager 在 monster.transform.position(死亡位置)创建
|
||||
Vector3 diePos = transform.position;
|
||||
Debug.Log($"[LieYanFengBao] action_effect_DieAward: 鱼位置={diePos} 爆奖预制体位置={o.transform.position}");
|
||||
|
||||
// ⭐ 不在这里调用 Id_DieFish_NotFX 回收 Boss!
|
||||
// 烈焰风暴爆奖分两次,爆奖过程中 Boss 必须保留在鱼列表里,
|
||||
// 否则爆奖协程还在跑时 Boss 被移除会出很多问题(锁定、显示等都找不到)。
|
||||
// Boss 的回收由 LieYanFengBaoEvent.die() 时回调通知。
|
||||
|
||||
if (obj == null) return;
|
||||
foreach (var item in CreateFishManager.Instance.currGameType.list_Sits)
|
||||
{
|
||||
if (item.user == obj.userId)
|
||||
{
|
||||
var v = o.GetComponent<BJEventBase>();
|
||||
|
||||
// 先设置死亡位置,再 Init(Init 里会用 explosionCenter 恢复位置)
|
||||
var evt = v as LieYanFengBaoEvent;
|
||||
if (evt != null)
|
||||
{
|
||||
evt.explosionCenter = diePos;
|
||||
// ⭐ 把 Boss 引用交给 Event,爆奖结束时由 Event 通知 Boss 回收
|
||||
evt.bossCtrl = this;
|
||||
currEvent = evt;
|
||||
Debug.Log($"[LieYanFengBao] 设置爆炸中心(死亡位置)={diePos}");
|
||||
}
|
||||
|
||||
v.Init(
|
||||
obj.gold, // goldCount
|
||||
item.posID, // posID(击杀者座位)
|
||||
obj.skillsGold, // paobei(炮倍)
|
||||
obj.fishScore, // fishScore(底分)
|
||||
obj.beishu, // beishu(总倍数)
|
||||
JiaFen, // action<int>(加分回调)
|
||||
() => { v.obj = obj.param; } // 把服务端爆奖参数交给事件类
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user