mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-11 01:13:05 -04:00
Fixed MissionObject Delta's, Synchronized MissionObject, Fixed MissionListRequest Opcode
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user