From ff772a1f79758ee860f53f90618929b5dca1c4bd Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 5 Dec 2013 18:48:58 -0500 Subject: [PATCH] MissionObject Delta's added, Debug print to try and fix Travel Points showing on other planets --- src/resources/common/TerminalType.java | 30 +++ .../mission/MissionMessageBuilder.java | 193 +++++++++++++++++- .../objects/mission/MissionObject.java | 65 +----- src/services/travel/TravelService.java | 5 +- 4 files changed, 231 insertions(+), 62 deletions(-) create mode 100644 src/resources/common/TerminalType.java diff --git a/src/resources/common/TerminalType.java b/src/resources/common/TerminalType.java new file mode 100644 index 00000000..375d1e61 --- /dev/null +++ b/src/resources/common/TerminalType.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.common; + +public class TerminalType { + public static int MISSION_GENERIC = 1; + public static int MISSION_BOUNTYHUNTER = 2; + public static int MISSION_ENTERTAINER = 3; + public static int MISSION_ARTISAN = 4; + public static int MISSION_EXPLORER = 5; +} diff --git a/src/resources/objects/mission/MissionMessageBuilder.java b/src/resources/objects/mission/MissionMessageBuilder.java index 8e206c01..dff9bc55 100644 --- a/src/resources/objects/mission/MissionMessageBuilder.java +++ b/src/resources/objects/mission/MissionMessageBuilder.java @@ -42,8 +42,8 @@ public class MissionMessageBuilder extends ObjectMessageBuilder { buffer.putShort((short) 11); - buffer.putFloat(mission.getMissionComplexity()); - buffer.put(getAsciiString("mission/mission_object")); + buffer.putFloat(1); // mission complexity ?? + buffer.put(getAsciiString(mission.getStfFilename())); buffer.putInt(0); buffer.put(getAsciiString(mission.getStfName())); @@ -122,17 +122,202 @@ public class MissionMessageBuilder extends ObjectMessageBuilder { public IoBuffer buildBaseline6() { IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putInt(121); // unk int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - buffer.flip(); buffer = createBaseline("MISO", (byte) 6, buffer, size); return buffer; } + public IoBuffer buildStfDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4 + mission.getStfFilename().length() + mission.getStfName().length(), false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.put(getAsciiString(mission.getStfFilename())); + buffer.putInt(0); + buffer.put(getAsciiString(mission.getStfName())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x01, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildDifficultyLevelDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.putInt(mission.getMissionLevel()); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x05, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildStartLocationDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(24, false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.putFloat(mission.getMissionStartX()); + buffer.putFloat(mission.getMissionStartZ()); + buffer.putFloat(mission.getMissionStartY()); + + buffer.putLong(0); + + buffer.putInt(CRC.StringtoCRC(mission.getMissionStartPlanet())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x06, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildCreatorNameDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionCreator().length(), false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.put(getAsciiString(mission.getMissionCreator())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x07, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildCreditsRewardDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.putInt(mission.getMissionCredits()); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x08, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildDestinationDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(24, false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.putFloat(mission.getMissionDestinationX()); + buffer.putFloat(mission.getMissionDestinationZ()); + buffer.putFloat(mission.getMissionDestinationY()); + + buffer.putLong(0); // Destination Object ID + + buffer.putInt(CRC.StringtoCRC(mission.getMissionDestinationPlanet())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x09, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildTargetObjectIffDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.putInt(CRC.StringtoCRC(mission.getMissionTemplateObject())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x0A, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildMissionDescriptionDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionDescription().length() + mission.getMissionDescId().length(), false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.put(getAsciiString(mission.getMissionDescription())); + buffer.putInt(0); + buffer.put(getAsciiString(mission.getMissionDescId())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x0B, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildMissionTitleDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionTitle().length() + mission.getMissionTitleId().length(), false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.put(getAsciiString(mission.getMissionTitle())); + buffer.putInt(0); + buffer.put(getAsciiString(mission.getMissionTitleId())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x0C, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildRepeatCounterDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.putInt(mission.getMissionRepeatCounter()); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x0D, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildMissionTypeDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.putInt(CRC.StringtoCRC(mission.getMissionType())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x0E, buffer, size + 4); + + return buffer; + } + + public IoBuffer buildTargetNameDelta() { + MissionObject mission = (MissionObject) object; + + IoBuffer buffer = IoBuffer.allocate(4 + mission.getMissionTargetName().length(), false).order(ByteOrder.LITTLE_ENDIAN); + + buffer.put(getAsciiString(mission.getMissionTargetName())); + + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("MISO", (byte) 3, (short) 1, (short) 0x0F, buffer, size + 4); + + return buffer; + } + @Override public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { diff --git a/src/resources/objects/mission/MissionObject.java b/src/resources/objects/mission/MissionObject.java index 3cbde103..c98ab0c7 100644 --- a/src/resources/objects/mission/MissionObject.java +++ b/src/resources/objects/mission/MissionObject.java @@ -36,11 +36,6 @@ import engine.resources.scene.Quaternion; public class MissionObject extends SWGObject implements IPersistent { - private String stfName; - private String customName; - private int volume; - - private float missionComplexity; private float missionDestinationX; private float missionDestinationY; private float missionDestinationZ; @@ -73,85 +68,41 @@ public class MissionObject extends SWGObject implements IPersistent { public MissionObject(long objectID, Planet planet, String template) { super(objectID, planet, new Point3D(0, 0, 0), new Quaternion(1, 0, 0, 0), template); } - - public String getStfName() { - return stfName; - } - - public void setStfName(String stfName) { - this.stfName = stfName; - } - - public String getCustomName() { - return customName; - } - - public void setCustomName(String customName) { - this.customName = customName; - } - - public int getVolume() { - return volume; - } - - public void setVolume(int volume) { - this.volume = volume; - } - - public float getMissionComplexity() { - return missionComplexity; - } - - public void setMissionComplexity(float missionComplexity) { - this.missionComplexity = missionComplexity; - } public float getMissionStartX() { return missionStartX; } - public void setMissionStartX(float missionStartX) { - this.missionStartX = missionStartX; - } - public float getMissionStartY() { return missionStartY; } - public void setMissionStartY(float missionStartY) { - this.missionStartY = missionStartY; - } - public float getMissionStartZ() { return missionStartZ; } - public void setMissionStartZ(float missionStartZ) { - this.missionStartZ = missionStartZ; + public void setMissionStart(float x, float y, float z) { + this.missionStartZ = z; + this.missionStartX = x; + this.missionStartY = y; } public float getMissionDestinationX() { return missionDestinationX; } - public void setMissionDestinationX(float missionDestinationX) { - this.missionDestinationX = missionDestinationX; - } - public float getMissionDestinationY() { return missionDestinationY; } - public void setMissionDestinationY(float missionDestinationY) { - this.missionDestinationY = missionDestinationY; - } - public float getMissionDestinationZ() { return missionDestinationZ; } - public void setMissionDestinationZ(float missionDestinationZ) { - this.missionDestinationZ = missionDestinationZ; + public void setMissionDestination(float x, float y, float z) { + this.missionDestinationZ = z; + this.missionDestinationY = y; + this.missionDestinationZ = z; } public String getMissionDestinationPlanet() { diff --git a/src/services/travel/TravelService.java b/src/services/travel/TravelService.java index 956c34ca..541615a3 100644 --- a/src/services/travel/TravelService.java +++ b/src/services/travel/TravelService.java @@ -114,11 +114,14 @@ public class TravelService implements INetworkDispatch { Vector correctTravelPoints = new Vector(); for(TravelPoint tp : travelMap.get(planet)) { - if(tp.isStarport() || tp.getPlanetName().equalsIgnoreCase(object.getPlanet().getName())) + if(tp.isStarport() || tp.getPlanetName().equalsIgnoreCase(object.getPlanet().getName())) { correctTravelPoints.add(tp); + Console.println(tp.getName()); + } } PlanetTravelPointListResponse response = new PlanetTravelPointListResponse(planetString, correctTravelPoints); client.getSession().write(response.serialize()); + break; }