示例#1
0
    /// <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));
    }
示例#2
0
    /// <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);
    }