| | |
| | | /// <summary> |
| | | /// 杀怪状态机 |
| | | /// </summary> |
| | | public class KillMonsterStateMachine |
| | | public class KillMonsterStateMachine:StateMachineBase |
| | | { |
| | | private const Int32 NoMoveMaxMillSecond = 2000;//最大未移动容忍毫秒数 |
| | | private StateAction[] states;//状态动作列表 |
| | |
| | | /// <param name="cancellationToken"></param> |
| | | /// <param name="timeoutMillSecond"></param> |
| | | /// <returns></returns> |
| | | public Int32 Start(CancellationToken cancellationToken, Int32 timeoutMillSecond) |
| | | public ZTResult Work(CancellationToken cancellationToken, Int32 timeoutMillSecond) |
| | | { |
| | | DateTime expireTime = DateTime.Now.AddMilliseconds(timeoutMillSecond); |
| | | KillMonsterStateResult result = new KillMonsterStateResult(STATE_Start, false); |
| | |
| | | { |
| | | G.Instance.DebugWriter("取消刷图"); |
| | | this.moveState.StopMove(); |
| | | return JobResult.Cancel; |
| | | return ZTResult.Cancel; |
| | | } |
| | | |
| | | if (DateTime.Now > expireTime) |
| | | { |
| | | G.Instance.DebugWriter("刷图超时"); |
| | | this.moveState.StopMove(); |
| | | return JobResult.Timeout; |
| | | return ZTResult.Timeout; |
| | | } |
| | | if (result.NextState == STATE_Exit) |
| | | { |
| | |
| | | this.moveState.StopMove(); |
| | | if (this.exitResult) |
| | | { |
| | | return JobResult.Success; |
| | | return ZTResult.Success; |
| | | } |
| | | return JobResult.Failed; |
| | | return ZTResult.Failed; |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | }, 50)) |
| | | { |
| | | return JobResult.Failed; |
| | | return ZTResult.Failed; |
| | | } |
| | | } |
| | | if (houseIndex != this.house.Index) |
| | | { |
| | | this.moveState.StopMove(); |
| | | return JobResult.Success; |
| | | return ZTResult.Success; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | /// <summary> |
| | | /// 杀怪状态 |
| | | /// </summary> |
| | | public enum KillMonsterStates:Int32 |
| | | { |
| | | FindMonster = 0,//找怪 |
| | | PrepareReleaseSkill = 1,//释放技能预处理,计算位置 |
| | | ReleaseSkill = 2,//释放技能 |
| | | DetectDoorIsOpen = 3,//查找进入下一房间的门是否开了 |
| | | MoveToDoor = 4,//移动进门 |
| | | |
| | | Start = 8,//开始状态 |
| | | Exit = 9,//完成状态 |
| | | } |
| | | } |
| | | } |