package net.scapeemulator.game.update; import net.scapeemulator.game.model.Position; import net.scapeemulator.game.model.mob.Direction; import net.scapeemulator.game.model.player.Player; import net.scapeemulator.game.msg.impl.PlayerUpdateMessage; import net.scapeemulator.game.net.game.GameFrameBuilder; public final class AddPlayerDescriptor extends PlayerDescriptor { private final int id; private final Direction direction; private final Position position; public AddPlayerDescriptor(Player player, int[] tickets) { super(player, tickets, true); this.id = player.getId(); this.direction = player.getMostRecentDirection(); this.position = player.getPosition(); } @Override public void encodeDescriptor(PlayerUpdateMessage message, GameFrameBuilder builder, GameFrameBuilder blockBuilder) { int x = position.getX() - message.getPosition().getX(); int y = position.getY() - message.getPosition().getY(); builder.putBits(11, id); builder.putBits(1, 1); // check builder.putBits(5, x); builder.putBits(3, direction.toInteger()); builder.putBits(1, 1); // check builder.putBits(5, y); } }