Exemple #1
0
 public int[] GetPropIndexArray(string buffMap)
 {
     int[] buffIds = null;
     if (!string.IsNullOrEmpty(buffMap))
     {
         buffIds = FrameUtil.CastIntArray(buffMap, SPLITValues);
     }
     return(GetPropIndexArray(buffIds));
 }
Exemple #2
0
 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;
     }
 }
Exemple #3
0
        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);
        }
Exemple #4
0
 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;
     }
 }