public override bool ActionStart()
    {
        int current_tile_x = GetComponent <Movement_Action>().GetCurrentTileX();
        int current_tile_y = GetComponent <Movement_Action>().GetCurrentTileY();

        move = GetComponent <Movement_Action>();
        move.GoTo(event_to_react.objective_tile_x, event_to_react.objective_tile_y);
        bool ret = move.ActionStart();

        init_tile_x = current_tile_x;
        init_tile_y = current_tile_y;
        my_state    = INVESTIGATESTATE.GOING_TO_INVESTIGATE;

        //TODO_AI:hear something audio
        //GetComponent<CompAudio>().PlayEvent("Dracarys");

        return(ret);
    }
Пример #2
0
    public override bool ActionStart()
    {
        Debug.Log("Going to investigate");
        bool ret = GetComponent <Movement_Action>().ActionStart();

        //anim.SetClipsSpeed(anim_speed);
        //anim.SetTransition("ToPatrol");

        int current_tile_x = GetComponent <Movement_Action>().GetCurrentTileX();
        int current_tile_y = GetComponent <Movement_Action>().GetCurrentTileY();

        GetComponent <Movement_Action>().GoTo(event_to_react.objective_tile_x, event_to_react.objective_tile_y);

        init_tile_x = current_tile_x;
        init_tile_y = current_tile_y;
        my_state    = INVESTIGATESTATE.GOING_TO_INVESTIGATE;

        return(ret);
    }
Пример #3
0
    public override ACTION_RESULT ActionUpdate()
    {
        switch (my_state)
        {
        case INVESTIGATESTATE.GOING_TO_INVESTIGATE:

            if (interupt)
            {
                GetComponent <Movement_Action>().Interupt();
            }

            ///Make Move update
            move_return = GetComponent <Movement_Action>().ActionUpdate();

            if (move_return == ACTION_RESULT.AR_SUCCESS)
            {
                my_state = INVESTIGATESTATE.INVESTIGATE;
                Debug.Log("Investigate");
            }

            if (move_return == ACTION_RESULT.AR_FAIL)
            {
                GetComponent <Movement_Action>().ActionEnd();
                return(ACTION_RESULT.AR_FAIL);
            }

            break;

        case INVESTIGATESTATE.INVESTIGATE:

            //Trigger investigate animation

            event_to_react.start_counting = true;

            if (forgot_event == true)
            {
                int current_tile_x = GetComponent <Movement_Action>().GetCurrentTileX();
                int current_tile_y = GetComponent <Movement_Action>().GetCurrentTileY();

                GetComponent <Movement_Action>().GoTo(init_tile_x, init_tile_y);

                if (!GetComponent <Movement_Action>().ActionStart())
                {
                    return(ACTION_RESULT.AR_FAIL);
                }

                my_state = INVESTIGATESTATE.RETURNING_TO_START;
            }

            if (interupt)
            {
                //Need to change to add more enemies
                return(ACTION_RESULT.AR_FAIL);
            }

            break;

        case INVESTIGATESTATE.RETURNING_TO_START:

            if (interupt)
            {
                GetComponent <Movement_Action>().Interupt();
            }

            move_return = GetComponent <Movement_Action>().ActionUpdate();

            if (move_return == ACTION_RESULT.AR_SUCCESS)
            {
                Debug.Log("Arrived home");
                return(ACTION_RESULT.AR_SUCCESS);
            }

            if (move_return == ACTION_RESULT.AR_FAIL)
            {
                GetComponent <Movement_Action>().ActionEnd();
                return(ACTION_RESULT.AR_FAIL);
            }

            break;
        }

        return(ACTION_RESULT.AR_IN_PROGRESS);
    }
    public override ACTION_RESULT ActionUpdate()
    {
        switch (my_state)
        {
        case INVESTIGATESTATE.INVESTIGATE:
            //Trigger investigate animation

            if (interupt)
            {
                interupt = false;
                return(ACTION_RESULT.AR_FAIL);
            }

            event_to_react.start_counting = true;

            if (forgot_event == true)
            {
                move.GoTo(init_tile_x, init_tile_y);

                //Lost something audio
                //TODO_AI: Ivestigation audio
                //GetComponent<CompAudio>().PlayEvent("Dracarys");

                my_state = INVESTIGATESTATE.RETURNING_TO_START;

                if (move.ActionStart() == false)
                {
                    return(ACTION_RESULT.AR_FAIL);
                }
            }

            return(ACTION_RESULT.AR_IN_PROGRESS);

        case INVESTIGATESTATE.GOING_TO_INVESTIGATE:
        case INVESTIGATESTATE.RETURNING_TO_START:

            if (interupt)
            {
                interupt = false;
                move.Interupt();
            }

            move_return = move.ActionUpdate();

            if (move_return != ACTION_RESULT.AR_IN_PROGRESS)
            {
                move.ActionEnd();

                if (move_return == ACTION_RESULT.AR_FAIL)
                {
                    return(move_return);
                }
                else
                {
                    if (my_state == INVESTIGATESTATE.GOING_TO_INVESTIGATE)
                    {
                        my_state = INVESTIGATESTATE.INVESTIGATE;
                    }
                    else
                    {
                        return(move_return);
                    }
                }
            }

            break;
        }

        return(ACTION_RESULT.AR_IN_PROGRESS);
    }