Как вложить события в LIGGDX / Java: я должен получить цель после нажатия на кнопку. - PullRequest
0 голосов
/ 18 ноября 2018

Я создаю игру, в которой вы должны быть в состоянии щелкнуть мышкой по кнопке, а затем щелкнуть по экрану игры, чтобы нацелить врага.

Прямо сейчас моя игра способна нацеливаться, например, на "врага"когда я нажимал кнопку, и я думал, что, возможно, мне следует вложить события или что-то еще, чтобы иметь возможность получить цель для своих событий.

Пока что я потерян с этой последней частью.Вот часть кода, который я сделал, чтобы сделать цель одним врагом.

fighterOne.getSecondButton().addListener(
            (Event e) ->
            {
                if ( !(e instanceof InputEvent) )
                    return false;

                if ( !((InputEvent)e).getType().equals(InputEvent.Type.touchDown) )
                    return false;
                if (!(turn))
                    return false;
                fighterOne.attackTwo(enemyOne);
                turn = !(turn);
                return true;
            }
    );

А вот что я пытаюсь вложить в вечерни.Проблема в том, что когда я нажимаю «кнопку», я могу бесконечно нажимать на цель, идея заключается в том, что я нажимаю кнопку, я нажимаю цель, и если вы не нажимаете на цель, вы должны нажать кнопку еще раз.

fighterOne.getFirstButton().addListener(
            (Event e) ->
            {

                if ( !(e instanceof InputEvent) )
                    return false;

                if ( !((InputEvent)e).getType().equals(InputEvent.Type.touchDown) )
                    return false;
                if (!(turn))
                    return false;
                enemyTwo.addListener(
                        (Event o) ->
                        {
                            if ( !(o instanceof InputEvent) )
                                return false;

                            if ( !((InputEvent)o).getType().equals(InputEvent.Type.touchDown) ){
                                target = null;
                                return false;
                            }
                            target = (EnemyFighters)o.getTarget();

                        return true;
                        }
                );
                if (target != null){
                    fighterOne.attackOne(target);
                    target=null;
                    turn = !(turn);
                    System.out.println("we attacked");
                }
                return true;
            }
    );
...