BattleFormulaParamMgr.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. public class BattleFormulaParamMgr : Singleton<BattleFormulaParamMgr>
  5. {
  6. Dictionary<int, SFloat> formulaParamDic = new Dictionary<int, SFloat>();
  7. Dictionary<int, SInt> mFunPointDic = new Dictionary<int, SInt>();
  8. public Dictionary<int, SInt> FunPointBuffs
  9. {
  10. get { return mFunPointDic; }
  11. }
  12. public override void Init()
  13. {
  14. base.Init();
  15. LoadCfg();
  16. }
  17. public void LoadCfg()
  18. {
  19. formulaParamDic.Clear();
  20. mFunPointDic.Clear();
  21. string content = ConfigMgr.Instance.GetXmlCfg("BattleFormulaParamCfg");
  22. if (string.IsNullOrEmpty(content))
  23. {
  24. DebugHelper.LogError("BattleFormulaParamCfg 不存在");
  25. return;
  26. }
  27. Mono.Xml.SecurityParser doc = new Mono.Xml.SecurityParser();
  28. try
  29. {
  30. doc.LoadXml(content);
  31. }
  32. catch (System.Exception e)
  33. {
  34. DebugHelper.Assert(false, "exception = {0}", e.Message);
  35. return;
  36. }
  37. System.Security.SecurityElement root = doc.SelectSingleNode("Params");
  38. if (root == null || root.Children == null) return;
  39. for (int idx = 0; idx < root.Children.Count; idx++)
  40. {
  41. var paramNode = root.Children[idx] as System.Security.SecurityElement;
  42. int paramId = 0;
  43. float paramVal = 0;
  44. int.TryParse(paramNode.Attribute("id"), out paramId);
  45. float.TryParse(paramNode.Attribute("value"), out paramVal);
  46. if (paramId == 0) continue;
  47. ///10000以下是战斗公式中的数据,10000以上表示效果点buff配置
  48. if(paramId < 10000)
  49. {
  50. if (!formulaParamDic.ContainsKey(paramId))
  51. formulaParamDic.Add(paramId, paramVal);
  52. }
  53. else
  54. {
  55. if (!mFunPointDic.ContainsKey(paramId))
  56. mFunPointDic.Add(paramId, (int)paramVal);
  57. }
  58. }
  59. }
  60. /// <summary>
  61. /// 获取战斗公式参数,具体参数说明请看BattleFormulaParamCfg.xml配置
  62. /// </summary>
  63. /// <param name="id"></param>
  64. /// <returns></returns>
  65. public SFloat GetParam(int id)
  66. {
  67. SFloat val;
  68. formulaParamDic.TryGetValue(id, out val);
  69. return val;
  70. }
  71. public SInt GetFunPoint(int buffId)
  72. {
  73. SInt point = 0;
  74. mFunPointDic.TryGetValue(buffId, out point);
  75. return point;
  76. }
  77. }