private int getTag(List<Tag> tags, GameTag tag) { return tags.stream() .filter(t -> t.getName() == tag.getIntValue()) .findFirst() .map(Tag::getValue) .orElse(-1); }
private String getPlayerCardId(HearthstoneReplay replay, PlayerEntity player) { List<GameData> data = replay.getGames().get(0).getData(); int playerEntityId = player.getTags().stream().filter(t -> t.getName() == GameTag.HERO_ENTITY.getIntValue()) .findFirst().get().getValue(); FullEntity playerEntity = data.stream().filter(d -> (d instanceof FullEntity)).map(e -> (FullEntity) e) .filter(e -> e.getId() == playerEntityId).findFirst().get(); return playerEntity.getCardId(); }
private String getPlayerClass(HearthstoneReplay replay, PlayerEntity player) { List<GameData> data = replay.getGames().get(0).getData(); int playerEntityId = player.getTags().stream().filter(t -> t.getName() == GameTag.HERO_ENTITY.getIntValue()) .findFirst().get().getValue(); FullEntity playerEntity = data.stream().filter(d -> (d instanceof FullEntity)).map(e -> (FullEntity) e) .filter(e -> e.getId() == playerEntityId).findFirst().get(); return cardsList.getDbCards().stream() .filter(c -> playerEntity.getCardId().equalsIgnoreCase(c.getId())) .findFirst() .map(DbCard::getPlayerClass) .map(String::toLowerCase) .orElse("unknown"); }
static List<HasTag> from(BaseEntity entity) { return entity.getTags().stream() .map(t -> new HasTag(entity.getId(), t.getName(), t.getValue())) .collect(Collectors.toList()); } }
@SuppressWarnings("unchecked") public static Tag parseTag(String tagName, String value) throws Exception { Class tagType = null; Tag tag = new Tag(); tag.setName(GameTag.parseEnum(tagName)); if (tagTypes.containsKey(tag.getName())) { tagType = tagTypes.get(tag.getName()); // TODO: not clean. That's what you get when you translate directly // from C# to Java... tag.setValue((Integer) tagType.getMethod("parseEnum", String.class).invoke(null, value)); } else { try { int tagValue = Integer.parseInt(value); tag.setValue(tagValue); } catch (Exception e) { throw new Exception(String.format("Unhandled tag value: {0}={1}", tagName, value)); } } return tag; }
Tag tag = Helper.parseTag(tagName, value); if (tag.getName() == GameTag.CURRENT_PLAYER.getIntValue()) { if (state.getFirstPlayerId() == -1) { state.setFirstPlayerId(Integer.parseInt(rawEntity)); if (tag.getName() == GameTag.ENTITY_ID.getIntValue()) { entity = updatePlayerEntity(state, rawEntity, tag, entity); TagChange tagChange = new TagChange(entity, tag.getName(), tag.getValue()); state.updateCurrentNode(Game.class, Action.class); log.debug("\thandling tag change " + tagChange + " on current node " + state.getNode().getType()); Tag tag = Helper.parseTag(tagName, value); if (tag.getName() == GameTag.CURRENT_PLAYER.getIntValue()) { state.setFirstPlayerId(((PlayerEntity) state.getNode().getObject()).getId());