/// <summary> /// 设置新状态-debug-TODO /// </summary> /// <param name="newState"></param> /// <returns></returns> public override bool setState(XLStateBase newState) { walkUnable(transform.position); if (_currentState == DeadState) { return(true); } return(base.setState(newState)); }
/// <summary> /// 事件通知(来自于状态) /// </summary> /// <param name="sender"></param> /// <param name="eventId"></param> /// <param name="eventData"></param> public bool notifyEvent(XLStateBase sender, int eventId, Object eventData) { // 行走状态 if (sender == _walkState) { if (eventId == GeneralWalkState.EVENT_CHANGE_TO_ATTACK) { _data.AttackTarget = _walkState.Target; setState(AttackState); return(true); } return(true); } //攻击状态 if (sender == AttackState) { //攻击目标为空或攻击目标不在攻击范围内 if (eventId == GeneralAttackState.ATTACK_TARGET_IS_NULL || eventId == GeneralAttackState.ATTACK_TARGET_IS_OUT) { //如果是敌方 if (_data.Country == Defaults.Country.Enemy) { //己方还有士兵,进入锁敌 if (SpriteMgr.getInstance().SelfSoldiers.Count > 0) { //进入锁敌状态 setState(_walkState); } } else { //如果是己方,敌方还有士兵,进入锁敌 if (SpriteMgr.getInstance().EnemySoldiers.Count > 0) { //进入锁敌状态 setState(_walkState); } } } return(true); } return(false); }