List of usage examples for com.badlogic.gdx.scenes.scene2d.utils ClickListener clicked
public void clicked(InputEvent event, float x, float y)
From source file:com.vlaaad.dice.game.world.behaviours.processors.user.UserAbilityCoordinateProcessor.java
License:Open Source License
@Override public IFuture<Grid2D.Coordinate> process(final AbilityCoordinatesParams params) { final Future<Grid2D.Coordinate> future = new Future<Grid2D.Coordinate>(); final World world = params.creature.world; this.world = world; world.getController(ViewController.class).showSelection(this, params.coordinates, "selection/move"); message = new GameMessage(Config.thesaurus.localize("game-select-cell"), world.stage); message.show();// ww w .j ava 2 s .c om mainListener = new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (event.isCancelled()) return; Vector2 c = world.getController(ViewController.class) .stageToWorldCoordinates(new Vector2(event.getStageX(), event.getStageY())); if (!world.inBounds(c.x, c.y)) return; final int cellX = (int) c.x; final int cellY = (int) c.y; boolean isAvailable = false; for (Grid2D.Coordinate coordinate : params.coordinates) { if (coordinate.x() == cellX && coordinate.y() == cellY) { isAvailable = true; break; } } if (!isAvailable) return; world.stage.removeListener(this); final ClickListener mainListener = this; confirm = new Image(Config.skin, "selection/turn-confirmation"); back = new Tile("selection/turn-confirmation-background"); confirm.setPosition(cellX * ViewController.CELL_SIZE, cellY * ViewController.CELL_SIZE); back.setPosition(confirm.getX(), confirm.getY()); world.getController(ViewController.class).notificationLayer.addActor(confirm); world.getController(ViewController.class).selectionLayer.addActor(back); additionalListener = new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (event.isCancelled()) return; Vector2 cell = world.getController(ViewController.class) .stageToWorldCoordinates(new Vector2(event.getStageX(), event.getStageY())); confirm.remove(); back.remove(); world.stage.removeListener(this); if (cellX == (int) cell.x && cellY == (int) cell.y) { UserAbilityCoordinateProcessor.this.cancel(); future.happen(new Grid2D.Coordinate(cellX, cellY)); } else { world.stage.addListener(mainListener); mainListener.clicked(event, x, y); } } }; world.stage.addListener(additionalListener); } }; world.stage.addListener(mainListener); return future; }
From source file:com.vlaaad.dice.game.world.behaviours.processors.user.UserAbilityCreatureProcessor.java
License:Open Source License
@Override public IFuture<Creature> process(AbilityCreatureParams params) { final World world = params.creature.world; this.world = world; final Array<Creature> targets = params.available; final Future<Creature> future = new Future<Creature>(); message = new GameMessage(Config.thesaurus.localize("game-select-target"), world.stage); Array<Grid2D.Coordinate> coordinates = new Array<Grid2D.Coordinate>(); for (Creature target : targets) { coordinates.add(new Grid2D.Coordinate(target.getX(), target.getY())); }/*from www. j a v a 2 s . com*/ world.getController(ViewController.class).showSelection(this, coordinates, "selection/move"); message.show(); clickListener = new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (event.isCancelled() || WindowManager.instance.isShown(CreatureInfoWindow.class)) return; ViewController viewController = world.getController(ViewController.class); Vector2 c = viewController .stageToWorldCoordinates(new Vector2(event.getStageX(), event.getStageY())); if (!world.inBounds(c.x, c.y)) return; Creature result = null; for (Creature target : targets) { if (target.getX() == c.x && target.getY() == c.y) { result = target; break; } } if (result != null) { final ClickListener mainListener = this; viewController.root.removeCaptureListener(this); confirm = new Image(Config.skin, "selection/turn-confirmation"); back = new Tile("selection/turn-confirmation-background"); confirm.setPosition(c.x * ViewController.CELL_SIZE, c.y * ViewController.CELL_SIZE); back.setPosition(confirm.getX(), confirm.getY()); viewController.notificationLayer.addActor(confirm); viewController.selectionLayer.addActor(back); confirmTargetListener = createConfirmTargetListener(confirm, back, mainListener, result, c.x, c.y); viewController.root.addCaptureListener(confirmTargetListener); } } private ClickListener createConfirmTargetListener(final Image confirm, final Tile back, final ClickListener mainListener, final Creature target, final float cellX, final float cellY) { return new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (event.isCancelled() || WindowManager.instance.isShown(CreatureInfoWindow.class)) { return; } Vector2 cell = world.getController(ViewController.class) .stageToWorldCoordinates(new Vector2(event.getStageX(), event.getStageY())); confirm.remove(); back.remove(); world.getController(ViewController.class).root.removeCaptureListener(this); if (cellX == (int) cell.x && cellY == (int) cell.y) { UserAbilityCreatureProcessor.this.cancel(); future.happen(target); event.cancel(); } else { world.getController(ViewController.class).root.addCaptureListener(mainListener); mainListener.clicked(event, x, y); } } }; } }; world.getController(ViewController.class).root.addCaptureListener(clickListener); return future; }
From source file:com.vlaaad.dice.game.world.behaviours.processors.user.UserTurnProcessor.java
License:Open Source License
@Override public IFuture<TurnResponse> process(final TurnParams params) { final Future<TurnResponse> future = new Future<TurnResponse>(); final World world = params.creature.world; this.world = world; final Creature creature = params.creature; final UiController ui = world.getController(UiController.class); final ObjectSet<Grid2D.Coordinate> available = new ObjectSet<Grid2D.Coordinate>(); available.addAll(params.availableCells); clickListener = new ClickListener() { @Override/* w w w . j a v a2s . co m*/ public void clicked(InputEvent event, float x, float y) { if (event.isCancelled()) return; Vector2 c = world.getController(ViewController.class) .stageToWorldCoordinates(new Vector2(event.getStageX(), event.getStageY())); final Grid2D.Coordinate coordinate = new Grid2D.Coordinate((int) c.x, (int) c.y); if (available.contains(coordinate)) { world.stage.removeListener(this); final ClickListener mainListener = this; confirm = new Image(Config.skin, "selection/turn-confirmation"); back = new Tile("selection/turn-confirmation-background"); confirm.setPosition(coordinate.x() * ViewController.CELL_SIZE, coordinate.y() * ViewController.CELL_SIZE); back.setPosition(confirm.getX(), confirm.getY()); world.getController(ViewController.class).notificationLayer.addActor(confirm); world.getController(ViewController.class).selectionLayer.addActor(back); confirmListener = new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (event.isCancelled()) return; Vector2 cell = world.getController(ViewController.class) .stageToWorldCoordinates(new Vector2(event.getStageX(), event.getStageY())); confirm.remove(); back.remove(); world.stage.removeListener(this); if (coordinate.x() == (int) cell.x && coordinate.y() == (int) cell.y) { UserTurnProcessor.this.cancel(); future.happen(new TurnResponse<Grid2D.Coordinate>(TurnResponse.TurnAction.MOVE, coordinate)); } else { world.stage.addListener(mainListener); mainListener.clicked(event, x, y); } } }; world.stage.addListener(confirmListener); } } }; world.stage.addListener(clickListener); Array<Ability> professionAbilities = creature.description.profession .getAvailableAbilities(creature.getCurrentLevel()); boolean professionTutorial = false; if (professionAbilities.size > 0) { for (Ability ability : professionAbilities) { ProfessionAbilityIcon icon = ui.getProfessionIcon(ability); icon.addListener(createListener(ability, creature, clickListener, world, future)); } if (!world.viewer.tutorialProvider.isProfessionAbilitiesTutorialCompleted()) { professionTutorial = true; Tutorial.whenAllTutorialsEnded(new Runnable() { @Override public void run() { Tutorial.TutorialResources resources = Tutorial.resources() .with("tutorial-provider", world.viewer.tutorialProvider).with("world", world) .with("stage", world.stage); new Tutorial(resources, DiceTutorial.professionAbilitiesTasks()).start(); } }); } } if (!professionTutorial && !world.viewer.tutorialProvider.isPlayPotionsTutorialCompleted() && world.viewer.hasPotions()) { Tutorial.whenAllTutorialsEnded(new Runnable() { @Override public void run() { Tutorial.TutorialResources resources = Tutorial.resources() .with("tutorial-provider", world.viewer.tutorialProvider).with("world", world) .with("stage", world.stage); new Tutorial(resources, DiceTutorial.playPotionsTasks()).start(); } }); } if (ui != null) { ui.potionsButton.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { new PotionsPlayWindow() .show(new PotionsPlayWindow.Params(creature, world, new PotionsPlayWindow.Callback() { @Override public void usePotion(Ability potion, Potion.ActionType action) { UserTurnProcessor.this.cancel(); future.happen(new TurnResponse<Tuple2<Ability, Potion.ActionType>>( TurnResponse.TurnAction.POTION, Tuple2.make(potion, action))); } })); } }); } return future; }
From source file:com.vlaaad.dice.ui.windows.CreatureInfoWindow.java
License:Open Source License
@Override protected void doShow(final Params params) { this.params = params; table.clearChildren();/*from w w w .jav a2s .c o m*/ Table info = new Table(Config.skin); info.setBackground(Config.skin.getDrawable("ui-creature-info-background")); Ability current = params.creature.getCurrentAbility(); LocLabel itemDescriptionLabel = new LocLabel("ui-creature-info-window-ability-description", Thesaurus.params().with("name", current.locNameKey()).with("desc", current.locDescKey()), DESCRIPTION); itemDescriptionLabel.setWrap(true); itemDescriptionLabel.setAlignment(Align.center); LocLabel effectDescriptionLabel = new LocLabel("ui-creature-info-window-no-effects", Thesaurus.params().with("name", params.creature.description.nameLocKey()), DESCRIPTION); effectDescriptionLabel.setWrap(true); effectDescriptionLabel.setAlignment(Align.center); Image itemSelection = new Image(Config.skin.getDrawable("ui-creature-info-ability-selection")); Table abilityIcons = new Table(); abilityIcons.padTop(5); boolean selected = false; int i = 0; for (Ability ability : params.creature) { AbilityIcon image = new AbilityIcon(ability); Group imageGroup = new Group(); imageGroup.setSize(image.getWidth(), image.getHeight()); imageGroup.addActor(image); abilityIcons.add(imageGroup); ClickListener listener = createListener(imageGroup, itemSelection, itemDescriptionLabel, ability, params.creature); if (!selected && i == params.creature.getCurrentAbilityIndex()) { selected = true; listener.clicked(null, 0, 0); } image.addListener(listener); if (i == 3) { abilityIcons.row(); abilityIcons.add(); } i++; } Image effectSelection = new Image(Config.skin.getDrawable("ui-creature-info-ability-selection")); Table effectsIcons = new Table(); effectsIcons.padTop(5); i = 0; boolean hasEffects = params.creature.effects.size > 0; for (CreatureEffect effect : params.creature.effects) { if (effect.isHidden()) continue; Image effectIcon = new Image(Config.skin, effect.getUiIconName()); Group imageGroup = new Group(); imageGroup.setSize(24, 24); imageGroup.addActor(effectIcon); effectIcon.setPosition(imageGroup.getWidth() / 2 - effectIcon.getWidth() / 2, imageGroup.getHeight() / 2 - effectIcon.getHeight() / 2); effectsIcons.add(imageGroup); ClickListener listener = createListener(imageGroup, effectSelection, effectDescriptionLabel, effect, params.creature); if (i == 0) { listener.clicked(null, 0, 0); } effectIcon.addListener(listener); if (i == 3) { abilityIcons.row(); } i++; } WorldObjectView view = ViewController.createView(params.world.viewer, params.world.playerColors, params.creature); view.removeSubView("name"); view.removeSubView(CreatureEffect.class); Table headerLabels = new Table(); headerLabels.align(Align.left); headerLabels.add(new LocLabel("ui-creature-info-name", Thesaurus.params().with("name", params.creature.description.nameLocKey()).with("profession", params.creature.profession.locKey()))) .expandX().fillX().row(); if (params.creature.player == params.world.viewer) { headerLabels .add(new LocLabel("ui-creature-info-ally-info", Thesaurus.params().with("level", String.valueOf(params.creature.getCurrentLevel())))) .padTop(-4).expandX().fillX().row(); } else { headerLabels.add(new LocLabel("ui-creature-info-enemy-info")).expandX().fillX().padTop(-4).row(); } Table header = new Table(Config.skin); header.align(Align.left); header.add(view).padTop(7).padRight(4).left(); header.add(headerLabels).left().row(); if (params.creature.player == params.world.viewer) { float progress = params.creature.description.profession .getLevelProgress(params.creature.getCurrentExp()); header.add(new ExpBar(progress)).width(ViewController.CELL_SIZE * 4).padLeft(3).padTop(4).left() .colspan(2).row(); } Array<Ability> professionAbilities = params.creature.profession.getAvailableAbilities(); Table pa = new Table(); pa.defaults().padTop(4); for (Ability a : professionAbilities) { ProfessionAbilityIcon icon = new ProfessionAbilityIcon(params.creature, a); pa.add(icon).row(); icon.addListener(createProfessionAbilityListener(params.creature, a)); if (!a.requirement.isSatisfied(params.creature.description)) { icon.getColor().a = 0.3f; } } Table headerTable = new Table(); headerTable.add(header); headerTable.add(pa).expandX().right().padRight(3).padTop(2); info.add(headerTable).expandX().fillX().left().row(); final TabPane tabPane = new TabPane(Config.skin); Table itemsHeader = new Table(); itemsHeader.align(Align.left); itemsHeader.add(new Image(Config.skin, "ui-creature-info-window-icon-items")).padRight(2); itemsHeader.add(new LocLabel("ui-creature-info-items")).padTop(-4).expandX().fillX().align(Align.left); Table effectsHeader = new Table(); effectsHeader.align(Align.left); effectsHeader.add(new Image(Config.skin, "ui-creature-info-window-icon-effects")).padRight(2); effectsHeader.add(new LocLabel("ui-creature-info-effects")).padTop(-4).expandX().fillX().align(Align.left); Table itemsTab = new Table(); itemsTab.add(abilityIcons).padTop(5).row(); itemsTab.add(new Image(Config.skin.getDrawable("ui-creature-info-line"))) .width(ViewController.CELL_SIZE * 4 - 16).padTop(5).row(); itemsTab.add(itemDescriptionLabel).width(ViewController.CELL_SIZE * 4 + 32).height(50).pad(5); Table effectsTab = new Table(); if (hasEffects) { effectsTab.add(effectsIcons).minHeight(48).padTop(10).row(); effectsTab.add(new Image(Config.skin.getDrawable("ui-creature-info-line"))) .width(ViewController.CELL_SIZE * 4 - 16).padTop(5).row(); } effectsTab.add(effectDescriptionLabel).width(ViewController.CELL_SIZE * 4 + 32).height(50).pad(5); tabPane.addTab(itemsHeader, itemsTab); tabPane.addTab(effectsHeader, effectsTab); info.add(tabPane).padTop(5).padBottom(-2).padLeft(-2).padRight(-2); info.setTouchable(Touchable.enabled); table.add(info); }
From source file:com.vlaaad.dice.ui.windows.SelectAbilityWindow.java
License:Open Source License
@Override protected void doShow(Params params) { this.params = params; Table content = new Table(Config.skin); content.defaults().pad(2);/* ww w .j a v a2 s .c o m*/ content.setBackground("ui-inventory-ability-window-background"); table.add(content); TextButton button = new LocTextButton("ui-select"); Image itemSelection = new Image(Config.skin.getDrawable("ui-creature-info-ability-selection")); LocLabel itemDescriptionLabel = new LocLabel("ui-creature-info-window-ability-description", Thesaurus.params().with("name", params.abilities.first().locNameKey()).with("desc", params.abilities.first().locDescKey()), DESCRIPTION); itemDescriptionLabel.setWrap(true); itemDescriptionLabel.setAlignment(Align.center); Label label = new LocLabel("ui-select-ability-for-" + params.ability.name, Thesaurus.params().with("die", params.creature.description.nameLocKey())); label.setWrap(true); label.setAlignment(Align.center); content.add(label).width(110).row(); content.add(new Image(Config.skin, "ui-creature-info-line")).width(80).row(); int i = 0; Table row = new Table(); content.add(row).row(); for (Ability ability : params.abilities) { Group group = new Group(); AbilityIcon icon = new AbilityIcon(ability); group.addActor(icon); group.setSize(icon.getPrefWidth(), icon.getPrefHeight()); row.add(group); ClickListener clickListener = createListener(ability, button, itemSelection, group, itemDescriptionLabel); icon.addListener(clickListener); if (i == 0) { clickListener.clicked(null, 0, 0); } if (i % 3 == 2 && i != params.abilities.size - 1) { row = new Table(); content.add(row).row(); } i++; } content.add(new Image(Config.skin, "ui-creature-info-line")).width(80).row(); content.add(itemDescriptionLabel).width(ViewController.CELL_SIZE * 4 + 32).height(50).row(); content.add(button).padTop(6).padBottom(6).width(70); button.setDisabled(true); button.addListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { hide(); } }); particles = new ParticleActor(Config.particles.get("ability-concentration").obtain()); table.addActor(particles); table.layout(); particles.toBack(); particles.setPosition(content.getX() + content.getPrefWidth() / 2, content.getY() + content.getPrefHeight() / 2); for (ParticleEmitter emitter : particles.effect.getEmitters()) { emitter.getSpawnWidth().setHigh(content.getPrefWidth() + PARTICLE_OFFSET * 2); emitter.getSpawnHeight().setHigh(content.getPrefHeight() + PARTICLE_OFFSET * 2); } }