TimeBattleField.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. using UnityEngine;
  2. using System.Collections;
  3. public class TimeBattleField:BattleField
  4. {
  5. private TimeBattle mBattle;
  6. private TimeBattleFieldState mState;
  7. private ReadyPoint mOwnReadyPoint;
  8. private ReadyPoint mEnemyReadyPoint;
  9. private int mBossLife;
  10. private int mBossSp;
  11. public int BossLife
  12. {
  13. get { return mBossLife; }
  14. set { mBossLife = value; }
  15. }
  16. public int BossSp
  17. {
  18. get { return mBossSp; }
  19. set { mBossSp = value; }
  20. }
  21. public TimeBattle Battle
  22. {
  23. get { return mBattle; }
  24. }
  25. public TimeBattleFieldStateType CurrentState
  26. {
  27. get { return mState != null ? mState.State : TimeBattleFieldStateType.None; }
  28. set
  29. {
  30. if (CurrentState == value)
  31. return;
  32. int oldState = (int)CurrentState;
  33. if (mState != null)
  34. mState.OnLeave();
  35. mState = TimeBattleFieldState.Create(this, value);
  36. mCurrentStateFrame = 0;
  37. if (mState != null)
  38. {
  39. mState.OnEnter();
  40. }
  41. }
  42. }
  43. public override bool IsIdleState
  44. {
  45. get { return CurrentState == TimeBattleFieldStateType.None; }
  46. }
  47. public override bool IsFightingState
  48. {
  49. get { return CurrentState == TimeBattleFieldStateType.Fighting; }
  50. }
  51. public override int CurrentFieldState
  52. {
  53. get { return (int)CurrentState; }
  54. }
  55. public override string Name
  56. {
  57. get { return "TimeBattleField"; }
  58. }
  59. public TimeBattleField(TimeBattle battle,float maxBattleTime):
  60. base(battle,Vector3.zero,new Vector3(20,20,20),Vector3.forward)
  61. {
  62. mBattle = battle;
  63. FightingTime = 0;
  64. MaxFightingTime = maxBattleTime;
  65. }
  66. public void Start()
  67. {
  68. Result = FightingResult.None;
  69. FightingTime = 0;
  70. CurrentState = TimeBattleFieldStateType.Start;
  71. }
  72. public override void AddFighter(Fighter fighter)
  73. {
  74. base.AddFighter(fighter);
  75. if (mBattle != null)
  76. mBattle.FighterMgr.AddFighterToBattleField(fighter);
  77. if (fighter.IsTeamMember)
  78. {
  79. SortTeamFighters();
  80. }
  81. else
  82. {
  83. SortEnemyFighters();
  84. }
  85. }
  86. public override void RemoveFighter(Fighter fighter)
  87. {
  88. base.RemoveFighter(fighter);
  89. if (mBattle != null)
  90. mBattle.FighterMgr.RemoveFighterFromBattleField(fighter);
  91. if (fighter.IsTeamMember)
  92. {
  93. SortTeamFighters();
  94. }
  95. else
  96. {
  97. SortEnemyFighters();
  98. }
  99. }
  100. public override void Update(float deltaTime)
  101. {
  102. base.Update(deltaTime);
  103. if (mState != null)
  104. {
  105. #if PROFILE
  106. UnityEngine.Profiling.Profiler.BeginSample("TimeBattleField update:" + mState.State);
  107. #endif
  108. mState.Update(deltaTime);
  109. #if PROFILE
  110. UnityEngine.Profiling.Profiler.EndSample();
  111. #endif
  112. }
  113. }
  114. public override void PeaceEnd()
  115. {
  116. //if (Result != FightingResult.None) //戰鬥已經有有結束 不可打斷結束
  117. // return;
  118. //if (CurrentState != TimeBattleFieldStateType.Failed &&//不在退出流程 可以退出
  119. // CurrentState != TimeBattleFieldStateType.Win &&
  120. // CurrentState != TimeBattleFieldStateType.End &&
  121. // CurrentState != TimeBattleFieldStateType.None)
  122. //{
  123. // Result = FightingResult.Failed;
  124. // CurrentState = TimeBattleFieldStateType.Failed;
  125. // CurrentState = TimeBattleFieldStateType.End;
  126. // CurrentState = TimeBattleFieldStateType.None;
  127. //}
  128. if (BattleSubMode.ClimbingTower == mBattle.BattMode && !Battle.IsPlayRecord)
  129. {
  130. if (Result == FightingResult.None)
  131. {
  132. Result = FightingResult.Peace;
  133. }
  134. }
  135. else
  136. {
  137. Result = FightingResult.Peace;
  138. }
  139. }
  140. }