Resource Spawn System

Persistence to object database implemented
This commit is contained in:
CharonInferar
2014-03-30 23:35:48 +02:00
parent 6f8406e012
commit 4b2f15db05
49 changed files with 15024 additions and 4 deletions
+102 -2
View File
@@ -97,8 +97,12 @@ import resources.objects.group.GroupObject;
import resources.objects.guild.GuildObject;
import resources.objects.mission.MissionObject;
import resources.objects.player.PlayerObject;
import resources.objects.resource.GalacticResource;
import resources.objects.resource.ResourceContainerObject;
import resources.objects.resource.ResourceRoot;
import resources.objects.staticobject.StaticObject;
import resources.objects.tangible.TangibleObject;
import resources.objects.tool.SurveyTool;
import resources.objects.waypoint.WaypointObject;
import resources.objects.weapon.WeaponObject;
@@ -174,6 +178,94 @@ public class ObjectService implements INetworkDispatch {
cursor.close();
}
// loads the resource roots at server start
public void loadResourceRoots() {
EntityCursor<ResourceRoot> cursor = core.getResourceRootsODB().getCursor(Integer.class, ResourceRoot.class);
Iterator<ResourceRoot> it = cursor.iterator();
int loadedResourceRootsCounter = 0;
while(it.hasNext()) {
final ResourceRoot resourceRoot = it.next();
System.err.println("resourceRoot loaded ID: " + resourceRoot.getResourceRootID() + " " + resourceRoot.getResourceFileName());
core.resourceService.add_resourceRoot(resourceRoot);
loadedResourceRootsCounter++;
}
if (loadedResourceRootsCounter==0){
//big bang will take care of it
}
System.err.println("loadedResourceRootsCounter " + loadedResourceRootsCounter);
cursor.close();
}
// loads the currently spawned resources at server start
public void loadResources() {
EntityCursor<GalacticResource> cursor = core.getResourcesODB().getCursor(Long.class, GalacticResource.class);
Iterator<GalacticResource> it = cursor.iterator();
int loadedResourceCounter = 0;
while(it.hasNext()) {
final GalacticResource resource = it.next();
System.err.println("resource " + resource.getName());
objectList.put(resource.getId(), resource);
// re-reference ResourceRoot
int resourceRootID = resource.getResourceRootID();
ResourceRoot resourceRoot = core.resourceService.retrieveResourceRootReference(resourceRootID);
resource.setResourceRoot(resourceRoot);
// recreate the collections
core.resourceService.addSpawnedResource(resource);
byte pool = resource.getPoolNumber();
switch (pool){
case 1:
core.resourceService.add_spawnedResourcesPool1(resource);
break;
case 2:
core.resourceService.add_spawnedResourcesPool2(resource);
break;
case 3:
core.resourceService.add_spawnedResourcesPool3(resource);
break;
case 4:
core.resourceService.add_spawnedResourcesPool4(resource);
break;
default:
System.err.println("Loaded resource " + resource.getName() + " has no valid pool value!");
resource.setPoolNumber((byte)4); // Make it a pool 4
}
loadedResourceCounter++;
}
if (loadedResourceCounter==0){
core.resourceService.kickOffBigBang(); // spawn resources initially once
}
cursor.close();
}
public SWGObject createResource() {
SWGObject object = null;
Planet planet = core.terrainService.getPlanetByID(1);
Point3D position = new Point3D(0,0,0);
Quaternion orientation = new Quaternion(1,1,1,1);
String Template = "object/resource_container/base/shared_base_resource_container.iff";
boolean isSnapshot = false;
long objectID = generateObjectID();
object = new GalacticResource(objectID, planet, position, orientation, Template);
object.setPlanetId(planet.getID());
object.setAttachment("customServerTemplate", Template);
object.setisInSnapshot(isSnapshot);
objectList.put(objectID, object);
return object;
}
public void loadServerTemplates() {
System.out.println("Loading server templates...");
for(Runnable r : loadServerTemplateTasks) {
@@ -213,7 +305,11 @@ public class ObjectService implements INetworkDispatch {
object = new PlayerObject(objectID, planet);
} else if(Template.startsWith("object/tangible")) {
} else if(Template.startsWith("object/tangible/survey_tool")) {
object = new SurveyTool(objectID, planet, Template, position, orientation);
}else if(Template.startsWith("object/tangible")) {
object = new TangibleObject(objectID, planet, Template, position, orientation);
@@ -261,7 +357,11 @@ public class ObjectService implements INetworkDispatch {
object = new MissionObject(objectID, planet, Template);
} else {
} else if(Template.startsWith("object/resource_container")) {
object = new ResourceContainerObject(objectID, planet, Template, position, orientation);
}else {
return null;