using System; namespace Event1v1Battle.Data { /// /// 1v1扇耳光大赛活动表现数据 /// 用于TV动画展示,与真实数据分离 /// [Serializable] public class Event1v1BattleSlapPresentationData { /// /// 倍率 /// public int Multiplier; /// /// 当前关卡ID(表现用) /// public int CurrentStageID; /// /// NPC名称(表现用) /// public string NpcName; /// /// NPC头像(表现用) /// public string NpcIcon; /// /// NPC当前HP(表现用) /// public int NpcHp; /// /// 玩家出手后、NPC 反击与续命 重置前的敌人 HP。 /// TV 玩家段扣血动画用;< 0 表示未设置,回退 。 /// public int NpcHpAfterPlayerAttack = -1; /// /// 最大HP(表现用) /// public int MaxHp; /// /// 玩家HP(表现用) /// public int PlayerHp; /// /// 玩家最大HP(表现用) /// public int PlayerMaxHp; /// /// 是否击杀了NPC /// public bool KilledNpc; /// /// 是否触发了进入下一关 /// public bool StageCompleted; /// /// 下一关ID(StageCompleted为true时有效) /// public int NextStageId; /// /// 是否正在进行表现 /// public bool IsPlayAttacking = false; /// /// 是否触发了npc攻击 /// public bool IsNpcAttacking = false; /// /// 是否击杀了玩家 /// public bool KilledPlayer = false; /// /// NPC攻击伤害(表现用) /// 用于TV动画显示HP变化 /// public int AttackDamage = 0; public int CanQuality; /// /// NPC 本次攻击对应的罐头品质(与玩家攻击同源规则),用于 TV 轻/重击 Timeline。 /// public int NpcAttackCanQuality; public bool IsNpcBuffValid; /// /// 是否因超时(30分钟倒计时结束)判定玩家战败 /// public bool IsTimeoutDefeat; /// /// 是否触发双方战败(预留) /// public bool IsBothDefeated; /// /// TV 战败关界面后主界面扣心 FX 用:扣心前的命数(存档已是扣后值)。 不会清空此项,避免 ClosePanel 清表现后读不到。 /// public int PendingMainPanelHeartVisualBefore; public bool IsPresenting => IsNpcAttacking || IsPlayAttacking || IsTimeoutDefeat || IsBothDefeated; public void SetPendingMainPanelHeartLossVisual(int lifeCountBeforeLoss) { if (lifeCountBeforeLoss > 0) PendingMainPanelHeartVisualBefore = lifeCountBeforeLoss; } public void ClearPendingMainPanelHeartLossVisual() { PendingMainPanelHeartVisualBefore = 0; } /// /// 清理数据(不含 ,供主面板在 TV 关闭后消费) /// public void Clear() { KilledNpc = false; StageCompleted = false; NextStageId = 0; IsPlayAttacking = false; IsNpcAttacking = false; KilledPlayer = false; AttackDamage = 0; CurrentStageID = 0; NpcName = string.Empty; NpcIcon = string.Empty; NpcHp = 0; NpcHpAfterPlayerAttack = -1; MaxHp = 0; PlayerHp = 0; PlayerMaxHp = 0; CanQuality = 0; NpcAttackCanQuality = 0; IsTimeoutDefeat = false; IsBothDefeated = false; IsNpcBuffValid = false; } /// /// 从真实数据同步基本信息 /// public void SyncFromRealData(Event1v1BattleSlapData realData) { CurrentStageID = realData.CurrentStageID; NpcName = realData.NpcName; NpcIcon = realData.NpcIcon; NpcHp = realData.NpcHp; MaxHp = realData.MaxHp; PlayerHp = realData.PlayerHp; PlayerMaxHp = realData.MaxHp; } } }