Add config events.

This commit is contained in:
Major-
2013-11-03 17:37:52 +00:00
parent a5829774d7
commit e6bf527dff
5 changed files with 132 additions and 0 deletions
@@ -0,0 +1,51 @@
package org.apollo.game.event.impl;
import org.apollo.game.event.Event;
/**
* An event sent to the client to adjust a certain config or attribute setting.
*
* @author Chris Fletcher
*/
public final class ConfigEvent extends Event {
/**
* The identifier.
*/
private final int id;
/**
* The value.
*/
private final int value;
/**
* Creates a new config event.
*
* @param id The config's identifier.
* @param value The value.
*/
public ConfigEvent(int id, int value) {
this.id = id;
this.value = value;
}
/**
* Gets the config's identifier.
*
* @return The config id.
*/
public int getId() {
return id;
}
/**
* Gets the config's value.
*
* @return The config value.
*/
public int getValue() {
return value;
}
}
@@ -0,0 +1,38 @@
package org.apollo.net.release.r317;
import org.apollo.game.event.impl.ConfigEvent;
import org.apollo.net.codec.game.DataOrder;
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.EventEncoder;
/**
* An {@link EventEncoder} for the {@link ConfigEvent}.
*
* @author Chris Fletcher
* @author Major
*/
final class ConfigEventEncoder extends EventEncoder<ConfigEvent> {
@Override
public GamePacket encode(ConfigEvent event) {
GamePacketBuilder builder;
int value = event.getValue();
if (value > Byte.MIN_VALUE && value < Byte.MAX_VALUE) {
builder = new GamePacketBuilder(36);
builder.put(DataType.SHORT, DataOrder.LITTLE, event.getId());
builder.put(DataType.BYTE, value & 0xFF);
} else {
builder = new GamePacketBuilder(87);
builder.put(DataType.SHORT, DataOrder.LITTLE, event.getId());
builder.put(DataType.INT, DataOrder.MIDDLE, value);
}
return builder.toGamePacket();
}
}
@@ -1,6 +1,7 @@
package org.apollo.net.release.r317;
import org.apollo.game.event.impl.CloseInterfaceEvent;
import org.apollo.game.event.impl.ConfigEvent;
import org.apollo.game.event.impl.EnterAmountEvent;
import org.apollo.game.event.impl.IdAssignmentEvent;
import org.apollo.game.event.impl.LogoutEvent;
@@ -122,6 +123,7 @@ public final class Release317 extends Release {
register(SetWidgetNpcModelEvent.class, new SetWidgetNpcModelEventEncoder());
register(SetWidgetPlayerModelEvent.class, new SetWidgetPlayerModelEventEncoder());
register(SetWidgetModelAnimationEvent.class, new SetWidgetModelAnimationEventEncoder());
register(ConfigEvent.class, new ConfigEventEncoder());
}
}
@@ -0,0 +1,39 @@
package org.apollo.net.release.r377;
import org.apollo.game.event.impl.ConfigEvent;
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.EventEncoder;
/**
* An {@link EventEncoder} for the {@link ConfigEvent}.
*
* @author Chris Fletcher
* @author Major
*/
final class ConfigEventEncoder extends EventEncoder<ConfigEvent> {
@Override
public GamePacket encode(ConfigEvent event) {
GamePacketBuilder builder;
int value = event.getValue();
if (value > Byte.MIN_VALUE && value < Byte.MAX_VALUE) {
builder = new GamePacketBuilder(182);
builder.put(DataType.SHORT, DataTransformation.ADD, event.getId());
builder.put(DataType.BYTE, DataTransformation.SUBTRACT, value & 0xFF);
} else {
builder = new GamePacketBuilder(115);
builder.put(DataType.INT, DataOrder.INVERSED_MIDDLE, value);
builder.put(DataType.SHORT, DataOrder.LITTLE, event.getId());
}
return builder.toGamePacket();
}
}
@@ -1,6 +1,7 @@
package org.apollo.net.release.r377;
import org.apollo.game.event.impl.CloseInterfaceEvent;
import org.apollo.game.event.impl.ConfigEvent;
import org.apollo.game.event.impl.EnterAmountEvent;
import org.apollo.game.event.impl.IdAssignmentEvent;
import org.apollo.game.event.impl.LogoutEvent;
@@ -122,6 +123,7 @@ public final class Release377 extends Release {
register(SetWidgetNpcModelEvent.class, new SetWidgetNpcModelEventEncoder());
register(SetWidgetPlayerModelEvent.class, new SetWidgetPlayerModelEventEncoder());
register(SetWidgetModelAnimationEvent.class, new SetWidgetModelAnimationEventEncoder());
register(ConfigEvent.class, new ConfigEventEncoder());
}
}