BattleManagerFighter.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace YLBattle
  5. {
  6. /// <summary>
  7. ///
  8. /// </summary>
  9. public partial class BattleManager : IBattleGlobalOper
  10. {
  11. #region 战斗对象
  12. /// <summary>
  13. /// 修改指定战斗对象位置信息
  14. /// </summary>
  15. /// <param name="id">对象编号</param>
  16. /// <param name="x">x坐标</param>
  17. /// <param name="y">y坐标</param>
  18. public void ModifyFighterPosition(string id, float x, float y)
  19. {
  20. LogicFighter fighter = this.Env().mLogicFighterOper.FindFighter(id);
  21. if (null == fighter)
  22. {
  23. return;
  24. }
  25. fighter.SetProperty(EBattleProperty.POSX, x);
  26. fighter.SetProperty(EBattleProperty.POSY, y);
  27. }
  28. /// <summary>
  29. /// 获取指定对象属性
  30. /// </summary>
  31. /// <param name="id">对象实例id</param>
  32. /// <param name="tp">属性类型</param>
  33. /// <returns>属性值</returns>
  34. public float GetFighterProperty(string id, EBattleProperty tp)
  35. {
  36. LogicFighter fighter = this.Env().mLogicFighterOper.FindFighter(id);
  37. if (null == fighter)
  38. {
  39. return 0;
  40. }
  41. return fighter.GetProperty(tp);
  42. }
  43. /// <summary>
  44. /// 通过monster占位获得plat偏移
  45. /// </summary>
  46. /// <param name="_seat"></param>
  47. /// <returns></returns>
  48. public int GetMonsterPlatOffset(int _seat)
  49. {
  50. return this.Env().FieldAdapter().FighterMonsterOffset(_seat);
  51. }
  52. /// <summary>
  53. /// 每回合恢复所有角色的回合数和能量值
  54. /// </summary>
  55. //public void ModifyFighterProAtRound()
  56. //{
  57. // Debug.Log("。。。当前第:" + this.Env().BattleRound + " 回合。。。每回合恢复所有角色的回合数和能量值。。。");
  58. // /*
  59. // * 除此之外,每回合每个角色自然回复的点击能量数值可能小幅度不同,可以暂定为15%左右,必杀每个回合回复5%
  60. // */
  61. // List<LogicFighter> fighters = this.Env().mLogicFighterOper.FindAliveFighter();
  62. // foreach (LogicFighter fighter in fighters)
  63. // {
  64. // fighter.ModifyProperty(EBattleProperty.LOCKEDROUND, -1);
  65. // if (fighter.IsChargePower())
  66. // {
  67. // fighter.ModifyProperty(EBattleProperty.NPOWER, fighter.GetProperty(EBattleProperty.RPOWER));
  68. // this.Env().ShowAdapter().BattleFighterHealthInfo(fighter.ID(),
  69. // fighter.GetProperty(EBattleProperty.HP),
  70. // fighter.GetProperty(EBattleProperty.HPMAX),
  71. // fighter.GetProperty(EBattleProperty.NPOWER),
  72. // fighter.GetProperty(EBattleProperty.NMAXPOWER));
  73. // }
  74. // }
  75. // this.Env().BattleBlueTeamPower += this.Env().RoundBlueTeamRoverPower;
  76. // //Debug.LogError(" 此回合蓝队必杀值增加" + this.Env().RoundBlueTeamRoverPower);
  77. // this.Env().BattleRedTeamPower += this.Env().RoundRedTeamRoverPower;
  78. // this.Env().ShowAdapter().OnRefreshWindowData();
  79. //}
  80. /// <summary>
  81. ///
  82. /// </summary>
  83. /// <param name="team"></param>
  84. /// <returns></returns>
  85. public float GetTeamHp(EBattleTeam team)
  86. {
  87. List<LogicFighter> fighters = this.Env().mLogicFighterOper.FindTeamAllFighter(team);
  88. float min = 0;
  89. float max = 0;
  90. foreach (LogicFighter f in fighters)
  91. {
  92. float temp = f.GetProperty(EBattleProperty.HP);
  93. if (temp >= 0)
  94. {
  95. min += temp;
  96. }
  97. max += f.GetProperty(EBattleProperty.HPMAX);
  98. }
  99. if (max == 0)
  100. {
  101. return 0;
  102. }
  103. return min / max;
  104. }
  105. /// <summary>
  106. /// 寻求朋友帮助
  107. /// </summary>
  108. /// <param name="seat">占位</param>
  109. public void SetFriendHelp(int seat)
  110. {
  111. if (this.Env().friend == null)
  112. {
  113. LogHelper.Log("No Friend Helping...............");
  114. return;
  115. }
  116. this.Env().mLogicFighterOper.SetFriendHelp(seat, true);
  117. }
  118. #endregion
  119. }
  120. }