package net.scapeemulator.game.update; import net.scapeemulator.game.model.player.ForcedMovement; import net.scapeemulator.game.model.player.Player; import net.scapeemulator.game.msg.impl.PlayerUpdateMessage; import net.scapeemulator.game.net.game.DataOrder; import net.scapeemulator.game.net.game.DataTransformation; import net.scapeemulator.game.net.game.DataType; import net.scapeemulator.game.net.game.GameFrameBuilder; public final class ForceMovementPlayerBlock extends PlayerBlock { private final ForcedMovement movement; public ForceMovementPlayerBlock(Player player) { super(0x400); this.movement = player.getForcedMove(); } @Override public void encode(PlayerUpdateMessage message, GameFrameBuilder builder) { builder.put(DataType.BYTE, DataTransformation.NEGATE, movement.getFirstPosition().getLocalX(message.getLastKnownRegion().getRegionX())); builder.put(DataType.BYTE, movement.getFirstPosition().getLocalY(message.getLastKnownRegion().getRegionY())); builder.put(DataType.BYTE, DataTransformation.ADD, movement.getSecondPosition().getLocalX(message.getLastKnownRegion().getRegionX())); builder.put(DataType.BYTE, movement.getSecondPosition().getLocalY(message.getLastKnownRegion().getRegionY())); builder.put(DataType.SHORT, DataOrder.LITTLE, movement.getMidDuration()); builder.put(DataType.SHORT, DataOrder.LITTLE, movement.getDuration()); builder.put(DataType.BYTE, DataTransformation.NEGATE, movement.getDirection()); } }