diff --git a/game/src/main/org/apollo/game/message/impl/SetWidgetModelMessage.java b/game/src/main/org/apollo/game/message/impl/SetWidgetModelMessage.java new file mode 100644 index 00000000..f343a865 --- /dev/null +++ b/game/src/main/org/apollo/game/message/impl/SetWidgetModelMessage.java @@ -0,0 +1,51 @@ +package org.apollo.game.message.impl; + +import org.apollo.net.message.Message; + +/** + * A {@link Message} sent to the client to set a widget's displayed model. + * + * @author Major + */ +public final class SetWidgetModelMessage extends Message { + + /** + * The model id. + */ + private final int model; + + /** + * The interface id. + */ + private final int interfaceId; + + /** + * Creates a new SetWidgetModelMessage. + * + * @param interfaceId The interface id. + * @param model The model id. + */ + public SetWidgetModelMessage(int interfaceId, int model) { + this.interfaceId = interfaceId; + this.model = model; + } + + /** + * Gets the model id. + * + * @return The model id. + */ + public int getModel() { + return model; + } + + /** + * Gets the interface id. + * + * @return The interface id. + */ + public int getInterfaceId() { + return interfaceId; + } + +} \ No newline at end of file diff --git a/game/src/main/org/apollo/game/release/r317/Release317.java b/game/src/main/org/apollo/game/release/r317/Release317.java index da0b6c5a..3d410ed2 100644 --- a/game/src/main/org/apollo/game/release/r317/Release317.java +++ b/game/src/main/org/apollo/game/release/r317/Release317.java @@ -35,6 +35,7 @@ import org.apollo.game.message.impl.SetPlayerActionMessage; import org.apollo.game.message.impl.SetUpdatedRegionMessage; import org.apollo.game.message.impl.SetWidgetItemModelMessage; import org.apollo.game.message.impl.SetWidgetModelAnimationMessage; +import org.apollo.game.message.impl.SetWidgetModelMessage; import org.apollo.game.message.impl.SetWidgetNpcModelMessage; import org.apollo.game.message.impl.SetWidgetPlayerModelMessage; import org.apollo.game.message.impl.SetWidgetTextMessage; @@ -189,11 +190,14 @@ public final class Release317 extends Release { register(EnterAmountMessage.class, new EnterAmountMessageEncoder()); register(SetWidgetTextMessage.class, new SetWidgetTextMessageEncoder()); register(NpcSynchronizationMessage.class, new NpcSynchronizationMessageEncoder()); + register(SetWidgetVisibilityMessage.class, new SetWidgetVisibilityMessageEncoder()); register(SetWidgetItemModelMessage.class, new SetWidgetItemModelMessageEncoder()); register(SetWidgetNpcModelMessage.class, new SetWidgetNpcModelMessageEncoder()); register(SetWidgetPlayerModelMessage.class, new SetWidgetPlayerModelMessageEncoder()); register(SetWidgetModelAnimationMessage.class, new SetWidgetModelAnimationMessageEncoder()); + register(SetWidgetModelMessage.class, new SetWidgetModelMessageEncoder()); + register(ConfigMessage.class, new ConfigMessageEncoder()); register(DisplayTabInterfaceMessage.class, new DisplayTabInterfaceMessageEncoder()); register(SetUpdatedRegionMessage.class, new SetUpdatedRegionMessageEncoder()); diff --git a/game/src/main/org/apollo/game/release/r317/SetWidgetModelMessageEncoder.java b/game/src/main/org/apollo/game/release/r317/SetWidgetModelMessageEncoder.java new file mode 100644 index 00000000..75f27a9e --- /dev/null +++ b/game/src/main/org/apollo/game/release/r317/SetWidgetModelMessageEncoder.java @@ -0,0 +1,28 @@ +package org.apollo.game.release.r317; + +import org.apollo.game.message.impl.SetWidgetModelMessage; +import org.apollo.net.codec.game.DataOrder; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.MessageEncoder; + +/** + * A {@link MessageEncoder} for the {@link SetWidgetModelMessage}. + * + * @author Major + */ +public class SetWidgetModelMessageEncoder extends MessageEncoder { + + @Override + public GamePacket encode(SetWidgetModelMessage message) { + GamePacketBuilder builder = new GamePacketBuilder(8); + + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getInterfaceId()); + builder.put(DataType.SHORT, message.getModel()); + + return builder.toGamePacket(); + } + +} diff --git a/game/src/main/org/apollo/game/release/r377/Release377.java b/game/src/main/org/apollo/game/release/r377/Release377.java index 8cfe6f1d..9c5334e4 100644 --- a/game/src/main/org/apollo/game/release/r377/Release377.java +++ b/game/src/main/org/apollo/game/release/r377/Release377.java @@ -183,11 +183,13 @@ public final class Release377 extends Release { register(EnterAmountMessage.class, new EnterAmountMessageEncoder()); register(SetWidgetTextMessage.class, new SetWidgetTextMessageEncoder()); register(NpcSynchronizationMessage.class, new NpcSynchronizationMessageEncoder()); + register(SetWidgetVisibilityMessage.class, new SetWidgetVisibilityMessageEncoder()); register(SetWidgetItemModelMessage.class, new SetWidgetItemModelMessageEncoder()); register(SetWidgetNpcModelMessage.class, new SetWidgetNpcModelMessageEncoder()); register(SetWidgetPlayerModelMessage.class, new SetWidgetPlayerModelMessageEncoder()); register(SetWidgetModelAnimationMessage.class, new SetWidgetModelAnimationMessageEncoder()); + register(ConfigMessage.class, new ConfigMessageEncoder()); register(DisplayTabInterfaceMessage.class, new DisplayTabInterfaceMessageEncoder()); register(SetUpdatedRegionMessage.class, new SetUpdatedRegionMessageEncoder()); diff --git a/game/src/main/org/apollo/game/release/r377/SetWidgetModelMessageEncoder.java b/game/src/main/org/apollo/game/release/r377/SetWidgetModelMessageEncoder.java new file mode 100644 index 00000000..8df38af5 --- /dev/null +++ b/game/src/main/org/apollo/game/release/r377/SetWidgetModelMessageEncoder.java @@ -0,0 +1,28 @@ +package org.apollo.game.release.r377; + +import org.apollo.game.message.impl.SetWidgetModelMessage; +import org.apollo.net.codec.game.DataOrder; +import org.apollo.net.codec.game.DataTransformation; +import org.apollo.net.codec.game.DataType; +import org.apollo.net.codec.game.GamePacket; +import org.apollo.net.codec.game.GamePacketBuilder; +import org.apollo.net.release.MessageEncoder; + +/** + * A {@link MessageEncoder} for the {@link SetWidgetModelMessage}. + * + * @author Major + */ +public final class SetWidgetModelMessageEncoder extends MessageEncoder { + + @Override + public GamePacket encode(SetWidgetModelMessage message) { + GamePacketBuilder builder = new GamePacketBuilder(216); + + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getModel()); + builder.put(DataType.SHORT, DataOrder.LITTLE, DataTransformation.ADD, message.getInterfaceId()); + + return builder.toGamePacket(); + } + +}