From e692120b8f91cddda767d0fbc18097adeef6906f Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Mon, 31 Mar 2014 19:50:02 +0200 Subject: [PATCH] Surveying debugging Improved surveying --- .gitignore | 3 + scripts/radial/survey_tool.py | 6 +- src/main/NGECore.java | 8 +- .../objects/resource/GalacticResource.java | 8 +- src/resources/objects/tool/SurveyTool.java | 96 ++++++++----- src/services/DevService.java | 66 ++++++++- src/services/SurveyService.java | 135 ++++++++++++------ src/services/object/ObjectService.java | 25 +++- src/services/resources/ResourceService.java | 45 +++--- 9 files changed, 276 insertions(+), 116 deletions(-) diff --git a/.gitignore b/.gitignore index 35b64af6..89882a7e 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,9 @@ odb/guild/je.info.* odb/mails/je.info.* odb/oids/je.info.* odb/chatRooms/je.info.* +odb/resourcehistory/je.info.* +odb/resourceroots/je.info.* +odb/resources/je.info.* # PSWG Configs options.cfg diff --git a/scripts/radial/survey_tool.py b/scripts/radial/survey_tool.py index b86fc29a..fc569b64 100644 --- a/scripts/radial/survey_tool.py +++ b/scripts/radial/survey_tool.py @@ -9,18 +9,16 @@ import sys def createRadial(core, owner, target, radials): radials.clear() radials.add(RadialOptions(0, 21, 1, 'Use')) - radials.add(RadialOptions(0, 133, 4, 'Tool Options')) - radials.add(RadialOptions(0, 134, 6, 'Tool Resolution')) + radials.add(RadialOptions(0, 132, 1, 'Tool Options')) return def handleSelection(core, owner, target, option): - owner.sendSystemMessage('Distance to nearest Deposit : ' ,0) if option == 21 and target: if owner is not None: rlfsm = ResourceListForSurveyMessage(core,target,owner) owner.getClient().getSession().write(rlfsm.serialize()) return - if option == 133: + if option == 132: if owner is not None: surSvc = core.surveyService surSvc.createSurveyRangeSUIWindow(owner, target) diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 655fabdc..af8e09d3 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -196,7 +196,7 @@ public class NGECore { private ObjectDatabase buildingODB; private ObjectDatabase resourcesODB; private ObjectDatabase resourceRootsODB; - + private ObjectDatabase resourceHistoryODB; public NGECore() { @@ -245,6 +245,7 @@ public class NGECore { chatRoomODB = new ObjectDatabase("chatRooms", true, false, true); resourcesODB = new ObjectDatabase("resources", true, false, true); resourceRootsODB = new ObjectDatabase("resourceroots", true, false, true); + resourceHistoryODB = new ObjectDatabase("resourcehistory", true, false, true); // Services loginService = new LoginService(this); @@ -556,6 +557,11 @@ public class NGECore { return resourceRootsODB; } + public ObjectDatabase getResourceHistoryODB() { + return resourceHistoryODB; + } + + public int getActiveClients() { int connections = 0; for (Map.Entry c : clients.entrySet()) { diff --git a/src/resources/objects/resource/GalacticResource.java b/src/resources/objects/resource/GalacticResource.java index 3cd69c3a..8f4e8dbb 100644 --- a/src/resources/objects/resource/GalacticResource.java +++ b/src/resources/objects/resource/GalacticResource.java @@ -213,12 +213,13 @@ public class GalacticResource extends SWGObject implements IPersistent { setIffFileName(resourceRoot.getResourceFileName()); this.category = resourceRoot.getResourceClass(); this.setGeneralType(resourceRoot.getGeneralType()); + this.setResourceRootID(resourceRoot.getResourceRootID()); // FK //setResourceContainerTemplateID(resourceRoot.getTemplateID()); } public void generateResourceType(){ -// theResource.setResourceType(template.getResourceType()); -// theResource.setResourceClass(template.getResourceClass()); +// this.setResourceType(template.getResourceType()); +// this.setResourceClass(template.getResourceClass()); } public void generateResourceStats(){ @@ -379,6 +380,7 @@ public class GalacticResource extends SWGObject implements IPersistent { } public void constructResourceName(Vector completeResourceNameHistory){ + // ToDo: This is where the database check for past names must be added boolean check=true; while(check) { @@ -592,7 +594,7 @@ public class GalacticResource extends SWGObject implements IPersistent { this.getresourceType = getresourceType; } - public GalacticResource convertIntoHistoricResource(){ + public GalacticResource convertToHistoricResource(){ GalacticResource historicResource = new GalacticResource(); historicResource.setName(this.getName()); historicResource.setResourceClass(this.getResourceClass()); diff --git a/src/resources/objects/tool/SurveyTool.java b/src/resources/objects/tool/SurveyTool.java index cdbe45b9..9de3868f 100644 --- a/src/resources/objects/tool/SurveyTool.java +++ b/src/resources/objects/tool/SurveyTool.java @@ -21,6 +21,7 @@ ******************************************************************************/ package resources.objects.tool; +import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.Persistent; import engine.resources.scene.Planet; @@ -38,21 +39,32 @@ import resources.objects.tangible.TangibleObject; public class SurveyTool extends TangibleObject{ private byte toolType; - private String surveyEffectString; - private String sampleEffectString; - private boolean currentlySurveying; - private boolean currentlySampling; - private boolean currentlyCoolingDown; - private boolean exceptionalState; - private boolean RecoveryMode; - private Long lastSurveyTime; - private Long lastSampleTime; - private Long recoveryTime; private GalacticResource surveyResource; private CreatureObject user; private Long tanoID; private byte SurveyRangeSetting; + @NotPersistent + private String surveyEffectString; + @NotPersistent + private String sampleEffectString; + @NotPersistent + private boolean currentlySurveying; + @NotPersistent + private boolean currentlySampling; + @NotPersistent + private boolean currentlyCoolingDown; + @NotPersistent + private boolean exceptionalState; + @NotPersistent + private boolean recoveryMode; + @NotPersistent + private Long lastSurveyTime; + @NotPersistent + private Long lastSampleTime; + @NotPersistent + private Long recoveryTime; + public static byte MineralSurveyDevice = 1; public static byte ChemicalSurveyDevice = 2; public static byte FloraSurveyTool = 3; @@ -73,6 +85,7 @@ public class SurveyTool extends TangibleObject{ sampleEffectString = ""; this.tanoID = objectID; this.exceptionalState = false; + this.recoveryMode = false; switch (template) { case "object/tangible/survey_tool/shared_survey_tool_mineral.iff" : toolType = 1; @@ -84,7 +97,7 @@ public class SurveyTool extends TangibleObject{ surveyEffectString = "clienteffect/survey_tool_lumber.cef"; sampleEffectString = "clienteffect/survey_sample_lumber.cef"; break; - case "object/tangible/survey_tool/shared_survey_tool_lumber.iff" : + case "object/tangible/survey_tool/shared_survey_tool_lumber.iff" : toolType = 3; surveyEffectString = "clienteffect/survey_tool_lumber.cef"; sampleEffectString = "clienteffect/survey_sample_lumber.cef"; @@ -94,14 +107,26 @@ public class SurveyTool extends TangibleObject{ surveyEffectString = "clienteffect/survey_tool_gas.cef"; sampleEffectString = "clienteffect/survey_sample_gas.cef"; break; - case "object/tangible/survey_tool/shared_survey_tool_liquid.iff" : + case "object/tangible/survey_tool/shared_survey_tool_moisture.iff" : toolType = 5; surveyEffectString = "clienteffect/survey_tool_liquid.cef"; sampleEffectString = "clienteffect/survey_sample_liquid.cef"; break; - case "object/tangible/survey_tool/shared_survey_tool_wind.iff" : toolType = 6; break; - case "object/tangible/survey_tool/shared_survey_tool_solar.iff" : toolType = 7; break; - case "object/tangible/survey_tool/shared_survey_tool_all.iff" : toolType = 8; break; + case "object/tangible/survey_tool/shared_survey_tool_wind.iff" : + toolType = 6; + surveyEffectString = "clienteffect/survey_tool_gas.cef"; + sampleEffectString = "clienteffect/survey_sample_gas.cef"; + break; + case "object/tangible/survey_tool/shared_survey_tool_solar.iff" : + toolType = 7; + surveyEffectString = "clienteffect/survey_tool_moisture.cef"; + sampleEffectString = "clienteffect/survey_sample_moisture.cef"; + break; + case "object/tangible/survey_tool/shared_survey_tool_all.iff" : + toolType = 8; + surveyEffectString = "clienteffect/survey_tool_liquid.cef"; + sampleEffectString = "clienteffect/survey_sample_liquid.cef"; + break; default: toolType = -1; } System.out.println("TOOLTYPE " + toolType); @@ -124,7 +149,7 @@ public class SurveyTool extends TangibleObject{ surveyEffectString = "clienteffect/survey_tool_lumber.cef"; sampleEffectString = "clienteffect/survey_sample_lumber.cef"; break; - case "object/tangible/survey_tool/shared_survey_tool_lumber.iff" : + case "object/tangible/survey_tool/shared_survey_tool_lumber.iff" : toolType = 3; surveyEffectString = "clienteffect/survey_tool_lumber.cef"; sampleEffectString = "clienteffect/survey_sample_lumber.cef"; @@ -134,14 +159,26 @@ public class SurveyTool extends TangibleObject{ surveyEffectString = "clienteffect/survey_tool_gas.cef"; sampleEffectString = "clienteffect/survey_sample_gas.cef"; break; - case "object/tangible/survey_tool/shared_survey_tool_liquid.iff" : + case "object/tangible/survey_tool/shared_survey_tool_moisture.iff" : toolType = 5; surveyEffectString = "clienteffect/survey_tool_liquid.cef"; sampleEffectString = "clienteffect/survey_sample_liquid.cef"; break; - case "object/tangible/survey_tool/shared_survey_tool_wind.iff" : toolType = 6; break; - case "object/tangible/survey_tool/shared_survey_tool_solar.iff" : toolType = 7; break; - case "object/tangible/survey_tool/shared_survey_tool_all.iff" : toolType = 8; break; + case "object/tangible/survey_tool/shared_survey_tool_wind.iff" : + toolType = 6; + surveyEffectString = "clienteffect/survey_tool_gas.cef"; + sampleEffectString = "clienteffect/survey_sample_gas.cef"; + break; + case "object/tangible/survey_tool/shared_survey_tool_solar.iff" : + toolType = 7; + surveyEffectString = "clienteffect/survey_tool_moisture.cef"; + sampleEffectString = "clienteffect/survey_sample_moisture.cef"; + break; + case "object/tangible/survey_tool/shared_survey_tool_all.iff" : + toolType = 8; + surveyEffectString = "clienteffect/survey_tool_liquid.cef"; + sampleEffectString = "clienteffect/survey_sample_liquid.cef"; + break; default: toolType = -1; } System.out.println("TOOLTYPE " + toolType); @@ -244,11 +281,11 @@ public class SurveyTool extends TangibleObject{ } public boolean isRecoveryMode() { - return RecoveryMode; + return this.recoveryMode; } public void setRecoveryMode(boolean recoveryMode) { - RecoveryMode = recoveryMode; + recoveryMode = recoveryMode; } public byte getSurveyRangeSetting() { @@ -258,17 +295,4 @@ public class SurveyTool extends TangibleObject{ public void setSurveyRangeSetting(byte surveyRangeSetting) { SurveyRangeSetting = surveyRangeSetting; } -} - -//"clienteffect/survey_tool_mineral.cef", -//"clienteffect/survey_tool_lumber.cef", -//"clienteffect/survey_tool_moisture.cef", -//"clienteffect/survey_tool_liquid.cef", -//"clienteffect/survey_tool_gas.cef", - - -//"clienteffect/survey_sample_mineral.cef", -//"clienteffect/survey_sample_lumber.cef", -//"clienteffect/survey_sample_moisture.cef", -//"clienteffect/survey_sample_liquid.cef", -//"clienteffect/survey_sample_gas.cef", +} \ No newline at end of file diff --git a/src/services/DevService.java b/src/services/DevService.java index aaa5e21e..88932e15 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -32,7 +32,9 @@ import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; import protocol.swg.ExpertiseRequestMessage; - +import protocol.swg.SceneCreateObjectByCrc; +import protocol.swg.SceneEndBaselines; +import protocol.swg.UpdateContainmentMessage; import resources.common.Console; import resources.common.FileUtilities; import resources.common.Opcodes; @@ -41,6 +43,7 @@ import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; +import resources.objects.tool.SurveyTool; import services.sui.SUIWindow; import services.sui.SUIService.ListBoxType; import services.sui.SUIWindow.SUICallback; @@ -49,6 +52,7 @@ import main.NGECore; import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.DatatableVisitor; import engine.clients.Client; +import engine.resources.common.CRC; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; @@ -85,6 +89,7 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 22, "Composite Armor"); suiOptions.put((long) 23, "Weapons"); suiOptions.put((long) 24, "Misc Items"); + suiOptions.put((long) 25, "Tools"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -93,6 +98,15 @@ public class DevService implements INetworkDispatch { break; case 4: // [Items] Misc Items suiOptions.put((long) 40, "Unity Ring"); + case 5: // [Items] Tools + suiOptions.put((long) 110, "Mineral Survey Device"); + suiOptions.put((long) 111, "Chemical Survey Device"); + suiOptions.put((long) 112, "Flora Survey Device"); + suiOptions.put((long) 113, "Gas Survey Device"); + suiOptions.put((long) 114, "Water Survey Device"); + suiOptions.put((long) 115, "Wind Survey Device"); + suiOptions.put((long) 116, "Solar Survey Device"); + suiOptions.put((long) 117, "Swoop"); } final SUIWindow window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, "Character Builder Terminal", "Select the desired option and click OK.", suiOptions, creature, null, 10); @@ -229,6 +243,10 @@ public class DevService implements INetworkDispatch { case 24: // Misc Items sendCharacterBuilderSUI(player, 4); return; + case 25: // Tools + sendCharacterBuilderSUI(player, 5); + return; + // [Items] Weapons case 30: // Jedi Weapons TangibleObject lightsaber1 = (TangibleObject) core.objectService.createObject("object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff", planet); @@ -286,6 +304,52 @@ public class DevService implements INetworkDispatch { TangibleObject ring = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet); ring.setCustomName("Unity Ring"); inventory.add(ring); + + case 110: + SurveyTool mineralSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_mineral.iff", planet); + mineralSurveyTool.setCustomName("Mineral Survey Device"); + inventory.add(mineralSurveyTool); + case 111: + SurveyTool chemicalSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_inorganic.iff", planet); + chemicalSurveyTool.setCustomName("Chemical Survey Device"); + inventory.add(chemicalSurveyTool); + case 112: + SurveyTool floraSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_lumber.iff", planet); + floraSurveyTool.setCustomName("Flora Survey Device"); + inventory.add(floraSurveyTool); + case 113: + SurveyTool gasSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_gas.iff", planet); + gasSurveyTool.setCustomName("Gas Survey Device"); + inventory.add(gasSurveyTool); + case 114: + SurveyTool waterSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_moisture.iff", planet); + waterSurveyTool.setCustomName("Water Survey Device"); + inventory.add(waterSurveyTool); + case 115: + SurveyTool windSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_wind.iff", planet); + windSurveyTool.setCustomName("Wind Survey Device"); + inventory.add(windSurveyTool); + case 116: + SurveyTool solarSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_solar.iff", planet); + solarSurveyTool.setCustomName("Solar Survey Device"); + inventory.add(solarSurveyTool); + case 117: +// CreatureObject swoop = (CreatureObject) core.objectService.createObject("object/mobile/vehicle/shared_speederbike_swoop.iff", planet); +// swoop.setCustomName("Swoop"); +// int resCRC = CRC.StringtoCRC("object/mobile/vehicle/shared_speederbike_swoop.iff"); +// SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(swoop.getObjectID(), player.getOrientation().x, player.getOrientation().y, player.getOrientation().z, player.getOrientation().w, player.getPosition().x, player.getPosition().y, player.getPosition().z, resCRC, (byte) 0); +// player.getClient().getSession().write(createObjectMsg.serialize()); +// services.resources.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); +// swoop.sendBaselines(player.getClient()); +// SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(swoop.getObjectID()); +// player.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); +// services.resources.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); +// System.out.println("SWOOP"); +// UpdateContainmentMessage updateContainmentMessage= new UpdateContainmentMessage(player.getObjectID(), swoop.getObjectID(), -1); +// player.getClient().getSession().write(updateContainmentMessage.serialize()); + + TangibleObject deed = (TangibleObject) core.objectService.createObject("object/tangible/deed/vehicle_deed/shared_speederbike_swoop_deed.iff", planet); + inventory.add(deed); } } }); diff --git a/src/services/SurveyService.java b/src/services/SurveyService.java index a27bc61e..1d48dd55 100644 --- a/src/services/SurveyService.java +++ b/src/services/SurveyService.java @@ -277,6 +277,7 @@ public class SurveyService implements INetworkDispatch { } } else { // Mismatch -> new container String resourceContainerIFF = ResourceRoot.CONTAINER_TYPE_IFF_SIGNIFIER[sampleResource.getResourceRoot().getContainerType()]; + ResourceContainerObject containerObject = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, crafter.getPlanet()); containerObject.initializeStats(sampleResource); containerObject.setProprietor(crafter); @@ -373,7 +374,7 @@ public class SurveyService implements INetworkDispatch { // Counter too frequent survey button activation if(surveyTool.getCurrentlySurveying()){ - System.out.println("TOO FREQUENT!"); + //System.out.println("TOO FREQUENT!"); return; } @@ -434,6 +435,9 @@ public class SurveyService implements INetworkDispatch { PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); SurveyTool surveyTool = player.getLastUsedSurveyTool(); + if (crafter.getPosture()!=1) // QA + surveyTool.setCurrentlySampling(false); + if (surveyTool.getCurrentlySampling()) { // QA crafter.sendSystemMessage("@survey:already_sampling", (byte) 0); return; @@ -544,61 +548,96 @@ public class SurveyService implements INetworkDispatch { crafter.setPosture((byte) 0); surveyTool.setCurrentlySampling(false); surveyTool.setExceptionalState(false); - removeActiveSurveyTool(surveyTool); + //removeActiveSurveyTool(surveyTool); return; } - int exceptionalChance = new Random().nextInt(100); - if (exceptionalChance<7 && ! surveyTool.isExceptionalState()){ - crafter.sendSystemMessage("@survey:gnode_d", (byte) 0); - surveyTool.setExceptionalState(true); - - final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", crafter, surveyTool, 0); - window.setProperty("bg.caption.lblTitle:Text", "@base_player:swg"); - window.setProperty("Prompt.lblPrompt:Text", "@survey:gnode_d"); - window.addListBoxMenuItem("@survey:gnode_1", 0); - window.addListBoxMenuItem("@survey:gnode_2", 1); - window.setProperty("btnOk:visible", "True"); - window.setProperty("btnCancel:visible", "True"); - window.setProperty("btnOk:Text", "@ok"); - window.setProperty("btnCancel:Text", "@cancel"); - Vector returnList = new Vector(); - returnList.add("List.lstList:SelectedRow"); - - window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - int index = Integer.parseInt(returnList.get(0)); - if (index==0){ - // Continue working - CreatureObject crafter = (CreatureObject)owner; - PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); - if (crafter!=null){ - SurveyTool surveyTool = player.getLastUsedSurveyTool(); + if (! surveyTool.isRecoveryMode()){ + + int exceptionalChance = new Random().nextInt(100); + if (exceptionalChance<7 && ! surveyTool.isExceptionalState()){ + crafter.sendSystemMessage("@survey:gnode_d", (byte) 0); + surveyTool.setExceptionalState(true); + + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", crafter, surveyTool, 0); + window.setProperty("bg.caption.lblTitle:Text", "@base_player:swg"); + window.setProperty("Prompt.lblPrompt:Text", "@survey:gnode_d"); + window.addListBoxMenuItem("@survey:gnode_1", 0); + window.addListBoxMenuItem("@survey:gnode_2", 1); + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + int index = Integer.parseInt(returnList.get(0)); + if (index==0){ + // Continue working + CreatureObject crafter = (CreatureObject)owner; + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + if (crafter!=null){ + SurveyTool surveyTool = player.getLastUsedSurveyTool(); + if (surveyTool!=null){ + surveyTool.setExceptionalState(false); + core.suiService.closeSUIWindow(owner, 0); + continueSampling(surveyTool); + } + } + } else { + // Attempt to recover + CreatureObject crafter = (CreatureObject)owner; + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + SurveyTool surveyTool = player.getLastUsedSurveyTool(); if (surveyTool!=null){ + surveyTool.setRecoveryMode(true); surveyTool.setExceptionalState(false); core.suiService.closeSUIWindow(owner, 0); continueSampling(surveyTool); } - } - } else { - // Attempt to recover - CreatureObject crafter = (CreatureObject)owner; - PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); - SurveyTool surveyTool = player.getLastUsedSurveyTool(); - if (surveyTool!=null){ - surveyTool.setRecoveryMode(true); - surveyTool.setExceptionalState(false); - core.suiService.closeSUIWindow(owner, 0); - continueSampling(surveyTool); - } - } - } - }); + } + } + }); + + core.suiService.openSUIWindow(window); + return; + } + + surveyTool.setCurrentlySampling(true); + surveyTool.setLastSampleTime(System.currentTimeMillis()); + + String effectFile = surveyTool.getSampleEffectString(); + PlayClientEffectLocMessage cEffMsg = new PlayClientEffectLocMessage(effectFile,crafter.getPlanet().getName(),crafter.getPosition()); + crafter.getClient().getSession().write(cEffMsg.serialize()); + + crafter.setAction(crafter.getAction()-samplingCost); + + } else { + // sampling cost for recovery + surveyTool.setRecoveryMode(false); + samplingCost = 200; + if (crafter.getAction()-samplingCost<0){ + crafter.sendSystemMessage("@survey:gamble_no_action", (byte) 0); + crafter.setPosture((byte) 0); + surveyTool.setCurrentlySampling(false); + surveyTool.setExceptionalState(false); + surveyTool.setLastSampleTime(System.currentTimeMillis()); + removeActiveSurveyTool(surveyTool); + return; + } + surveyTool.setCurrentlySampling(true); + surveyTool.setLastSampleTime(System.currentTimeMillis()); + surveyTool.setExceptionalState(false); + + String effectFile = surveyTool.getSampleEffectString(); + PlayClientEffectLocMessage cEffMsg = new PlayClientEffectLocMessage(effectFile,crafter.getPlanet().getName(),crafter.getPosition()); + crafter.getClient().getSession().write(cEffMsg.serialize()); + crafter.setAction(crafter.getAction()-samplingCost); - core.suiService.openSUIWindow(window); - return; } surveyTool.setCurrentlySampling(true); @@ -607,6 +646,8 @@ public class SurveyService implements INetworkDispatch { String effectFile = surveyTool.getSampleEffectString(); PlayClientEffectLocMessage cEffMsg = new PlayClientEffectLocMessage(effectFile,crafter.getPlanet().getName(),crafter.getPosition()); crafter.getClient().getSession().write(cEffMsg.serialize()); + + crafter.setAction(crafter.getAction()-samplingCost); } else { crafter.sendSystemMessage("There are only trace amounts of " + sampleResource.getName() + " here. Find a higher concentration of the resource, and try sampling again.", (byte) 0); // "@survey:trace_amount:" diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index fbd2fd1b..b0efaec9 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -95,6 +95,7 @@ import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; import resources.objects.group.GroupObject; import resources.objects.guild.GuildObject; +import resources.objects.intangible.IntangibleObject; import resources.objects.mission.MissionObject; import resources.objects.player.PlayerObject; import resources.objects.resource.GalacticResource; @@ -183,7 +184,7 @@ public class ObjectService implements INetworkDispatch { EntityCursor cursor = core.getResourceRootsODB().getCursor(Integer.class, ResourceRoot.class); Iterator it = cursor.iterator(); int loadedResourceRootsCounter = 0; - + System.out.println("Loading resource roots..."); while(it.hasNext()) { final ResourceRoot resourceRoot = it.next(); System.err.println("resourceRoot loaded ID: " + resourceRoot.getResourceRootID() + " " + resourceRoot.getResourceFileName()); @@ -194,8 +195,9 @@ public class ObjectService implements INetworkDispatch { if (loadedResourceRootsCounter==0){ //big bang will take care of it } - System.err.println("loadedResourceRootsCounter " + loadedResourceRootsCounter); + //System.err.println("loadedResourceRootsCounter " + loadedResourceRootsCounter); cursor.close(); + System.out.println("Finished loading resource roots."); } // loads the currently spawned resources at server start @@ -203,10 +205,10 @@ public class ObjectService implements INetworkDispatch { EntityCursor cursor = core.getResourcesODB().getCursor(Long.class, GalacticResource.class); Iterator it = cursor.iterator(); int loadedResourceCounter = 0; - + System.out.println("Loading resources..."); while(it.hasNext()) { final GalacticResource resource = it.next(); - System.err.println("resource " + resource.getName()); + System.err.println("resource " + resource.getName() + " rootID " + resource.getResourceRootID()); objectList.put(resource.getId(), resource); // re-reference ResourceRoot @@ -242,6 +244,7 @@ public class ObjectService implements INetworkDispatch { } cursor.close(); + System.out.println("Finished loading resources."); } public SWGObject createResource() { @@ -281,6 +284,7 @@ public class ObjectService implements INetworkDispatch { public SWGObject createObject(String Template, long objectID, Planet planet, Point3D position, Quaternion orientation, String customServerTemplate, boolean overrideSnapshot, boolean loadServerTemplate) { SWGObject object = null; + System.out.println("Template passed " + Template); CrcStringTableVisitor crcTable; try { crcTable = ClientFileManager.loadFile("misc/object_template_crc_string_table.iff", CrcStringTableVisitor.class); @@ -313,7 +317,11 @@ public class ObjectService implements INetworkDispatch { object = new TangibleObject(objectID, planet, Template, position, orientation); - } else if(Template.startsWith("object/weapon")) { + } else if(Template.startsWith("object/intangible")) { + + object = new IntangibleObject(objectID, planet, position, orientation,Template); + + }else if(Template.startsWith("object/weapon")) { object = new WeaponObject(objectID, planet, Template, position, orientation); @@ -362,7 +370,7 @@ public class ObjectService implements INetworkDispatch { object = new ResourceContainerObject(objectID, planet, Template, position, orientation); }else { - + System.err.println("return null;"); return null; } @@ -397,6 +405,7 @@ public class ObjectService implements INetworkDispatch { ((CreatureObject) object).setOptionsBitmask(Options.INVULNERABLE | Options.USABLE); } else if (Template.startsWith("object/mobile/vehicle/")) { ((CreatureObject) object).setOptionsBitmask(Options.ATTACKABLE | Options.MOUNT); + System.err.println("Options.MOUNT"); } else if (Template.startsWith("object/mobile/hologram/")) { ((CreatureObject) object).setOptionsBitmask(Options.INVULNERABLE); } else if (Template.startsWith("object/creature/npc/theme_park/")) { @@ -681,9 +690,13 @@ public class ObjectService implements INetworkDispatch { } else { + if (!(getObject(objectId) instanceof CreatureObject)) + return; + creature = (CreatureObject) getObject(objectId); if(creature.getAttachment("disconnectTask") != null && creature.getClient() != null && !creature.getClient().getSession().isClosing()) return; + } diff --git a/src/services/resources/ResourceService.java b/src/services/resources/ResourceService.java index 56966d4f..11212915 100644 --- a/src/services/resources/ResourceService.java +++ b/src/services/resources/ResourceService.java @@ -69,6 +69,7 @@ public class ResourceService implements INetworkDispatch { private NGECore core; private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + private boolean enableResourceHistory = true; // Set this to false, to prevent persistence of resources into history Db private Hashtable resourceRootTable = new Hashtable(); // synchronized private Vector ironRoots = new Vector(); @@ -11108,10 +11109,12 @@ public class ResourceService implements INetworkDispatch { core.getResourcesODB().put(resource, Long.class, GalacticResource.class, resource.getTransaction()); resource.getTransaction().commitSync(); -// GalacticResource historicResource = resource.convertIntoHistoricResource(); -// historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); -// core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); -// historicResource.getTransaction().commitSync(); + if (enableResourceHistory){ + GalacticResource historicResource = resource.convertToHistoricResource(); + historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); + core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); + historicResource.getTransaction().commitSync(); + } completeResourceNameHistory.add(resource.getName()); spawnedResourcesPool1.add(resource); @@ -11135,11 +11138,13 @@ public class ResourceService implements INetworkDispatch { core.getResourcesODB().put(resource, Long.class, GalacticResource.class, resource.getTransaction()); resource.getTransaction().commitSync(); -// GalacticResource historicResource = resource.convertIntoHistoricResource(); -// historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); -// core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); -// historicResource.getTransaction().commitSync(); - + if (enableResourceHistory){ + GalacticResource historicResource = resource.convertToHistoricResource(); + historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); + core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); + historicResource.getTransaction().commitSync(); + } + completeResourceNameHistory.add(resource.getName()); spawnedResourcesPool2.add(resource); allSpawnedResources.add(resource); @@ -11162,11 +11167,13 @@ public class ResourceService implements INetworkDispatch { core.getResourcesODB().put(resource, Long.class, GalacticResource.class, resource.getTransaction()); resource.getTransaction().commitSync(); -// GalacticResource historicResource = resource.convertIntoHistoricResource(); -// historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); -// core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); -// historicResource.getTransaction().commitSync(); - + if (enableResourceHistory){ + GalacticResource historicResource = resource.convertToHistoricResource(); + historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); + core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); + historicResource.getTransaction().commitSync(); + } + completeResourceNameHistory.add(resource.getName()); spawnedResourcesPool3.add(resource); allSpawnedResources.add(resource); @@ -11190,10 +11197,12 @@ public class ResourceService implements INetworkDispatch { core.getResourcesODB().put(resource, Long.class, GalacticResource.class, resource.getTransaction()); resource.getTransaction().commitSync(); -// GalacticResource historicResource = resource.convertIntoHistoricResource(); -// historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); -// core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); -// historicResource.getTransaction().commitSync(); + if (enableResourceHistory){ + GalacticResource historicResource = resource.convertToHistoricResource(); + historicResource.createTransaction(core.getResourceHistoryODB().getEnvironment()); + core.getResourceHistoryODB().put(historicResource, Long.class, GalacticResource.class, historicResource.getTransaction()); + historicResource.getTransaction().commitSync(); + } completeResourceNameHistory.add(resource.getName()); spawnedResourcesPool4.add(resource);