Files
ft/Client/Assets/Scripts/Event1v1Battle/Data/Event1v1BattleSlapData.cs
2026-06-29 21:18:33 +08:00

137 lines
3.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using cfg;
using Activity;
using Newtonsoft.Json;
namespace Event1v1Battle.Data
{
/// <summary>
/// 1v1扇耳光大赛活动数据
/// </summary>
public class Event1v1BattleSlapData : AEventData
{
#region
/// <summary>
/// 历史关卡数据id胜利or失败
/// </summary>
public Dictionary<int, bool> StageHistory=new Dictionary<int, bool>();
/// <summary>
/// 当前关卡ID
/// </summary>
public int CurrentStageID;
/// <summary>
/// 当前轮次
/// </summary>
public int CurrentRoundForm1 = 1;
/// <summary>
/// 玩家剩余命数新轮次重置为3
/// </summary>
public int PlayerLifeCount = 3;
/// <summary>
/// 本轮内已成功付费复活次数;用于从 GlobalConfig.EventSlapIapList 取下标第6次及以后用第5个 id
/// </summary>
public int SlapPaidReviveCount;
public bool IsOnGoing;
#endregion
#region
/// <summary>
/// 玩家当前HP进入关卡时初始化
/// </summary>
public int PlayerHp;
/// <summary>
/// NPC当前HP
/// </summary>
public int NpcHp;
/// <summary>
/// 最大HP
/// </summary>
public int MaxHp;
/// <summary>
/// NPC名称
/// </summary>
public string NpcName;
/// <summary>
/// npc 头像
/// </summary>
public string NpcIcon;
/// <summary>
/// 下次NPC攻击时间戳Unix时间戳
/// </summary>
public long NextAttackTime = 0;
/// <summary>
/// 战斗开始时间戳Unix时间戳用于30分钟倒计时
/// </summary>
public long BattleStartTime = 0;
/// <summary>
/// 需要发奖的关卡id
/// </summary>
public int needSendRewardStageID;
#endregion
#region Free Pack
public bool IsClaimedFreePack;
#endregion
#region
[JsonIgnore]
public EventSlapInit InitConfig =>
Tables.TbEventSlapInit.GetOrDefault(FishingEvent?.RedirectID??0);
[JsonIgnore]
public EventSlapStage StageConfig =>
Tables.TbEventSlapStage.GetOrDefault(CurrentStageID);
#endregion
#region
/// <summary>
/// 是否有剩余生命
/// </summary>
[JsonIgnore]
public bool HasLifeRemaining => PlayerLifeCount > 0;
/// <summary>
/// 是否是第八关(最后一关)
/// </summary>
[JsonIgnore]
public bool IsFinalStage => StageConfig.NextStage == InitConfig.InitialStage;
[JsonIgnore] public bool IsNeedSendReward => needSendRewardStageID > 0;
/// <summary>
/// 是否需要开始新轮次
/// </summary>
public bool ShouldStartNewRound()
{
// 条件1: 第八关结束(胜利或失败)
if (IsFinalStage && (PlayerHp <= 0 || NpcHp <= 0))
return true;
// 条件2: 三条命耗尽
return !HasLifeRemaining;
}
#endregion
}
}