137 lines
3.4 KiB
C#
137 lines
3.4 KiB
C#
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
|
||
}
|
||
} |