using System;
using System.Collections.Generic;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Cielonos.MainGame.Rewards
{
///
/// Combat 节点奖励配置表。
/// 这里只定义“某类节点的基础奖励”,不处理装备被动、生成位置或领取状态。
///
[CreateAssetMenu(fileName = "CombatRewardProfile", menuName = "Cielonos/Rewards/Combat Reward Profile")]
public class CombatRewardProfile : SerializedScriptableObject
{
[TitleGroup("Rules")]
[ListDrawerSettings(ShowIndexLabels = false, ListElementLabelName = nameof(CombatRewardRule.nodeType))]
public List rules = new();
public IReadOnlyList Resolve(MapNodeType nodeType)
{
CombatRewardRule rule = rules?.FirstOrDefault(item => item != null && item.nodeType == nodeType);
if (rule?.rewards == null || rule.rewards.Count == 0)
{
return Array.Empty();
}
return rule.rewards
.Where(reward => reward != null && reward.count > 0)
.Select(reward => reward.Clone())
.ToList();
}
}
///
/// 单个 MapNodeType 对应的一组基础奖励。
///
[Serializable]
public class CombatRewardRule
{
public MapNodeType nodeType = MapNodeType.MinorBattle;
[ListDrawerSettings(ShowIndexLabels = false)]
public List rewards = new();
}
}