NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Reward/FightRewardManager.cs

178 lines
4.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<int, List<DataRewards>> _rewardsMap = new Dictionary<int, List<DataRewards>>();
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<FightRewardPreviewData> GetItemID(int rewardID)
{
List<FightRewardPreviewData> preDataList = new List<FightRewardPreviewData>();
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<DataRewards>());
}
_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<int> GetRewardItems(int levelID)
{
return null;
}
}