public int[] GetPropIndexArray(string buffMap) { int[] buffIds = null; if (!string.IsNullOrEmpty(buffMap)) { buffIds = FrameUtil.CastIntArray(buffMap, SPLITValues); } return(GetPropIndexArray(buffIds)); }
private SkillCardCache() { try { s_dicSkillExp.Clear(); s_dicAskRank.Clear(); s_dicAskRand.Clear(); s_dicSkillCard.Clear(); s_dicSkillLib.Clear(); s_dicSkillRoot.Clear(); var levels = ConfigSkillcardlevelMgr.GetAll(); var asks = ConfigSkillcardaskrankMgr.GetAll(); var skills = DicSkillcardMgr.GetAllForCache(); foreach (var g in levels.GroupBy(i => i.SkillClass)) { s_dicSkillExp[g.Key] = g.ToDictionary(i => i.SkillLevel, i => i); } foreach (var item in asks) { s_dicAskRank[item.NpcId] = item; s_dicAskRand[item.NpcId] = new RandomPicker(2, FrameUtil.CastIntArray(item.SkillRateMap, SPLITSect, SPLITUnit)); } int libKey = 0; foreach (var item in skills) { s_dicSkillCard[item.SkillCode] = item; s_dicSkillRoot[CastRootKey(item.SkillRoot, item.SkillLevel)] = item.SkillCode; libKey = CastLibKey(item.SkillClass, item.SkillLevel); if (!s_dicSkillLib.ContainsKey(libKey)) { s_dicSkillLib[libKey] = new List <string>(); } s_dicSkillLib[libKey].Add(item.SkillCode); } this.InitFlag = true; } catch (Exception ex) { LogHelper.Insert(ex, "SkillCardCache:Init"); this.InitFlag = false; } }
public List <int> GetBaseBuffList(string buffMap) { var list = new List <int>(); if (string.IsNullOrEmpty(buffMap)) { return(list); } var aVals = FrameUtil.CastIntArray(buffMap, SPLITValues); int[] buffs = null; foreach (int val in aVals) { buffs = CastBaseBuffId(val); if (null == buffs) { continue; } list.AddRange(buffs); } return(list); }
private BuffCache() { try { s_dicBuffIdx4PlayerProp.Clear(); s_dicBuffIdx4ManagerShow.Clear(); s_dicBuff.Clear(); s_dicBaseBuff.Clear(); s_dicSkill.Clear(); s_dicSkillRef.Clear(); s_dicPoolIncBuff.Clear(); s_dicPoolExcBuff.Clear(); s_dicFirmBuff.Clear(); s_dicReadyBuff.Clear(); var buffs = DicBuffMgr.GetAllForCache(); var skills = DicSkillMgr.GetAll(); var pools = ConfigBuffpoolMgr.GetAll(); var flows = ConfigBuffengineMgr.GetAll(); for (int i = 0; i < BUFFCodes4PlayerProp.Length; ++i) { s_dicBuffIdx4PlayerProp[(int)BUFFCodes4PlayerProp[i]] = i; } for (int i = 0; i < BUFFCodes4ManagerShow.Length; ++i) { s_dicBuffIdx4ManagerShow[(int)BUFFCodes4ManagerShow[i]] = i; } foreach (var item in buffs) { s_dicBuff[item.BuffId] = item; if (string.IsNullOrEmpty(item.BaseBuffMap)) { s_dicBaseBuff[item.BuffId] = new int[] { item.BuffId } } ; else { s_dicBaseBuff[item.BuffId] = FrameUtil.CastIntArray(item.BaseBuffMap, SPLITValues); } } string skillKey, skillRefKey; skillKey = skillRefKey = string.Empty; foreach (var item in skills) { item.AsLiveFlag = item.LiveFlag > 0 ? EnumSkillLiveFlag.Live : EnumSkillLiveFlag.None; skillKey = CastSkillKey(item.SkillCode, item.SkillLevel); skillRefKey = CastSkillRefKey(item.RefType, item.RefKey, item.RefFlag); s_dicSkill[skillKey] = item; if (!string.IsNullOrEmpty(skillRefKey)) { s_dicSkillRef[skillRefKey] = skillKey; } } DicSkillEntity aObj = null; foreach (var item in pools) { skillKey = CastSkillKey(item.SkillCode, item.SkillLevel); if (!s_dicSkill.TryGetValue(skillKey, out aObj)) { aObj = new DicSkillEntity { SkillCode = item.SkillCode, SkillLevel = item.SkillLevel, BuffSrcType = item.BuffSrcType, }; s_dicSkill[skillKey] = aObj; } aObj.PoolFlag = 1; aObj.AsLiveFlag |= item.LiveFlag == 0 ? EnumSkillLiveFlag.Firm : EnumSkillLiveFlag.Ready; item.BaseBuffList = GetBaseBuffArray(item.BuffMap); item.PropIndexList = GetPropIndexArray(item.BaseBuffList); item.AsBuffUnitType = GetBuffUnitType(item.BaseBuffList); if (!s_dicPoolIncBuff.ContainsKey(skillKey)) { s_dicPoolIncBuff[skillKey] = new List <ConfigBuffpoolEntity>(); } s_dicPoolIncBuff[skillKey].Add(item); } GenPoolExcBuff(pools); foreach (var item in flows) { skillKey = CastSkillKey(item.SkillCode, item.SkillLevel); if (!s_dicSkill.TryGetValue(skillKey, out aObj)) { aObj = new DicSkillEntity { SkillCode = item.SkillCode, SkillLevel = item.SkillLevel, BuffSrcType = item.BuffSrcType, }; s_dicSkill[skillKey] = aObj; } aObj.AsLiveFlag |= item.LiveFlag == 0 ? EnumSkillLiveFlag.Firm : EnumSkillLiveFlag.Ready; item.BaseBuffList = GetBaseBuffArray(item.BuffMap); item.PropIndexList = GetPropIndexArray(item.BaseBuffList); item.AsBuffUnitType = GetBuffUnitType(item.BaseBuffList); if (item.LiveFlag == 0) { if (!s_dicFirmBuff.ContainsKey(skillKey)) { s_dicFirmBuff[skillKey] = new List <ConfigBuffengineEntity>(); } s_dicFirmBuff[skillKey].Add(item); } else { if (!s_dicReadyBuff.ContainsKey(skillKey)) { s_dicReadyBuff[skillKey] = new List <ConfigBuffengineEntity>(); } s_dicReadyBuff[skillKey].Add(item); } } this.InitFlag = true; } catch (Exception ex) { LogHelper.Insert(ex, "BuffCache:Init"); this.InitFlag = false; } }