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