From d10eb1267f79bbe62467d5ccec2185fea9ac0fed Mon Sep 17 00:00:00 2001 From: Major- Date: Wed, 10 Feb 2016 19:38:25 +0000 Subject: [PATCH] Improve GroupedRegionUpdateMessageEncoder code --- .../GroupedRegionUpdateMessageEncoder.java | 8 +++--- .../GroupedRegionUpdateMessageEncoder.java | 21 ++++++--------- .../apollo/game/release/r377/Release377.java | 27 +------------------ 3 files changed, 13 insertions(+), 43 deletions(-) diff --git a/game/src/main/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java b/game/src/main/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java index fd4bff83..80fa508f 100644 --- a/game/src/main/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java +++ b/game/src/main/org/apollo/game/release/r317/GroupedRegionUpdateMessageEncoder.java @@ -35,15 +35,15 @@ public final class GroupedRegionUpdateMessageEncoder extends MessageEncoder encoder = (MessageEncoder) release - .getMessageEncoder(update.getClass()); + .getMessageEncoder(update.getClass()); GamePacket packet = encoder.encode(update); builder.put(DataType.BYTE, packet.getOpcode()); diff --git a/game/src/main/org/apollo/game/release/r377/GroupedRegionUpdateMessageEncoder.java b/game/src/main/org/apollo/game/release/r377/GroupedRegionUpdateMessageEncoder.java index 72f5696d..887ed5b4 100644 --- a/game/src/main/org/apollo/game/release/r377/GroupedRegionUpdateMessageEncoder.java +++ b/game/src/main/org/apollo/game/release/r377/GroupedRegionUpdateMessageEncoder.java @@ -1,7 +1,5 @@ package org.apollo.game.release.r377; -import java.util.Map; - import org.apollo.game.message.impl.GroupedRegionUpdateMessage; import org.apollo.game.message.impl.RegionUpdateMessage; import org.apollo.game.model.Position; @@ -11,9 +9,7 @@ import org.apollo.net.codec.game.GamePacket; import org.apollo.net.codec.game.GamePacketBuilder; import org.apollo.net.meta.PacketType; import org.apollo.net.release.MessageEncoder; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; +import org.apollo.net.release.Release; /** * A {@link MessageEncoder} for the {@link GroupedRegionUpdateMessage}. @@ -23,17 +19,17 @@ import com.google.common.collect.ImmutableMap; public final class GroupedRegionUpdateMessageEncoder extends MessageEncoder { /** - * The Map of RegionUpdateMessages to MessageEncoders. + * The Release containing the MessageEncoders for the RegionUpdateMessages. */ - private final Map, MessageEncoder> encoders; + private final Release release; /** * Creates the GroupedRegionUpdateMessageEncoder. * - * @param encoders The Map of RegionUpdateMessages to MessageEncoders. + * @param release The {@link Release} containing the {@link MessageEncoder}s for the {@link RegionUpdateMessage}s. */ - public GroupedRegionUpdateMessageEncoder(Map, MessageEncoder> encoders) { - this.encoders = ImmutableMap.copyOf(encoders); + public GroupedRegionUpdateMessageEncoder(Release release) { + this.release = release; } @Override @@ -46,9 +42,8 @@ public final class GroupedRegionUpdateMessageEncoder extends MessageEncoder encoder = (MessageEncoder) encoders.get(update); - - Preconditions.checkState(encoder != null, update.getClass() + " does not have a registered encoder in GroupedRegionUpdateMessageEncoder."); + MessageEncoder encoder = (MessageEncoder) release + .getMessageEncoder(update.getClass()); GamePacket packet = encoder.encode(update); builder.put(DataType.BYTE, packet.getOpcode()); 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 ca7ea891..8cfe6f1d 100644 --- a/game/src/main/org/apollo/game/release/r377/Release377.java +++ b/game/src/main/org/apollo/game/release/r377/Release377.java @@ -1,8 +1,5 @@ package org.apollo.game.release.r377; -import java.util.HashMap; -import java.util.Map; - import org.apollo.game.message.impl.ClearRegionMessage; import org.apollo.game.message.impl.CloseInterfaceMessage; import org.apollo.game.message.impl.ConfigMessage; @@ -27,7 +24,6 @@ import org.apollo.game.message.impl.OpenSidebarMessage; import org.apollo.game.message.impl.PlayerSynchronizationMessage; import org.apollo.game.message.impl.PrivacyOptionMessage; import org.apollo.game.message.impl.RegionChangeMessage; -import org.apollo.game.message.impl.RegionUpdateMessage; import org.apollo.game.message.impl.RemoveObjectMessage; import org.apollo.game.message.impl.RemoveTileItemMessage; import org.apollo.game.message.impl.SendFriendMessage; @@ -51,7 +47,6 @@ import org.apollo.game.message.impl.UpdateSlottedItemsMessage; import org.apollo.game.message.impl.UpdateTileItemMessage; import org.apollo.game.message.impl.UpdateWeightMessage; import org.apollo.net.meta.PacketMetaDataGroup; -import org.apollo.net.release.MessageEncoder; import org.apollo.net.release.Release; /** @@ -104,7 +99,6 @@ public final class Release377 extends Release { * Initialises this release by registering encoders and decoders. */ private void init() { - // register decoders WalkMessageDecoder walkMessageDecoder = new WalkMessageDecoder(); register(213, walkMessageDecoder); register(28, walkMessageDecoder); @@ -174,7 +168,6 @@ public final class Release377 extends Release { register(160, new RemoveIgnoreMessageDecoder()); register(227, new PrivateChatMessageDecoder()); - // register encoders register(IdAssignmentMessage.class, new IdAssignmentMessageEncoder()); register(RegionChangeMessage.class, new RegionChangeMessageEncoder()); register(ServerChatMessage.class, new ServerMessageMessageEncoder()); @@ -212,25 +205,7 @@ public final class Release377 extends Release { register(SendObjectMessage.class, new SendObjectMessageEncoder()); register(RemoveObjectMessage.class, new RemoveObjectMessageEncoder()); - Map, MessageEncoder> regionUpdates = new HashMap<>(); - - regionUpdates.put(SendPublicTileItemMessage.class, new AddGlobalTileItemMessageEncoder()); - regionUpdates.put(SendTileItemMessage.class, new AddTileItemMessageEncoder()); - regionUpdates.put(UpdateTileItemMessage.class, new UpdateTileItemMessageEncoder()); - regionUpdates.put(RemoveTileItemMessage.class, new RemoveTileItemMessageEncoder()); - regionUpdates.put(SendObjectMessage.class, new SendObjectMessageEncoder()); - regionUpdates.put(RemoveObjectMessage.class, new RemoveObjectMessageEncoder()); - - for (Map.Entry, MessageEncoder> entry : regionUpdates.entrySet()) { - @SuppressWarnings("unchecked") - Class clazz = (Class) entry.getKey(); - @SuppressWarnings("unchecked") - MessageEncoder encoder = (MessageEncoder) entry.getValue(); - - register(clazz, encoder); - } - - register(GroupedRegionUpdateMessage.class, new GroupedRegionUpdateMessageEncoder(regionUpdates)); + register(GroupedRegionUpdateMessage.class, new GroupedRegionUpdateMessageEncoder(this)); register(ClearRegionMessage.class, new ClearRegionMessageEncoder()); register(ForwardPrivateChatMessage.class, new ForwardPrivateChatMessageEncoder());