Example usage for com.badlogic.gdx.utils ObjectIntMap get

List of usage examples for com.badlogic.gdx.utils ObjectIntMap get

Introduction

In this page you can find the example usage for com.badlogic.gdx.utils ObjectIntMap get.

Prototype

public int get(K key, int defaultValue) 

Source Link

Usage

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