using System.Collections.Generic;
using asap.core;
using cfg;
using GameCore;
using UnityEngine;
namespace Event1v1Battle.Data
{
///
/// 1v1扇耳光大赛数据扩展方法(仅包含纯数据查询)
///
public static class Event1v1BattleSlapDataEx
{
#region 攻击间隔
///
/// 获取下次NPC攻击的时间间隔(秒),对 全表按 Weight 加权随机
///
public static int GetNextAttackInterval(this Event1v1BattleSlapData data)
{
return data.Tables.TbEventStageRobotAttackInterval.PickRandomAttackInterval();
}
#endregion
#region 关卡数据
///
/// 获取下一关ID
///
public static int GetNextStageID(this Event1v1BattleSlapData data)
{
return data.StageConfig?.NextStage ?? data.InitConfig.InitialStage;
}
public static int GetAllStageCount(this Event1v1BattleSlapData data)
{
return data.GetAllStage().Count;
}
public static int GetStageIndex(this Event1v1BattleSlapData data, EventSlapStage stage)
{
return data.GetAllStage().IndexOf(stage);
}
public static int GetCurrentStageIndex(this Event1v1BattleSlapData data)
{
return data.GetStageIndex(data.StageConfig);
}
public static List GetAllStage(this Event1v1BattleSlapData data)
{
var stages = new List();
var stageIds = new HashSet();
EventSlapStage stageConfig = data.Tables.TbEventSlapStage.GetOrDefault(data.InitConfig.InitialStage);
if (stageConfig == null)
{
Debug.LogError($"[EventSlap] Initial stage {data.InitConfig.InitialStage} not found");
return stages;
}
stages.Add(stageConfig);
stageIds.Add(stageConfig.ID);
while (!stageIds.Contains(stageConfig.NextStage))
{
stageConfig = data.Tables.TbEventSlapStage.GetOrDefault(stageConfig.NextStage);
stages.Add(stageConfig);
stageIds.Add(stageConfig.ID);
}
return stages;
}
#endregion
#region 奖励数据
public static List GetStageRewards(this Event1v1BattleSlapData data, EventSlapStage stage)
{
if (stage != null && stage.DropId != 0)
return GContext.container.Resolve()
.GetItemDataByDropIdAndTypeLureInflation(data.InflationRate, stage.DropId);
Debug.LogWarning($"stage is null");
return new List();
}
///
/// 获取当前关卡的奖励
///
public static List GetCurrentStageRewards(this Event1v1BattleSlapData data)
{
return data.GetStageRewards(data.StageConfig);
}
public static List> GetAllStageRewards(this Event1v1BattleSlapData data)
{
var rewards = new List>();
foreach (var stage in data.GetAllStage())
rewards.Add(data.GetStageRewards(stage));
return rewards;
}
#endregion
#region 菠菜配置
///
/// 获取菠菜配置
///
public static EventSlapSpinach GetSpinachConfig(this Event1v1BattleSlapData data, int spinachID)
{
var spinachConfig = data.Tables.TbEventSlapSpinach.GetOrDefault(spinachID);
if (spinachConfig == null)
{
Debug.LogError($"[EventSlap] Spinach config not found for ID: {spinachID}");
return null;
}
return spinachConfig;
}
#endregion
}
}