using System.Collections; using System.Collections.Generic; using cfg.ActorCfg; using Framework; using Gameplay.Level; using Gameplay.Net; public class FightRewardManager { private static FightRewardManager _instance; private Dictionary> _rewardsMap = new Dictionary>(); public static FightRewardManager Instance { get { if (_instance == null) { _instance = new FightRewardManager(); _instance.Init(); } return _instance; } } public enum FightResult { Success, Fail } public static FightResult CurFightResult; public struct FightRewardPreviewData { public int itemID; public int num; } //奖励的类型 public enum RewardType { Normal, //常规奖励 First, //首次通关奖励 Star1, //一星奖励 Star2, //二星奖励 Star3 //三星奖励 } private void Init() { TranslateRewardDataList(); } private void Release() { _rewardsMap.Clear(); _instance = null; } //传入itemIDArray,作为需要输出的道具ID数组 private void ParseRewardList(int[] rewards, int[] itemIDArray) { if (rewards == null || rewards.Length <= 0) { DebugUtil.LogError("==== 需要解析的将鼓励列表无内容,请检查!!! ===="); return; } for (int i = 0; i < rewards.Length; i++) { var rewardData = GetItemID(rewards[i]); foreach (var item in rewardData) { itemIDArray[itemIDArray.Length + 1] = item.itemID; } } } private List GetItemID(int rewardID) { List preDataList = new List(); var rewardDataL = _rewardsMap[rewardID]; for (int i = 0; i < rewardDataL.Count; i++) { var type = rewardDataL[i].RewardType; var preData = new FightRewardPreviewData() { itemID = rewardDataL[i].ItemID }; switch (rewardDataL[i].RewardType) { case (cfg.ActorCfg.RewardType.Ensure): { preData.num = rewardDataL[i].MaxCount; break; } case (cfg.ActorCfg.RewardType.WeightRandom): { preData.num = -1; break; } } preDataList.Add(preData); } return preDataList; } //解析一遍配置表内容 private void TranslateRewardDataList() { var rewardDataList = TableManager.Instance.Tables.Rewards.DataList; _rewardsMap.Clear(); int curID = -1; for (int i = 0; i < rewardDataList.Count; i++) { var curReward = rewardDataList[i]; if (curReward.Id != curID) { curID = curReward.Id; _rewardsMap.Add(curID, new List()); } _rewardsMap[curID].Add(curReward); } } private int[] GetLevelRewards(int levelID, RewardType rewardType) { var levelData = TableManager.Instance.Tables.Level.GetOrDefault(levelID); if (levelData != null) { int[] rewards = null; switch (rewardType) { case (RewardType.Normal): { rewards = levelData.NormalRewardID; break; } case (RewardType.First): { rewards = levelData.FristRewardID; break; } case (RewardType.Star1): { rewards = levelData.StarRewardID1; break; } case (RewardType.Star2): { rewards = levelData.StarRewardID2; break; } case (RewardType.Star3): { rewards = levelData.StarRewardID3; break; } } return rewards; } return null; } /****** 公有方法 ******/ public List GetRewardItems(int levelID) { return null; } }