List of usage examples for com.badlogic.gdx.utils ObjectIntMap get
public int get(K key, int defaultValue)
From source file:com.vlaaad.dice.game.config.abilities.Ability.java
License:Open Source License
public static Comparator<? super Ability> countComparator(UserData userData) { final ObjectIntMap<Ability> counts = new ObjectIntMap<Ability>(); for (Die die : userData.dice()) { for (ObjectIntMap.Entry<Ability> e : die.inventory) counts.getAndIncrement(e.key, e.value, e.value); for (Ability ability : die.abilities) if (ability != null) counts.getAndIncrement(ability, 0, 1); }/*from w w w. j ava 2 s . c om*/ return new Comparator<Ability>() { @Override public int compare(Ability o1, Ability o2) { return counts.get(o1, 0) - counts.get(o2, 0); } }; }
From source file:com.vlaaad.dice.game.user.UserData.java
License:Open Source License
public void withdrawItems(ObjectIntMap<Item> cost) { for (Item item : cost.keys()) { decrementItemCount(item, cost.get(item, 0)); }// www.j a v a 2s. c o m }
From source file:com.vlaaad.dice.game.user.UserData.java
License:Open Source License
public void setPotions(ObjectIntMap<Ability> potionCount) { potions.clear();/*from w w w . j av a 2s.c om*/ for (Ability potion : potionCount.keys()) { int currentCount = potions.get(potion, 0); int newCount = potionCount.get(potion, 0); if (currentCount != newCount) { potions.put(potion, newCount); onPotionCountChanged.dispatch(potion); } } }
From source file:com.vlaaad.dice.game.user.UserData.java
License:Open Source License
public boolean canWithdraw(ObjectIntMap<Item> items) { for (Item item : items.keys()) { int count = items.get(item, 0); if (count > this.items.get(item, 0)) return false; }//from w ww . ja va 2 s . co m return true; }
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())); }/*w w w . ja va 2s .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.players.Player.java
License:Open Source License
public void earn(ObjectIntMap<Item> items) { for (Item item : items.keys()) { earnedItems.getAndIncrement(item, 0, items.get(item, 0)); }//from w w w . ja va 2 s. c om }
From source file:com.vlaaad.dice.game.world.view.visualizers.CleaveVisualizer.java
License:Open Source License
@Override public IFuture<Void> visualize(final CleaveResult result) { final Future<Void> future = new Future<Void>(); final CountDown countDown = new CountDown(result.results.size + 1, new Runnable() { @Override//from w ww . jav a 2s.c om public void run() { future.happen(); } }); final WorldObjectView actorView = visualizer.viewController.getView(result.creature); final AnimationSubView appear = new AnimationSubView(0.05f, Config.findRegions("animation/attack-" + result.attackType + "-" + result.attackLevel), Animation.PlayMode.NORMAL); visualizer.viewController.world.dispatcher.dispatch(ResultVisualizer.VISUALIZE_ATTACK, result.creature); actorView.addSubView(appear); //appear actorView.addListener(new AnimationListener() { @Override protected void onAnimationEvent(AnimationEvent event) { actorView.removeListener(this); actorView.removeSubView(appear); final ImageSubView sword = new ImageSubView( "animation/attack-" + result.attackType + "-" + result.attackLevel + "-diagonal"); actorView.addSubView(sword); //cleave sword.getActor() .addAction(Actions.sequence( Actions.moveBy(ViewController.CELL_SIZE / 2, ViewController.CELL_SIZE / 2, 0.1f), Actions.run(new Runnable() { @Override public void run() { for (Creature target : result.targets) { visualizer.viewController .visualize(new Defence(target, result.attackType)); } } }), Actions.parallel(Actions.rotateBy(360, 0.15f), Actions.sequence(Actions.delay(0.07f), Actions.run(new Runnable() { @Override public void run() { for (IActionResult sub : result.results) { SequenceResult sequence = (SequenceResult) sub; AttackResult attackResult = (AttackResult) sequence.results .get(0); String soundName = result.attackType.toString() + (attackResult.success ? "-kill" : "-miss"); SoundManager.instance.playSoundIfExists(soundName); if (attackResult.success) { visualizer.viewController .visualize(new Death(attackResult.creature, attackResult.target)) .addListener(countDown); } else { countDown.tick(); } } } }))), Actions.run(new Runnable() { @Override public void run() { //disappear actorView.removeSubView(sword); Array<TextureAtlas.AtlasRegion> appearRegions = Config.findRegions( "animation/attack-" + result.attackType + "-" + result.attackLevel); Array<TextureAtlas.AtlasRegion> disappearRegions = new Array<TextureAtlas.AtlasRegion>( appearRegions); disappearRegions.removeIndex(1); disappearRegions.reverse(); final AnimationSubView disappear = new AnimationSubView(0.1f, disappearRegions, Animation.PlayMode.NORMAL); actorView.addSubView(disappear); actorView.addListener(new AnimationListener() { @Override protected void onAnimationEvent(AnimationEvent event) { actorView.removeListener(this); actorView.removeSubView(disappear); ObjectIntMap<Creature> expResults = new ObjectIntMap<Creature>(); for (IActionResult sub : result.results) { GiveExpResult expResult = (GiveExpResult) ((SequenceResult) sub).results .get(1); if (expResult.creature.player == expResult.creature.world.viewer) { expResults.getAndIncrement(expResult.creature, 0, expResult.exp); } } if (expResults.size == 0) { countDown.tick(); return; } IActionResult[] expArray = new IActionResult[expResults.size]; int i = 0; for (Creature creature : expResults.keys()) { expArray[i] = new GiveExpResult(creature, expResults.get(creature, 0)); i++; } SequenceResult seq = new SequenceResult(expArray); visualizer.visualize(seq).addListener(new IFutureListener<Void>() { @Override public void onHappened(Void aVoid) { countDown.tick(); } }); } }); } }))); } }); return future; }
From source file:com.vlaaad.dice.pvp.ServerMessageListener.java
License:Open Source License
private void applyDrop(ObjectIntMap<Item> droppedItems, Array<PlacedCreature> dice) { for (PlacedCreature c : dice) { c.drop.clear();/*from w w w . j av a2s. c o m*/ } final ObjectIntMap<PlacedCreature> weights = new ObjectIntMap<PlacedCreature>(); int total = 0; for (PlacedCreature creature : dice) { int cost = creature.exp; weights.put(creature, cost); total += cost; } dice.sort(new Comparator<PlacedCreature>() { @Override public int compare(PlacedCreature o1, PlacedCreature o2) { return weights.get(o2, 0) - weights.get(o1, 0); } }); ObjectMap<PlacedCreature, ObjectIntMap<Item>> drop = new ObjectMap<PlacedCreature, ObjectIntMap<Item>>(); for (PlacedCreature creature : dice) { drop.put(creature, new ObjectIntMap<Item>()); } for (Item item : droppedItems.keys()) { int count = droppedItems.get(item, 1); float factor = count / (float) total; int distributedCount = 0; for (PlacedCreature creature : dice) { 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) { PlacedCreature random = dice.random(); drop.get(random).getAndIncrement(item, 0, 1); distributedCount++; } } } for (PlacedCreature creature : drop.keys()) { for (ObjectIntMap.Entry<Item> e : drop.get(creature).entries()) { creature.drop.put(e.key.id, e.value); } } }
From source file:com.vlaaad.dice.ui.components.CraftingPane.java
License:Open Source License
private boolean inputMatches(ObjectIntMap<Item> in, ObjectIntMap<Item> req) { ObjectIntMap<Item> cost = tmp2; cost.clear();/*w w w . java2 s. co m*/ cost.putAll(req); ObjectIntMap<Item> resources = tmp3; resources.clear(); resources.putAll(in); for (Item item : resources.keys()) { int required = cost.get(item, 0); int existed = resources.get(item, 0); if (required > existed) return false; if (required == 0) continue; cost.remove(item, 0); resources.getAndIncrement(item, 0, -required); } if (cost.size == 0) return true; for (Item unsatisfied : cost.keys()) { if (unsatisfied.type != Item.Type.anyIngredient) return false; int required = cost.get(unsatisfied, 0); for (Item item : resources.keys()) { int withdrawCount = Math.min(resources.get(item, 0), required); if (withdrawCount == 0) continue; required -= withdrawCount; resources.getAndIncrement(item, 0, -withdrawCount); cost.getAndIncrement(unsatisfied, 0, -withdrawCount); if (required == 0) break; } } for (Item unsatisfied : cost.keys()) { if (cost.get(unsatisfied, 0) != 0) return false; } return true; }
From source file:com.vlaaad.dice.ui.util.RewardViewHelper.java
License:Open Source License
public static Table createRewardsView(Iterable<RewardResult> rewards, ObjectIntMap<Item> earnedItems, UserData userData) {/*from w ww .ja v a 2 s. co m*/ Table rewardList = new Table(Config.skin); rewardList.setTransform(true); rewardList.padTop(18).padBottom(14); Array<AddedDie> dieRewards = new Array<AddedDie>(); Array<AddedAbility> abilityRewards = new Array<AddedAbility>(); ObjectIntMap<Item> earned = new ObjectIntMap<Item>(earnedItems); for (RewardResult reward : rewards) { if (reward instanceof AddedItems) { final AddedItems addedItems = (AddedItems) reward; earned.getAndIncrement(addedItems.item, 0, addedItems.addedCount); } else if (reward instanceof AddedDie) { dieRewards.add(((AddedDie) reward)); } else if (reward instanceof AddedAbility) { abilityRewards.add(((AddedAbility) reward)); } else { throw new IllegalArgumentException("unknown reward: " + reward); } } if (earned.size > 0) { Table items = new Table(); items.setTransform(true); Array<Item> sorted = earned.keys().toArray(); sorted.sort(Item.ORDER_COMPARATOR); for (Item item : sorted) { Table rewardView = new Table(Config.skin); Image image = new Image(Config.skin, "item/" + item.name); Label counter = new Label(String.valueOf(earned.get(item, 0)), Config.skin, "default", VICTORY_TEXT_COLOR); counter.setFontScale(2f); rewardView.add(image).size(image.getPrefWidth() * 2, image.getPrefHeight() * 2).pad(-6); rewardView.add(counter).padTop(-5); items.add(rewardView); } rewardList.add(items).padTop(-10).row(); } if (dieRewards.size > 0) { Label joins = new LocLabel("ui-reward-window-new-die", VICTORY_TEXT_COLOR); joins.setWrap(true); joins.setAlignment(Align.center); rewardList.add(joins).width(80).row(); Table dice = new Table(); dice.setTransform(true); for (AddedDie reward : dieRewards) { dice.add(ViewController.createView(new Creature(reward.die, PlayerHelper.defaultProtagonist))); } rewardList.add(dice).padTop(15).row(); } if (abilityRewards.size > 0) { HorizontalGroup abilities = new HorizontalGroup(); abilities.center().padTop(15).space(10).padLeft(-4); for (AddedAbility reward : abilityRewards) { final AbilityIcon icon = new AbilityIcon(reward.ability); icon.setColor(UNIQUE_DARK); abilities.addActor(new Container<AbilityIcon>(icon) .size(icon.getPrefWidth() * 2, icon.getPrefHeight() * 2).pad(-12)); abilities.addActor( ViewController.createView(new Creature(reward.die, PlayerHelper.defaultProtagonist))); } final VerticalGroup group = new VerticalGroup(); final Label label = new Label(Thesaurus.Util.enumerate(Config.thesaurus, abilityRewards, new Thesaurus.Util.Stringifier<AddedAbility>() { @Override public String toString(AddedAbility info) { return Config.thesaurus.localize("die-gets-ability", Thesaurus.params().with("die", info.die.nameLocKey()).with("ability", info.ability.locNameKey() + ".acc")); } }), Config.skin, "default", VICTORY_TEXT_COLOR); label.setAlignment(Align.center); group.addActor(label); group.addActor(abilities); rewardList.add(group).padTop(10).row(); } return rewardList; }