public PractiseStepBehaviour GetBehaviour(int index)
    {
        PractiseStepBehaviour behaviour = PractiseStepBehaviour.None;

        if (!stepFinished && curStep != null)
        {
            curStep.behaviour.TryGetValue(index, out behaviour);
        }
        return(behaviour);
    }
Exemplo n.º 2
0
    public override void Update(IM.Number fDeltaTime)
    {
        m_player.forward = GameUtils.HorizonalNormalized(mate.position, m_player.position);

        PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index);

        if (stepBehaviour != PractiseStepBehaviour.Face2Mate)
        {
            system.SetTransaction(AIState.Type.ePractiseGuide_Idle);
        }
    }
    public override void Update(IM.Number fDeltaTime)
    {
        PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index);

        if (stepBehaviour == PractiseStepBehaviour.Run2Basket)
        {
            m_moveTarget = shootTarget;
        }
        else if (stepBehaviour == PractiseStepBehaviour.PickPass2Mate)
        {
        }
        else
        {
            system.SetTransaction(AIState.Type.ePractiseGuide_Idle);
        }
    }
    public override void OnEnter(AIState lastState)
    {
        base.OnEnter(lastState);
        shootTarget = m_match.mCurScene.mBasket.m_vShootTarget;

        PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index);

        if (stepBehaviour == PractiseStepBehaviour.PickPass2Mate)
        {
            Player     mate             = m_player.m_team.members.Find(p => p != m_player);
            IM.Vector3 dirPlayer2Mate   = GameUtils.HorizonalNormalized(mate.position, m_player.position);
            IM.Vector3 dirPlayer2Basket = GameUtils.HorizonalNormalized(shootTarget, m_player.position);
            bool       left             = IM.Vector3.Cross(dirPlayer2Basket, dirPlayer2Mate).y < 0;
            IM.Vector3 dirMove          = IM.Quaternion.AngleAxis(left ? new IM.Number(90) : -new IM.Number(90), IM.Vector3.up) * dirPlayer2Basket;
            m_moveTarget = m_player.position + dirMove;
        }
    }
    public override void Update(IM.Number fDeltaTime)
    {
        PractiseStepBehaviour stepBehaviour = behaviour.GetBehaviour(system.index);

        switch (stepBehaviour)
        {
        case PractiseStepBehaviour.Face2Mate:
            system.SetTransaction(AIState.Type.ePractiseGuide_Face2Mate);
            break;

        case PractiseStepBehaviour.PickPass2Mate:
            if (m_ball.m_ballState == BallState.eLoseBall)
            {
                system.SetTransaction(AIState.Type.ePractiseGuide_TraceBall);
            }
            break;

        case PractiseStepBehaviour.Run2Basket:
            system.SetTransaction(AIState.Type.ePractiseGuide_Positioning);
            break;

        case PractiseStepBehaviour.Layup:
            if (m_player.m_bWithBall)
            {
                system.SetTransaction(AIState.Type.ePractiseGuide_Layup);
            }
            break;

        case PractiseStepBehaviour.Shoot:
            if (m_player.m_bWithBall)
            {
                system.SetTransaction(AIState.Type.ePractiseGuide_Shoot);
            }
            break;

        case PractiseStepBehaviour.Defense:
            system.SetTransaction(AIState.Type.ePractiseGuide_Defense);
            break;
        }
    }