Example usage for com.badlogic.gdx.scenes.scene2d.utils ClickListener clicked

List of usage examples for com.badlogic.gdx.scenes.scene2d.utils ClickListener clicked

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d.utils ClickListener clicked.

Prototype

public void clicked(InputEvent event, float x, float y) 

Source Link

Usage

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);
    }
}