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"); }
private PlayerEntity extractPuzzlePlayer() { List<PlayerEntity> players = getPlayers(); for (PlayerEntity player : players) { int entityId = getTag(player.getTags(), GameTag.HERO_ENTITY); FullEntity entity = (FullEntity) getEntity(entityId); if (entity == null) { continue; } int functionallyDeadTag = getTag(player.getTags(), GameTag.APPEAR_FUNCTIONALLY_DEAD); if (functionallyDeadTag != -1) { continue; } return player; } return null; }
private PlayerEntity extractMainPlayer() { List<ShowEntity> showEntities = filterGameData(ShowEntity.class); for (ShowEntity entity : showEntities) { if (StringUtils.isNotEmpty(entity.getCardId()) && getTag(entity.getTags(), GameTag.CARDTYPE) != CardType.ENCHANTMENT.getIntValue()) { int entityId = entity.getEntity(); // The full entity BaseEntity fullEntity = getEntity(entityId); // Now check the CONTROLLER tag int controllerId = getTag(fullEntity.getTags(), GameTag.CONTROLLER); for (PlayerEntity player : getPlayers()) { if (getTag(player.getTags(), GameTag.CONTROLLER) == controllerId) { return player; } } } } return null; }
((PlayerEntity) state.getNode().getObject()).getTags().add(tag);