using System.Collections.Generic; using UnityEngine; namespace GFGGame { public class SkillDataManager : SingletonBase { public const int MINE = 0; public const int NPC = 1; public const string SKILL_ADD = "add"; public const string SKILL_MINUS = "minus"; public const string SKILL_BREAK = "break"; public const string SKILL_SHIELD = "shield"; public Dictionary> skillData = new Dictionary>(); public Dictionary>> dicPassivitySkill = new Dictionary>>(); public void Clear() { skillData.Clear(); } public void InitServerData(List skillDatas) { skillData.Clear(); if (skillDatas != null && skillDatas.Count > 0) { foreach (SkillData skillData in skillDatas) { if (!this.skillData.ContainsKey(skillData.cardId)) { this.skillData[skillData.cardId] = new Dictionary(); } this.skillData[skillData.cardId][skillData.skillId] = skillData; } } } public void SetDicPassivitySkillCfg() { if (dicPassivitySkill.Count > 0) return; PassivitySkillCfg[] dataArray = PassivitySkillCfgArray.Instance.dataArray; for (int i = 0; i < dataArray.Length; i++) { if (!dicPassivitySkill.ContainsKey(dataArray[i].cardId)) { dicPassivitySkill[dataArray[i].cardId] = new Dictionary>(); } PassivitySkillCfg passivitySkillCfgs = dataArray[i]; if (!dicPassivitySkill[passivitySkillCfgs.cardId].ContainsKey(passivitySkillCfgs.skillId)) { dicPassivitySkill[passivitySkillCfgs.cardId][passivitySkillCfgs.skillId] = new List(); } dicPassivitySkill[passivitySkillCfgs.cardId][passivitySkillCfgs.skillId].Add(passivitySkillCfgs); } } public void UpSkill(int cardId, int skillId) { if (!this.skillData.ContainsKey(cardId)) { this.skillData[cardId] = new Dictionary(); } if (!this.skillData[cardId].ContainsKey(skillId)) { SkillData skillData = new SkillData(); skillData.cardId = cardId; skillData.skillId = skillId; skillData.lv = 1; this.skillData[cardId][skillId] = skillData; } skillData[cardId][skillId].lv += 1; EventAgent.DispatchEvent(ConstMessage.CARD_UP_SKILL); } //获取npc释放技能顺序 public Dictionary GetNpcSkill() { Dictionary npcSkillDic = new Dictionary(); RoleSkillCfg[] roleSkillCfgs = RoleSkillCfgArray.Instance.dataArray; List arr = new List { 0, 1, 2, 3, 4, 5, 6, 7 }; for (int i = 0; i < roleSkillCfgs.Length; i++) { int partIndex = Random.Range(0, arr.Count); npcSkillDic.Add(arr[partIndex], roleSkillCfgs[i]); arr.RemoveAt(partIndex); } return npcSkillDic; } public SkillData GetSkillData(int cardId, int skillId) { SkillData skillData; if (SkillDataManager.Instance.skillData.ContainsKey(cardId) && SkillDataManager.Instance.skillData[cardId].ContainsKey(skillId)) { skillData = SkillDataManager.Instance.skillData[cardId][skillId]; } else { skillData = new SkillData(); skillData.cardId = cardId; skillData.skillId = skillId; skillData.lv = 1; } return skillData; } public PassivitySkillCfg GetPassivitySkillCfg(int cardId, int skillId, int lv) { return dicPassivitySkill[cardId][skillId][lv]; } } }