@Override public void gameChanged(final IMPL game, final P initiatingPlayer, final boolean initiatingServer) { if (broadcasterFactory.getBroadcasterFactory() != null) { try { //noinspection unchecked List<P> players = game.getAllPlayers().stream() .map(p -> (P) p) .filter(x -> initiatingPlayer == null || !x.equals(initiatingPlayer)) .collect(Collectors.toList()); logger.trace( "Publishing {} to {} players.", game.getIdAsString(), players.size()); players.forEach(player -> publishWithRetry(new PlayerCallable() { @Override public Boolean call() throws Exception { return publishGameToPlayer(player, game); } })); } catch (Exception e) { logger.error("Error publishing game " + game.getId(), e); } } else { logger.warn("No broadcaster in game changed"); } }
@Override protected void copyMaskedData(final IMPL game, final Player<ID> player, final M playerMaskedGame, final Map<ID, Player<ID>> idMap) { super.copyMaskedData(game, player, playerMaskedGame, idMap); playerMaskedGame.setMaskedForPlayerMD5(player.getMd5()); playerMaskedGame.setMaskedForPlayerID(player.getIdAsString()); game.getAllPlayers().forEach(p -> { playerMaskedGame.getPlayers().put(p.getMd5(), p.getDisplayName()); playerMaskedGame.getPlayerImages().put(p.getMd5(), p.getImageUrl()); playerMaskedGame.getPlayerProfiles().put(p.getMd5(), p.getProfileUrl()); playerMaskedGame.getPlayerStates().put(p.getMd5(), game.getPlayerStates().get(p.getId())); }); playerMaskedGame.setInitiatingPlayer(idMap.get(game.getInitiatingPlayer()).getMd5()); }