using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; namespace TableConfig { public partial class FuncConfigConfig : ConfigBase, IConfigPostProcess { #region 宝石数据 private const string GEM_TYPE1 = "GemType1"; private const string GEM_TYPE2 = "GemType2"; private static Dictionary m_GemCfgs = new Dictionary(); #endregion #region 符印数据 private static Regex RuneAttrRegex = new Regex(@"RuneAttr([0-9]+)", RegexOptions.Singleline); public static Dictionary m_RuneAttrCfgs = new Dictionary(); #endregion #region 快捷回复 private static Regex FastReplayRegex = new Regex(@"QuickReply([0-9]+)", RegexOptions.Singleline); private static List fastReplay = new List(); #endregion #region 装备名称 private static Dictionary _equipAreaDict = new Dictionary(); #endregion #region 装备弹框名称 private static Dictionary _equipTipsAreaDict = new Dictionary(); #endregion public void OnConfigParseCompleted() { #region 宝石数据、符印数据、聊天快捷回复 if (getKey() == GEM_TYPE1 || getKey() == GEM_TYPE2) { string[] strs = Numerical1.Split('|'); for (int i = 0; i < strs.Length; i++) { int pos = int.Parse(strs[i]); if (!m_GemCfgs.ContainsKey(pos)) { m_GemCfgs.Add(pos, this); } else { DesignDebug.LogError("重复的装备位置ID:" + pos); } } } else if (RuneAttrRegex.IsMatch(getKey())) { Match match = RuneAttrRegex.Match(getKey()); int attrType = int.Parse(match.Groups[1].Value); m_RuneAttrCfgs.Add(attrType, this); } else if (FastReplayRegex.IsMatch(getKey())) { fastReplay.Add(this); } #endregion #region 得到装备位和对应名称 if (getKey() == "EquipArea") { int[] arealist = ConfigParse.GetMultipleStr(Numerical1); string[] namelist = ConfigParse.GetMultipleStr(Numerical2); for (int i = 0; i < arealist.Length; i++) { _equipAreaDict.Add(arealist[i], namelist[i]); } } #endregion #region 得到装备位和对应装备弹框名称 if (getKey() == "EquipWinArea") { int[] arealist = ConfigParse.GetMultipleStr(Numerical1); string[] namelist = ConfigParse.GetMultipleStr(Numerical2); for (int i = 0; i < arealist.Length; i++) { _equipTipsAreaDict.Add(arealist[i], namelist[i]); } } #endregion } #region 宝石数据 public static int GetGemTypeByEquipPos(int pos, out FuncConfigConfig cfg) { m_GemCfgs.TryGetValue(pos, out cfg); if (cfg != null) { string typeStr = System.Text.RegularExpressions.Regex.Replace(cfg.KEY, @"[^\d.\d]", ""); int type = -1; if (int.TryParse(typeStr, out type)) { return type; } } return -1; } public static int GetGemTypeByEquipPos(int pos) { FuncConfigConfig cfg = null; m_GemCfgs.TryGetValue(pos, out cfg); if (cfg != null) { string typeStr = System.Text.RegularExpressions.Regex.Replace(cfg.KEY, @"[^\d.\d]", ""); int type = -1; if (int.TryParse(typeStr, out type)) { return type; } } DesignDebug.LogError("未找到的装备位置:" + pos); return -1; } #endregion public static FuncConfigConfig GetRuneAttrFormula(int attrType) { FuncConfigConfig cfg = null; m_RuneAttrCfgs.TryGetValue(attrType, out cfg); return cfg; } public static FuncConfigConfig GetRuneNeedExpFormula() { return ConfigManager.Instance.GetTemplate("RuneExp"); } public static List GetFastReplay() { return fastReplay; } public static string GetEquipAreaName(int equipArea) { if (_equipAreaDict.ContainsKey(equipArea)) { return _equipAreaDict[equipArea]; } else { return ""; } } public static string GetEquipTipsAreaName(int equipArea) { if (_equipTipsAreaDict.ContainsKey(equipArea)) { return _equipTipsAreaDict[equipArea]; } else { return ""; } } } }