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(); } }