List of usage examples for com.badlogic.gdx.utils Array truncate
public void truncate(int newSize)
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); }