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;
}
}
}