Example usage for com.badlogic.gdx.utils Array truncate

List of usage examples for com.badlogic.gdx.utils Array truncate

Introduction

In this page you can find the example usage for com.badlogic.gdx.utils Array truncate.

Prototype

public void truncate(int newSize) 

Source Link

Document

Reduces the size of the array to the specified size.

Usage

From source file:com.theosirian.ppioo.controllers.PlayerSelectionController.java

License:Open Source License

@Override
protected void createComponents() {
    percentFormatter = NumberFormat.getPercentInstance();
    percentFormatter.setMaximumFractionDigits(0);

    playerPlayerComp = new PlayerComp(Player.firstNameComparator, false);

    rootLayout = new Table();
    rootLayout.setFillParent(true);/*from  w w  w  . j a v a2 s  .c  o m*/
    rootLayout.setBackground(game.skin.newDrawable("white", Color.DARK_GRAY));

    titleLabel = new Label("Please choose your players and positions:", game.skin, "big.white");
    titleLabel.setAlignment(2); // 2 == center

    randomizePlayersButton = new TextButton("Randomize Players", game.skin);
    randomizePlayersButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.getSoundController().soundPlay(1);
            Array<Player> copy = game.data.getOwnedPlayers();
            copy.shuffle();
            copy.truncate(game.data.getTeamSize());
            game.data.getTeam().clear();
            game.data.getTeam().addAll(copy);
            invalidate();
        }
    });
    randomizePositionsButton = new TextButton("Randomize Positions", game.skin);
    randomizePositionsButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.getSoundController().soundPlay(1);
            game.data.getTeam().shuffle();
            invalidate();
        }
    });
    playerSortButton = new TextButton("Sort Players", game.skin);
    playerSortButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.getSoundController().soundPlay(1);
            Dialog info = new PlayerSortDialog("Sort Players By:", game.skin, false) {
                @Override
                protected void result(Object object) {
                    if (object == null) {
                        return;
                    }
                    playerPlayerComp = (PlayerComp) object;
                    PlayerSelectionController.this.invalidate();
                }
            };
            info.show(game.stage);
            invalidate();
        }
    });
    positionSortButton = new TextButton("Sort Positions", game.skin);
    positionSortButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.getSoundController().soundPlay(1);
            Dialog info = new PlayerSortDialog("Sort Positions By:", game.skin, false) {
                @Override
                protected void result(Object object) {
                    if (object == null) {
                        return;
                    }
                    positionPlayerComp = (PlayerComp) object;
                    PlayerSelectionController.this.invalidate();
                }
            };
            info.show(game.stage);
            invalidate();
        }
    });
    clearButton = new TextButton("Clear", game.skin);
    clearButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.getSoundController().soundPlay(1);
            game.data.getTeam().clear();
            invalidate();
        }
    });

    backButton = new TextButton("Return", game.skin, "error");
    backButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.getSoundController().soundPlay(1);
            game.changeController = MenuController.class;
        }
    });
    helpButton = new TextButton("Help", game.skin);
    helpButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            game.getSoundController().soundPlay(1);
            Dialog info = new Dialog("Help!", game.skin);
            info.text(
                    "In this screen you are shown your players in the left and the current team setup in the right.\n"
                            + "To advance you need to select 6 players and their positions, one goalkeeper and five kickers.");
            info.button("Close", false);
            info.key(Input.Keys.ENTER, false);
            info.key(Keys.ESCAPE, false);
            info.show(game.stage);
        }
    });
    proceedButton = new TextButton("Proceed", game.skin, "success");
    proceedButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (game.data.getTeam().size == game.data.getTeamSize()) {
                game.getSoundController().soundPlay(1);
                game.changeController = GameController.class;
            } else {
                Dialog info = new Dialog("Team not selected!", game.skin);
                info.text("You haven't selected the right amount of players.\nPlease select "
                        + game.data.getTeamSize() + " players.");
                info.button("Close", false);
                info.key(Input.Keys.ENTER, false);
                info.key(Keys.ESCAPE, false);
                info.show(game.stage);
            }
        }
    });

    playersTable = new Table();
    positionsTable = new Table();
    playersPane = new ScrollPane(playersTable, game.skin);
    positionsPane = new ScrollPane(positionsTable, game.skin);
}

From source file:com.vlaaad.dice.game.world.behaviours.processors.ai.AiShamanEnthrallmentProcessor.java

License:Open Source License

@Override
protected int preProcess(Creature creature, Ability ability) {
    Array<Creature> enemies = tmp;
    for (Creature c : creature.world.byType(Creature.class)) {
        if (!c.inRelation(Creature.CreatureRelation.enemy, creature))
            continue;
        enemies.add(c);/*from  ww w .  ja va 2s. co  m*/
    }
    if (enemies.size == 0)
        return -1;
    enemies.sort(VALUE_COMPARATOR);
    if (enemies.size > 1) {
        enemies.truncate(enemies.size / 2);
    }
    for (Creature e : enemies) {
        if (tmpVec.set(e.getX(), e.getY()).dst2(creature.getX(), creature.getY()) <= radius * radius) {
            tmp.clear();
            return 3;
        }
    }
    tmp.clear();
    return -1;
}

From source file:com.vlaaad.dice.game.world.controllers.PveLoadLevelController.java

License:Open Source License

@Override
protected void start() {
    LevelDescription description = world.level;
    for (Map.Entry<Grid2D.Coordinate, String> entry : description.getElements(LevelElementType.tile)) {
        world.dispatcher.dispatch(LOAD_TILE,
                new TileInfo(entry.getKey().x(), entry.getKey().y(), entry.getValue()));
    }/*from  www  .j a va2s  . c o m*/
    ObjectMap<Grid2D.Coordinate, Creature> creatures = new ObjectMap<Grid2D.Coordinate, Creature>();
    Array<Creature> dropCreatures = new Array<Creature>();
    ObjectMap<Creature, ObjectIntMap<Item>> drop = new ObjectMap<Creature, ObjectIntMap<Item>>();
    Player antagonist = world.players.get(PlayerHelper.antagonist);
    for (Map.Entry<Grid2D.Coordinate, Die> entry : description.getElements(LevelElementType.enemy)) {
        Creature creature = antagonist.addCreature(entry.getValue());
        creatures.put(entry.getKey(), creature);
    }
    for (Creature creature : creatures.values()) {
        dropCreatures.add(creature);
    }
    final ObjectIntMap<Creature> weights = new ObjectIntMap<Creature>();
    int total = 0;
    for (Creature creature : dropCreatures) {
        int cost = ExpHelper.getTotalCost(creature);
        weights.put(creature, cost);
        total += cost;
    }
    dropCreatures.sort(new Comparator<Creature>() {
        @Override
        public int compare(Creature o1, Creature o2) {
            return weights.get(o2, 0) - weights.get(o1, 0);
        }
    });
    if (dropCreatures.size > 1) {
        dropCreatures.truncate(Math.max(1, dropCreatures.size * 3 / 5));
    }

    for (Creature creature : dropCreatures) {
        drop.put(creature, new ObjectIntMap<Item>());
    }
    //        Logger.debug("drop: " + world.level.drop);
    ObjectIntMap<Item> droppedItems = world.level.drop.roll();
    //        Logger.debug("rolled: " + droppedItems);
    for (Item item : droppedItems.keys()) {
        int count = droppedItems.get(item, 1);
        float factor = count / (float) total;
        int distributedCount = 0;
        for (Creature creature : dropCreatures) {
            int creatureItemCount = (int) (weights.get(creature, 0) * factor);
            drop.get(creature).put(item, creatureItemCount);
            distributedCount += creatureItemCount;
        }
        if (distributedCount > count)
            throw new IllegalStateException("OMG! distributed " + item + " more than should! drop: " + drop
                    + ", to distribute: " + droppedItems);
        if (distributedCount < count) {
            while (distributedCount < count) {
                Creature random = dropCreatures.random();
                drop.get(random).getAndIncrement(item, 0, 1);
                //                    Logger.debug("added lost 1 " + item + " to " + random + "!");
                distributedCount++;
            }
        }
    }
    for (Creature creature : drop.keys()) {
        creature.setDrop(drop.get(creature));
        //            Logger.debug("set drop: " + creature + " => " + creature.drop);
    }
    for (Grid2D.Coordinate coordinate : creatures.keys()) {
        world.add(coordinate.x(), coordinate.y(), creatures.get(coordinate));
    }
    for (Map.Entry<Grid2D.Coordinate, Obstacle> entry : description.getElements(LevelElementType.obstacle)) {
        world.add(entry.getKey().x(), entry.getKey().y(), entry.getValue());
    }
    for (Map.Entry<Grid2D.Coordinate, StepDetector> entry : description
            .getElements(LevelElementType.stepDetector)) {
        world.add(entry.getKey().x(), entry.getKey().y(), entry.getValue());
    }
    for (Map.Entry<Grid2D.Coordinate, Fraction> entry : description.getElements(LevelElementType.spawn)) {
        world.dispatcher.dispatch(ADD_SPAWN_POINT,
                new SpawnPoint(entry.getKey().x(), entry.getKey().y(), entry.getValue()));
    }
    world.dispatcher.dispatch(LEVEL_LOADED, null);
}

From source file:com.vlaaad.dice.game.world.controllers.SpawnController.java

License:Open Source License

@SuppressWarnings("unchecked")
private void autoPlace() {
    if (placed.size > 0) {
        ObjectSet<Creature> tmp = Pools.obtain(ObjectSet.class);
        tmp.addAll(placed);/*ww w.  j  av  a 2  s  .c o m*/
        for (Creature c : tmp) {
            removeFromPlaced(c);
        }
        tmp.clear();
        Pools.free(tmp);
    }
    Array<Grid2D.Coordinate> coordinates = Pools.obtain(Array.class);
    Set<Map.Entry<Grid2D.Coordinate, Fraction>> spawns = world.level.getElements(LevelElementType.spawn);
    for (Map.Entry<Grid2D.Coordinate, Fraction> e : spawns) {
        if (e.getValue() == world.viewer.fraction) {
            coordinates.add(e.getKey());
        }
    }
    coordinates.shuffle();
    int usedCount = Math.min(creatures.size, coordinates.size);
    Array<Creature> toPlace = Pools.obtain(Array.class);
    toPlace.addAll(creatures);
    toPlace.shuffle();
    toPlace.truncate(usedCount);
    for (Creature creature : toPlace) {
        Grid2D.Coordinate coordinate = coordinates.pop();
        place(creature, coordinate.x(), coordinate.y());
    }
    toPlace.clear();
    coordinates.clear();
    Pools.free(toPlace);
    Pools.free(coordinates);
}