mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-03 00:38:21 +00:00
Improve GroupedRegionUpdateMessageEncoder code
This commit is contained in:
@@ -35,15 +35,15 @@ public final class GroupedRegionUpdateMessageEncoder extends MessageEncoder<Grou
|
||||
@Override
|
||||
public GamePacket encode(GroupedRegionUpdateMessage message) {
|
||||
GamePacketBuilder builder = new GamePacketBuilder(60, PacketType.VARIABLE_SHORT);
|
||||
Position lastKnownRegion = message.getLastKnownRegion(), region = message.getRegionPosition();
|
||||
Position base = message.getLastKnownRegion(), region = message.getRegionPosition();
|
||||
|
||||
builder.put(DataType.BYTE, region.getLocalY(lastKnownRegion));
|
||||
builder.put(DataType.BYTE, DataTransformation.NEGATE, region.getLocalX(lastKnownRegion));
|
||||
builder.put(DataType.BYTE, region.getLocalY(base));
|
||||
builder.put(DataType.BYTE, DataTransformation.NEGATE, region.getLocalX(base));
|
||||
|
||||
for (RegionUpdateMessage update : message.getMessages()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
MessageEncoder<RegionUpdateMessage> encoder = (MessageEncoder<RegionUpdateMessage>) release
|
||||
.getMessageEncoder(update.getClass());
|
||||
.getMessageEncoder(update.getClass());
|
||||
|
||||
GamePacket packet = encoder.encode(update);
|
||||
builder.put(DataType.BYTE, packet.getOpcode());
|
||||
|
||||
@@ -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<GroupedRegionUpdateMessage> {
|
||||
|
||||
/**
|
||||
* The Map of RegionUpdateMessages to MessageEncoders.
|
||||
* The Release containing the MessageEncoders for the RegionUpdateMessages.
|
||||
*/
|
||||
private final Map<Class<? extends RegionUpdateMessage>, MessageEncoder<? extends RegionUpdateMessage>> 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<Class<? extends RegionUpdateMessage>, MessageEncoder<? extends RegionUpdateMessage>> encoders) {
|
||||
this.encoders = ImmutableMap.copyOf(encoders);
|
||||
public GroupedRegionUpdateMessageEncoder(Release release) {
|
||||
this.release = release;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -46,9 +42,8 @@ public final class GroupedRegionUpdateMessageEncoder extends MessageEncoder<Grou
|
||||
|
||||
for (RegionUpdateMessage update : message.getMessages()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
MessageEncoder<RegionUpdateMessage> encoder = (MessageEncoder<RegionUpdateMessage>) encoders.get(update);
|
||||
|
||||
Preconditions.checkState(encoder != null, update.getClass() + " does not have a registered encoder in GroupedRegionUpdateMessageEncoder.");
|
||||
MessageEncoder<RegionUpdateMessage> encoder = (MessageEncoder<RegionUpdateMessage>) release
|
||||
.getMessageEncoder(update.getClass());
|
||||
|
||||
GamePacket packet = encoder.encode(update);
|
||||
builder.put(DataType.BYTE, packet.getOpcode());
|
||||
|
||||
@@ -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<Class<? extends RegionUpdateMessage>, MessageEncoder<? extends RegionUpdateMessage>> 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<Class<? extends RegionUpdateMessage>, MessageEncoder<? extends RegionUpdateMessage>> entry : regionUpdates.entrySet()) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Class<RegionUpdateMessage> clazz = (Class<RegionUpdateMessage>) entry.getKey();
|
||||
@SuppressWarnings("unchecked")
|
||||
MessageEncoder<RegionUpdateMessage> encoder = (MessageEncoder<RegionUpdateMessage>) 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());
|
||||
|
||||
Reference in New Issue
Block a user