示例#1
0
        private void RefreshShenJiFuWenProps(GameClient client)
        {
            Dictionary <int, ShenJiFuWenConfigData> tempShenJiConfig = null;

            lock (this.ConfigMutex)
            {
                tempShenJiConfig = this.ShenJiConfig;
            }
            double[] _ExtProps = new double[177];
            foreach (ShenJiFuWenData item in client.ClientData.ShenJiDataDict.Values)
            {
                ShenJiFuWenConfigData sConfigData = null;
                if (tempShenJiConfig.TryGetValue(item.ShenJiID, out sConfigData))
                {
                    ShenJiFuWenEffectData effect = sConfigData.GetEffect(item.Level);
                    for (int i = 0; i < _ExtProps.Length; i++)
                    {
                        _ExtProps[i] += effect.ExtProps[i];
                    }
                }
            }
            client.ClientData.PropsCacheManager.SetExtProps(new object[]
            {
                PropsSystemTypes.ShenJiFuWen,
                _ExtProps
            });
            client.delayExecModule.SetDelayExecProc(new DelayExecProcIds[]
            {
                DelayExecProcIds.RecalcProps,
                DelayExecProcIds.NotifyRefreshProps
            });
        }
示例#2
0
 public bool LoadShenJiFuWenConfigFile()
 {
     try
     {
         GeneralCachingXmlMgr.RemoveCachingXml(Global.GameResPath("Config/ShenJiFuWen.xml"));
         XElement xml = GeneralCachingXmlMgr.GetXElement(Global.GameResPath("Config/ShenJiFuWen.xml"));
         if (null == xml)
         {
             return(false);
         }
         Dictionary <int, ShenJiFuWenConfigData> tempShenJiConfig = new Dictionary <int, ShenJiFuWenConfigData>();
         IEnumerable <XElement> xmlItems = xml.Elements();
         foreach (XElement xmlItem in xmlItems)
         {
             ShenJiFuWenConfigData data = new ShenJiFuWenConfigData();
             data.ShenJiID     = (int)Global.GetSafeAttributeLong(xmlItem, "ID");
             data.PreShenJiID  = (int)Global.GetSafeAttributeLong(xmlItem, "Prev");
             data.PreShenJiLev = (int)Global.GetSafeAttributeLong(xmlItem, "PrevLevel");
             data.MaxLevel     = (int)Global.GetSafeAttributeLong(xmlItem, "MaxLevel");
             data.UpNeed       = (int)Global.GetSafeAttributeLong(xmlItem, "UpNeed");
             for (int levelloop = 1; levelloop <= 5; levelloop++)
             {
                 ShenJiFuWenEffectData effectItem = this.ParseShenJiFuWenEffectData(xmlItem, levelloop.ToString());
                 if (null == effectItem)
                 {
                     break;
                 }
                 data.ShenJiEffectList.Add(effectItem);
             }
             tempShenJiConfig[data.ShenJiID] = data;
         }
         lock (this.ConfigMutex)
         {
             this.ShenJiConfig = tempShenJiConfig;
         }
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Fatal, string.Format("{0}解析出现异常, {1}", "Config/ShenJiFuWen.xml", ex.Message), null, true);
         return(false);
     }
     return(true);
 }
示例#3
0
        private ShenJiFuWenEffectData ParseShenJiFuWenEffectData(XElement xmlItem, string Key)
        {
            string TempValueString = Global.GetSafeAttributeStr(xmlItem, string.Format("Effect{0}", Key));

            string[] ValueFileds = TempValueString.Split(new char[]
            {
                '|'
            });
            ShenJiFuWenEffectData result;

            if (ValueFileds.Length == 0)
            {
                result = null;
            }
            else
            {
                ShenJiFuWenEffectData data = new ShenJiFuWenEffectData();
                foreach (string value in ValueFileds)
                {
                    string[] KvpFileds = value.Split(new char[]
                    {
                        ','
                    });
                    if (KvpFileds.Length == 2)
                    {
                        ExtPropIndexes index = ConfigParser.GetPropIndexByPropName(KvpFileds[0]);
                        if (index != ExtPropIndexes.Max)
                        {
                            data.ExtProps[(int)index] = Global.SafeConvertToDouble(KvpFileds[1]);
                        }
                    }
                }
                result = data;
            }
            return(result);
        }