Fixed MissionObject Delta's, Synchronized MissionObject, Fixed MissionListRequest Opcode

This commit is contained in:
Waverunner
2013-12-07 17:58:49 -05:00
parent ff772a1f79
commit ae0b06f917
10 changed files with 411 additions and 138 deletions
@@ -26,6 +26,8 @@ import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import engine.resources.common.CRC;
import resources.common.Console;
import resources.common.StringUtilities;
import resources.objects.ObjectMessageBuilder;
import resources.objects.waypoint.WaypointObject;
@@ -40,7 +42,7 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
IoBuffer buffer = IoBuffer.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putShort((short) 11);
buffer.putShort((short) 17);
buffer.putFloat(1); // mission complexity ??
buffer.put(getAsciiString(mission.getStfFilename()));
@@ -50,7 +52,7 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
if (mission.getCustomName() == null) { buffer.put(getUnicodeString("")); }
else { buffer.put(getUnicodeString(mission.getCustomName())); }
buffer.putInt(mission.getVolume());
buffer.putInt(0); // volume
buffer.putInt(0); // unused
buffer.putInt(mission.getMissionLevel());
@@ -60,8 +62,12 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
buffer.putLong(0); // ??
buffer.putInt(CRC.StringtoCRC(mission.getMissionStartPlanet()));
if (mission.getMissionStartPlanet() == null) {
buffer.putInt(0);
} else {
buffer.putInt(CRC.StringtoCRC(mission.getMissionStartPlanet()));
}
buffer.put(getUnicodeString(mission.getMissionCreator()));
buffer.putInt(mission.getMissionCredits());
@@ -71,10 +77,18 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
buffer.putLong(0); // ??
buffer.putInt(CRC.StringtoCRC(mission.getMissionDestinationPlanet()));
buffer.putInt(CRC.StringtoCRC(mission.getMissionTemplateObject()));
if (mission.getMissionDestinationPlanet() == null) {
buffer.putInt(0);
} else {
buffer.putInt(CRC.StringtoCRC(mission.getMissionDestinationPlanet()));
}
if (mission.getTargetTemplateObject() == null) {
buffer.putInt(0);
} else {
buffer.putInt(CRC.StringtoCRC(mission.getTargetTemplateObject()));
}
buffer.put(getAsciiString(mission.getMissionDescription()));
buffer.putInt(0);
buffer.put(getAsciiString(mission.getMissionDescId()));
@@ -85,8 +99,12 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
buffer.putInt(0); // refresh counter
buffer.putInt(CRC.StringtoCRC(mission.getMissionType()));
if(mission.getMissionType() == null) {
buffer.putInt(0);
} else {
buffer.putInt(CRC.StringtoCRC(mission.getMissionType()));
}
buffer.put(getAsciiString(mission.getMissionTargetName()));
WaypointObject wp = mission.getMissionAttachedWaypoint();
@@ -109,6 +127,8 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
buffer.putFloat(wp.getPosition().y);
buffer.putLong(0);
buffer.putInt(CRC.StringtoCRC(wp.getPlanet().name));
buffer.put((byte) 0);
buffer.put((byte) 0x01);
}
int size = buffer.position();
buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size);
@@ -116,6 +136,7 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
buffer.flip();
buffer = createBaseline("MISO", (byte) 3, buffer, size);
Console.println("Bytes: " + StringUtilities.bytesToHex(buffer.array()));
return buffer;
}
@@ -132,14 +153,13 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildStfDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildStfDelta(String stfFile, String stfName) {
IoBuffer buffer = IoBuffer.allocate(4 + mission.getStfFilename().length() + mission.getStfName().length(), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = IoBuffer.allocate(4 + stfFile.length() + stfName.length(), false).order(ByteOrder.LITTLE_ENDIAN);
buffer.put(getAsciiString(mission.getStfFilename()));
buffer.put(getAsciiString(stfFile));
buffer.putInt(0);
buffer.put(getAsciiString(mission.getStfName()));
buffer.put(getAsciiString(stfName));
int size = buffer.position();
buffer.flip();
@@ -148,12 +168,11 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildDifficultyLevelDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildDifficultyLevelDelta(int difficulty) {
IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(mission.getMissionLevel());
buffer.putInt(difficulty);
int size = buffer.position();
buffer.flip();
@@ -162,18 +181,17 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildStartLocationDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildStartLocationDelta(float x, float z, float y, String planet) {
IoBuffer buffer = IoBuffer.allocate(24, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putFloat(mission.getMissionStartX());
buffer.putFloat(mission.getMissionStartZ());
buffer.putFloat(mission.getMissionStartY());
buffer.putFloat(x);
buffer.putFloat(z);
buffer.putFloat(y);
buffer.putLong(0);
buffer.putInt(CRC.StringtoCRC(mission.getMissionStartPlanet()));
buffer.putInt(CRC.StringtoCRC(planet));
int size = buffer.position();
buffer.flip();
@@ -182,12 +200,11 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildCreatorNameDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildCreatorNameDelta(String creator) {
IoBuffer buffer = IoBuffer.allocate(4 + creator.length(), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionCreator().length(), false).order(ByteOrder.LITTLE_ENDIAN);
buffer.put(getAsciiString(mission.getMissionCreator()));
buffer.put(getAsciiString(creator));
int size = buffer.position();
buffer.flip();
@@ -196,12 +213,11 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildCreditsRewardDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildCreditsRewardDelta(int creds) {
IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(mission.getMissionCredits());
buffer.putInt(creds);
int size = buffer.position();
buffer.flip();
@@ -210,18 +226,17 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildDestinationDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildDestinationDelta(float x, float z, float y, String planet) {
IoBuffer buffer = IoBuffer.allocate(24, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putFloat(mission.getMissionDestinationX());
buffer.putFloat(mission.getMissionDestinationZ());
buffer.putFloat(mission.getMissionDestinationY());
buffer.putFloat(x);
buffer.putFloat(z);
buffer.putFloat(y);
buffer.putLong(0); // Destination Object ID
buffer.putInt(CRC.StringtoCRC(mission.getMissionDestinationPlanet()));
buffer.putInt(CRC.StringtoCRC(planet));
int size = buffer.position();
buffer.flip();
@@ -230,12 +245,11 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildTargetObjectIffDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildTargetObjectIffDelta(String template) {
IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(CRC.StringtoCRC(mission.getMissionTemplateObject()));
buffer.putInt(CRC.StringtoCRC(template));
int size = buffer.position();
buffer.flip();
@@ -244,14 +258,13 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildMissionDescriptionDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildMissionDescriptionDelta(String desc, String id) {
IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionDescription().length() + mission.getMissionDescId().length(), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = IoBuffer.allocate(8 + desc.length() + id.length(), false).order(ByteOrder.LITTLE_ENDIAN);
buffer.put(getAsciiString(mission.getMissionDescription()));
buffer.put(getAsciiString(desc));
buffer.putInt(0);
buffer.put(getAsciiString(mission.getMissionDescId()));
buffer.put(getAsciiString(id));
int size = buffer.position();
buffer.flip();
@@ -260,14 +273,13 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildMissionTitleDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildMissionTitleDelta(String title, String id) {
IoBuffer buffer = IoBuffer.allocate(8 + title.length() + id.length(), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionTitle().length() + mission.getMissionTitleId().length(), false).order(ByteOrder.LITTLE_ENDIAN);
buffer.put(getAsciiString(mission.getMissionTitle()));
buffer.put(getAsciiString(title));
buffer.putInt(0);
buffer.put(getAsciiString(mission.getMissionTitleId()));
buffer.put(getAsciiString(id));
int size = buffer.position();
buffer.flip();
@@ -276,12 +288,11 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildRepeatCounterDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildRepeatCounterDelta(int counter) {
IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(mission.getMissionRepeatCounter());
buffer.putInt(counter);
int size = buffer.position();
buffer.flip();
@@ -290,12 +301,11 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildMissionTypeDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildMissionTypeDelta(String type) {
IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(CRC.StringtoCRC(mission.getMissionType()));
buffer.putInt(CRC.StringtoCRC(type));
int size = buffer.position();
buffer.flip();
@@ -304,12 +314,11 @@ public class MissionMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildTargetNameDelta() {
MissionObject mission = (MissionObject) object;
public IoBuffer buildTargetNameDelta(String targetName) {
IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionTargetName().length(), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = IoBuffer.allocate(4 + targetName.length(), false).order(ByteOrder.LITTLE_ENDIAN);
buffer.put(getAsciiString(mission.getMissionTargetName()));
buffer.put(getAsciiString(targetName));
int size = buffer.position();
buffer.flip();