Я создаю игру «Базовый бой на терне», и у меня проблема в том, что я хочу создать кнопку, в которой вы можете нажать на нее, а затем нажать на целевого врага.
Пока что эточасть кода, который у меня есть:
public class FightScreen extends BaseScreen {
LevelScreen previousMap;
Champion fighterOne;
boolean turn = true; //variable to set the turn of the player, if true is players turn, otherwise enemy turn
EnemyFighters enemyOne;
EnemyFighters enemyTwo;
EnemyFighters enemyThree;
boolean firstAttack = false;
public FightScreen(LevelScreen prev){
super();
previousMap = prev;
}
public void initialize() {
//initialize the mapbackground
BaseActor fightBackground = new BaseActor(0,0, mainStage);
fightBackground.loadTexture( "assets/img/dungeon.png" );
fightBackground.setSize(800,600);
//initialize the actors at the screen
fighterOne = new WarriorOne(mainStage);
enemyOne = new BatFighter(mainStage);
enemyTwo = new SkeletonFighter(mainStage);
enemyThree = new ZombieFighter(mainStage);
//create the buttons
uiStage.addActor(fighterOne.getFirstButton());
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;
firstAttack = true;
System.out.println("we need a target please!");
return true;
}
);
enemyTwo.addListener(
(Event o) ->
{
if ( !(o instanceof InputEvent) )
return false;
if ( !((InputEvent)o).getType().equals(InputEvent.Type.touchDown) ){
return false;
}
if (firstAttack){
fighterOne.attackOne(enemyTwo);
firstAttack = false;
System.out.println("we delivered the attack! viva");
turn = !turn;
}else
return false;
return true;
}
);
}
public void update(float dt) {
if (!(turn)){
enemyOne.attackOne(fighterOne);
turn = !(turn);
System.out.println("we got attacked by enemy");
System.out.println("Our hero health is: "+ fighterOne.getHP());
}
if (Gdx.input.isButtonPressed(Input.Buttons.RIGHT)){
System.out.println("setting attack to false");
firstAttack = false;
}
}
}
Моя проблема заключается в том, что когда я нажимаю ЛЕВЫЙ щелчок мышью, и EventListener для fighterOne, и слушатель в обновлении вызывают вызов.
Можно ли прослушивать щелчок левой кнопкой мыши только в том случае, если в методе обновления класса не нажимается ни один объект?
Заранее спасибо.