Search in sources :

Example 1 with ClearRegionMessage

use of org.apollo.game.message.impl.ClearRegionMessage in project apollo by apollo-rsps.

the class PrePlayerSynchronizationTask method sendUpdates.

/**
 * Sends the updates for a {@link Region}
 *
 * @param position The {@link Position} of the last known region.
 * @param differences The {@link Set} of {@link RegionCoordinates} of Regions that changed.
 * @param full The {@link Set} of {@link RegionCoordinates} of Regions that require a full update.
 */
private void sendUpdates(Position position, Set<RegionCoordinates> differences, Set<RegionCoordinates> full) {
    RegionRepository repository = player.getWorld().getRegionRepository();
    int height = position.getHeight();
    for (RegionCoordinates coordinates : differences) {
        Set<RegionUpdateMessage> messages = updates.computeIfAbsent(coordinates, coords -> repository.get(coords).getUpdates(height));
        if (!messages.isEmpty()) {
            player.send(new GroupedRegionUpdateMessage(position, coordinates, messages));
        }
    }
    for (RegionCoordinates coordinates : full) {
        Set<RegionUpdateMessage> messages = encodes.computeIfAbsent(coordinates, coords -> repository.get(coords).encode(height));
        if (!messages.isEmpty()) {
            player.send(new ClearRegionMessage(position, coordinates));
            player.send(new GroupedRegionUpdateMessage(position, coordinates, messages));
        }
    }
}
Also used : RegionCoordinates(org.apollo.game.model.area.RegionCoordinates) GroupedRegionUpdateMessage(org.apollo.game.message.impl.GroupedRegionUpdateMessage) RegionRepository(org.apollo.game.model.area.RegionRepository) RegionUpdateMessage(org.apollo.game.message.impl.RegionUpdateMessage) GroupedRegionUpdateMessage(org.apollo.game.message.impl.GroupedRegionUpdateMessage) ClearRegionMessage(org.apollo.game.message.impl.ClearRegionMessage)

Aggregations

ClearRegionMessage (org.apollo.game.message.impl.ClearRegionMessage)1 GroupedRegionUpdateMessage (org.apollo.game.message.impl.GroupedRegionUpdateMessage)1 RegionUpdateMessage (org.apollo.game.message.impl.RegionUpdateMessage)1 RegionCoordinates (org.apollo.game.model.area.RegionCoordinates)1 RegionRepository (org.apollo.game.model.area.RegionRepository)1