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()); } }
private int updatePlayerEntity(ParserState state, String rawEntity, Tag tag, int entity) { if (!Utils.isInteger(rawEntity) && !rawEntity.startsWith("[") && !rawEntity.equals("GameEntity")) { if (entity != tag.getValue()) { entity = tag.getValue(); String tmpName = ((PlayerEntity) state.getCurrentGame().getData().get(1)).getName(); ((PlayerEntity) state.getCurrentGame().getData().get(1)) .setName(((PlayerEntity) state.getCurrentGame().getData().get(2)).getName()); ((PlayerEntity) state.getCurrentGame().getData().get(2)).setName(tmpName); for (Object obj : ((Game) state.getNode().getObject()).getData()) { TagChange tChange = obj instanceof TagChange ? (TagChange) obj : null; if (tChange != null) { tChange.setEntity(tChange.getEntity() == 2 ? 3 : 2); } } } } return entity; }
private void updateCurrentPlayer(ParserState state, String rawEntity, Tag tag) throws Exception { List<GameData> data = state.getCurrentGame().getData(); if (tag.getValue() == 0) { try { Helper.parseEntity(rawEntity, state); else if (tag.getValue() == 1) { try { Helper.parseEntity(rawEntity, state);
Tag zone = Helper.parseTag(tagName, value); HideEntity hideEntity = new HideEntity(timestamp, entity, zone.getValue()); state.updateCurrentNode(Game.class, Action.class); 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());