LogicFighterAda.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace YLBattle
  5. {
  6. /// <summary>
  7. /// buff
  8. /// </summary>
  9. public partial class LogicFighter
  10. {
  11. /// <summary>
  12. /// 已获得buff 【tid,iid】
  13. /// </summary>
  14. private Dictionary<string, int> mBuffs_Data = new Dictionary<string, int>();
  15. /// <summary>
  16. /// buff相关属性
  17. /// </summary>
  18. private int[] mBuffProperty = new int[(int)EBuffEffect.EBUFF_EFFECT_MAX];
  19. /// <summary>
  20. /// 增加buff
  21. /// </summary>
  22. /// <param name="tid">模板TID</param>
  23. /// <param name="iid">实例IID</param>
  24. public int GetLastBuff(string tid, int iid)
  25. {
  26. int lastIID = -1;
  27. if (this.mBuffs_Data.ContainsKey(tid))
  28. {
  29. lastIID = this.mBuffs_Data[tid];
  30. this.mBuffs_Data[tid] = iid;
  31. }
  32. else
  33. {
  34. this.mBuffs_Data.Add(tid, iid);
  35. }
  36. return lastIID;
  37. }
  38. /// <summary>
  39. /// 获取所以buff<tid,iid>
  40. /// </summary>
  41. /// <returns>已获得buff 【tid,iid】</returns>
  42. public Dictionary<string, int> GetAllBuff()
  43. {
  44. return this.mBuffs_Data;
  45. }
  46. /// <summary>
  47. /// 获取指定buff效果
  48. /// </summary>
  49. /// <param name="indx">buff效果索引</param>
  50. /// <returns>对应数值</returns>
  51. public int GetBuffEffectProperty(EBuffEffect indx)
  52. {
  53. return this.mBuffProperty[(int)indx];
  54. }
  55. /// <summary>
  56. /// 修改指定buff效果值
  57. /// </summary>
  58. /// <param name="indx">buf效果索引</param>
  59. /// <param name="val">修改值</param>
  60. public void ModifyBuffEffectProperty(EBuffEffect indx, int val)
  61. {
  62. this.mBuffProperty[(int)indx] += val;
  63. }
  64. /// <summary>
  65. /// 设置指定buff效果值
  66. /// </summary>
  67. /// <param name="indx">buff效果索引</param>
  68. /// <param name="val">新值</param>
  69. public void SetBuffEffectProperty(EBuffEffect indx, int val)
  70. {
  71. this.mBuffProperty[(int)indx] = val;
  72. }
  73. #region 2017-09-24
  74. /// <summary>
  75. /// 获得自身正在生效的buff类型(Tid)的执行参数
  76. /// 格式{"iid1;parm|iid2;parm"}
  77. /// 备足:parm存在逗号','
  78. /// </summary>
  79. /// <returns></returns>
  80. //public List<LogicFighterBuff> GetBuffEffectParm(EBuffEffect eid)
  81. //{
  82. // List<LogicFighterBuff> result = new List<LogicFighterBuff>();
  83. // foreach (LogicFighterBuff buff in this.mBuffs_Data.Values)
  84. // {
  85. // if (buff.Effect == eid)
  86. // {
  87. // result.Add(buff);
  88. // if (eid == EBuffEffect.EBUFF_EFFECT_Shield)
  89. // continue;
  90. // if (eid == EBuffEffect.EBUFF_EFFECT_TAUNT)
  91. // continue;
  92. // }
  93. // }
  94. // return result;
  95. //}
  96. /// <summary>
  97. /// 检测同类型的Buff(根据Layer数值判断)是否可叠加【二级检测】
  98. /// </summary>
  99. /// <param name="BuffTid"></param>
  100. /// <returns></returns>
  101. //public bool CheckBuffLayer(string BuffTid)
  102. //{
  103. // /**
  104. // * 类型冲突,主要是参考bufftid....(非effect)
  105. // * ///A:如果是大于1,则为同款[叠加]
  106. // * ///B:如果为等于1,则为[替换],参数[更新]
  107. // */
  108. // if (this.mBuffs_Layer.ContainsKey(BuffTid))
  109. // {
  110. // if (this.mBuffs_Layer[BuffTid] + 1 > mBuffs_MaxLayer[BuffTid])
  111. // {
  112. // LogHelper.Log("**********************模板TID:"+BuffTid+" 当前层:"+this.mBuffs_Layer[BuffTid]+"最大层:"+mBuffs_MaxLayer[BuffTid].ToString());
  113. // return false;
  114. // }
  115. // }
  116. // return true;
  117. //}
  118. /// <summary>
  119. /// 检测冲突【优先检测】
  120. /// </summary>
  121. /// <param name="chongtu"></param>
  122. /// <returns></returns>
  123. //public int CheckBuffChongTu(string chongtu)
  124. //{
  125. // int resultIID = -1;
  126. // /**
  127. // * 冲突
  128. // * A:同ID的buff,根据layer数值来判断是否可叠加
  129. // * B:不同的ID的buff,根据chongtu数值判断是否可替换
  130. // * {替换:无视上一个buff的层数,直接替换}
  131. // */
  132. // if (chongtu == "" || chongtu == string.Empty || chongtu.Trim().Length <= 0)
  133. // {
  134. // return resultIID;
  135. // }
  136. // if (this.mBuffs_ChongTu.ContainsKey(chongtu))
  137. // {
  138. // resultIID= this.mBuffs_ChongTu[chongtu];
  139. // this.mBuffs_ChongTu.Remove(chongtu);
  140. // }
  141. // return resultIID;
  142. //}
  143. /// <summary>
  144. /// 获得自身正在生效的buff类型(Tid)的层
  145. /// </summary>
  146. /// <param name="iid"></param>
  147. /// <returns></returns>
  148. //public int GetBuffLayer(string tid)
  149. //{
  150. // int result = -1;
  151. // if (this.mBuffs_Layer.ContainsKey(tid))
  152. // {
  153. // result = this.mBuffs_Layer[tid];
  154. // }
  155. // return result;
  156. //}
  157. /// <summary>
  158. /// 获得自身正在生效的buff类型(Tid)的触发参数
  159. /// 格式{"iid1;parm|iid2;parm"}
  160. /// 备足:parm存在逗号','
  161. /// </summary>
  162. /// <returns></returns>
  163. //public string GetBuffTriggerParm(EBuffEffect eid)
  164. //{
  165. // string result = "-1";
  166. // foreach (LogicFighterBuff buff in this.mBuffs_Data.Values)
  167. // {
  168. // if (buff.Effect == eid)
  169. // {
  170. // return buff.TriggerParm;
  171. // }
  172. // }
  173. // return result;
  174. //}
  175. /// <summary>
  176. /// 更新buff【外部】触发参数
  177. /// 供BUFF外部【角色/技能/其他】调用
  178. /// </summary>
  179. /// <param name="iid"></param>
  180. /// <param name="parm"></param>
  181. //public void ModifyBuffTriggerParm(int iid, string parm)
  182. //{
  183. // if (this.mBuffs_Data.ContainsKey(iid))
  184. // {
  185. // this.mBuffs_Data[iid].TriggerParm = parm;
  186. // }
  187. //}
  188. /// <summary>
  189. /// 更新buff【外部】执行参数
  190. /// 供BUFF外部【角色/技能/其他】调用
  191. /// </summary>
  192. /// <param name="iid"></param>
  193. /// <param name="parm"></param>
  194. //public LogicFighterBuff ModifyBuffEffectParm(int iid, string parm)
  195. //{
  196. // if (this.mBuffs_Data.ContainsKey(iid))
  197. // {
  198. // this.mBuffs_Data[iid].EffectParm = parm;
  199. // return this.mBuffs_Data[iid];
  200. // }
  201. // return null;
  202. //}
  203. ///// <summary>
  204. ///// 获取指定buff效果
  205. ///// </summary>
  206. ///// <param name="indx">buff效果索引</param>
  207. ///// <returns>对应数值</returns>
  208. //public int GetBuffEffectProperty(EBuffEffect indx)
  209. //{
  210. // return this.mBuffProperty[(int)indx];
  211. //}
  212. ///// <summary>
  213. ///// 修改指定buff效果值
  214. ///// </summary>
  215. ///// <param name="indx">buf效果索引</param>
  216. ///// <param name="val">修改值</param>
  217. //public void ModifyBuffEffectProperty(EBuffEffect indx, int val)
  218. //{
  219. // this.mBuffProperty[(int)indx] += val;
  220. //}
  221. ///// <summary>
  222. ///// 设置指定buff效果值
  223. ///// </summary>
  224. ///// <param name="indx">buff效果索引</param>
  225. ///// <param name="val">新值</param>
  226. //public void SetBuffEffectProperty(EBuffEffect indx, int val)
  227. //{
  228. // this.mBuffProperty[(int)indx] = val;
  229. //}
  230. #endregion
  231. }
  232. }