mirror of
https://github.com/ProjectSWGCore/Holocore.git
synced 2026-10-17 07:02:54 -04:00
Added ability to create custom objects
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
***********************************************************************************/
|
||||
package services.objects;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import resources.client_info.ClientFactory;
|
||||
@@ -40,8 +41,10 @@ import resources.objects.cell.CellObject;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.factory.FactoryObject;
|
||||
import resources.objects.group.GroupObject;
|
||||
import resources.objects.guild.GuildObject;
|
||||
import resources.objects.installation.InstallationObject;
|
||||
import resources.objects.intangible.IntangibleObject;
|
||||
import resources.objects.manufacture.ManufactureSchematicObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import resources.objects.resource.ResourceContainerObject;
|
||||
import resources.objects.ship.ShipObject;
|
||||
@@ -78,6 +81,23 @@ public final class ObjectCreator {
|
||||
return obj;
|
||||
}
|
||||
|
||||
public static <T extends SWGObject> T createObjectFromTemplate(long objectId, String template, Class <T> c) {
|
||||
T obj;
|
||||
try {
|
||||
obj = c.getConstructor(Integer.TYPE).newInstance(objectId);
|
||||
} catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
|
||||
e.printStackTrace();
|
||||
obj = null;
|
||||
}
|
||||
if (obj == null)
|
||||
return null;
|
||||
obj.setTemplate(template);
|
||||
|
||||
handlePostCreation(obj);
|
||||
updateMaxObjectId(objectId);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public static SWGObject createObjectFromTemplate(String template) {
|
||||
long id = 0;
|
||||
synchronized (OBJECT_ID_MUTEX) {
|
||||
@@ -86,25 +106,35 @@ public final class ObjectCreator {
|
||||
return createObjectFromTemplate(id, template);
|
||||
}
|
||||
|
||||
public static <T extends SWGObject> T createObjectFromTemplate(String template, Class <T> c) {
|
||||
long id = 0;
|
||||
synchronized (OBJECT_ID_MUTEX) {
|
||||
id = maxObjectId++;
|
||||
}
|
||||
return createObjectFromTemplate(id, template, c);
|
||||
}
|
||||
|
||||
private static SWGObject createObjectFromType(long objectId, String type) {
|
||||
switch (type) {
|
||||
case "building": return new BuildingObject(objectId);
|
||||
case "cell": return new CellObject(objectId);
|
||||
case "creature": return new CreatureObject(objectId);
|
||||
case "factory": return new FactoryObject(objectId);
|
||||
case "group": return new GroupObject(objectId);
|
||||
case "installation": return new InstallationObject(objectId);
|
||||
case "intangible": return new IntangibleObject(objectId);
|
||||
case "mobile": return new CreatureObject(objectId);
|
||||
case "player": return new PlayerObject(objectId);
|
||||
case "resource_container": return new ResourceContainerObject(objectId);
|
||||
case "ship": return new ShipObject(objectId);
|
||||
case "soundobject": return new SoundObject(objectId);
|
||||
case "static": return new StaticObject(objectId);
|
||||
case "tangible": return new TangibleObject(objectId);
|
||||
case "waypoint": return new WaypointObject(objectId);
|
||||
case "weapon": return new WeaponObject(objectId);
|
||||
default: System.err.println("Unknown type: " + type); return null;
|
||||
case "building": return new BuildingObject(objectId);
|
||||
case "cell": return new CellObject(objectId);
|
||||
case "creature": return new CreatureObject(objectId);
|
||||
case "factory": return new FactoryObject(objectId);
|
||||
case "group": return new GroupObject(objectId);
|
||||
case "guild": return new GuildObject(objectId);
|
||||
case "installation": return new InstallationObject(objectId);
|
||||
case "intangible": return new IntangibleObject(objectId);
|
||||
case "manufacture_schematic": return new ManufactureSchematicObject(objectId);
|
||||
case "mobile": return new CreatureObject(objectId);
|
||||
case "player": return new PlayerObject(objectId);
|
||||
case "resource_container": return new ResourceContainerObject(objectId);
|
||||
case "ship": return new ShipObject(objectId);
|
||||
case "soundobject": return new SoundObject(objectId);
|
||||
case "static": return new StaticObject(objectId);
|
||||
case "tangible": return new TangibleObject(objectId);
|
||||
case "waypoint": return new WaypointObject(objectId);
|
||||
case "weapon": return new WeaponObject(objectId);
|
||||
default: System.err.println("Unknown type: " + type); return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user