mirror of
https://bitbucket.org/projectswg/cucore.git
synced 2026-09-13 00:45:06 -04:00
Merge branch 'master' into awareness
Conflicts: src/services/objects/ObjectManager.java
This commit is contained in:
@@ -8,7 +8,8 @@ import resources.network.BaselineBuilder.Encodable;
|
||||
import resources.objects.weapon.WeaponObject;
|
||||
|
||||
public class Equipment implements Encodable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private WeaponObject weapon;
|
||||
private byte[] customizationString;
|
||||
private int arrangementId = 4;
|
||||
|
||||
@@ -8,7 +8,10 @@ import resources.Race;
|
||||
import resources.collections.SWGList;
|
||||
import resources.encodables.player.Equipment;
|
||||
import resources.network.BaselineBuilder;
|
||||
import resources.objects.SWGObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import resources.objects.tangible.TangibleObject;
|
||||
import resources.objects.weapon.WeaponObject;
|
||||
import resources.player.Player;
|
||||
import utilities.Encoder.StringType;
|
||||
|
||||
@@ -56,6 +59,17 @@ public class CreatureObject extends TangibleObject {
|
||||
super(objectId);
|
||||
}
|
||||
|
||||
public void addEquipment(SWGObject obj) {
|
||||
if (obj instanceof WeaponObject)
|
||||
equipmentList.add(new Equipment((WeaponObject) obj));
|
||||
else
|
||||
equipmentList.add(new Equipment(obj.getObjectId(), obj.getTemplate()));
|
||||
}
|
||||
|
||||
public void addAppearanceItem(SWGObject obj) {
|
||||
appearanceList.add(new Equipment(obj.getObjectId(), obj.getTemplate()));
|
||||
}
|
||||
|
||||
public SWGList<Equipment> getEquipmentList() {
|
||||
return equipmentList;
|
||||
}
|
||||
@@ -184,6 +198,10 @@ public class CreatureObject extends TangibleObject {
|
||||
return difficulty;
|
||||
}
|
||||
|
||||
public PlayerObject getPlayerObject() {
|
||||
return (PlayerObject) (hasSlot("ghost") ? getSlottedObject("ghost") : null);
|
||||
}
|
||||
|
||||
public boolean isBeast() {
|
||||
return beast;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import services.galaxy.GalacticManager;
|
||||
|
||||
public class CoreManager extends Manager {
|
||||
|
||||
private static final int galaxyId = 2;
|
||||
private static final int galaxyId = 1;
|
||||
|
||||
private EngineManager engineManager;
|
||||
private GalacticManager galacticManager;
|
||||
|
||||
@@ -27,6 +27,9 @@ import resources.Race;
|
||||
import resources.Terrain;
|
||||
import resources.client_info.ClientFactory;
|
||||
import resources.client_info.visitors.ObjectData;
|
||||
import resources.client_info.visitors.SlotArrangementData;
|
||||
import resources.client_info.visitors.SlotDefinitionData;
|
||||
import resources.client_info.visitors.SlotDescriptorData;
|
||||
import resources.control.Intent;
|
||||
import resources.control.Manager;
|
||||
import resources.objects.SWGObject;
|
||||
@@ -88,7 +91,7 @@ public class ObjectManager extends Manager {
|
||||
double loadTime = (System.nanoTime() - startLoad) / 1E6;
|
||||
System.out.printf("ObjectManager: Finished loading %d objects. Time: %fms%n", objects.size(), loadTime);
|
||||
clientFac = new ClientFactory();
|
||||
|
||||
|
||||
return super.initialize();
|
||||
}
|
||||
|
||||
@@ -176,11 +179,32 @@ public class ObjectManager extends Manager {
|
||||
}
|
||||
|
||||
private void addObjectAttributes(SWGObject obj, String template) {
|
||||
|
||||
ObjectData attributes = (ObjectData) clientFac.getInfoFromFile(ClientFactory.formatToSharedFile(template));
|
||||
|
||||
obj.setStf((String) attributes.getAttribute("objectName"));
|
||||
obj.setDetailStf((String) attributes.getAttribute("detailedDescription"));
|
||||
obj.setStf((String) attributes.getAttribute(ObjectData.OBJ_STF));
|
||||
obj.setDetailStf((String) attributes.getAttribute(ObjectData.DETAIL_STF));
|
||||
obj.setVolume((Integer) attributes.getAttribute(ObjectData.VOLUME_LIMIT));
|
||||
|
||||
addSlotsToObject(obj, attributes);
|
||||
}
|
||||
|
||||
private void addSlotsToObject(SWGObject obj, ObjectData attributes) {
|
||||
|
||||
if ((String) attributes.getAttribute(ObjectData.SLOT_DESCRIPTOR) != null) {
|
||||
// TODO: These are the slots that the object HAS
|
||||
SlotDescriptorData descriptor = (SlotDescriptorData) clientFac.getInfoFromFile((String) attributes.getAttribute(ObjectData.SLOT_DESCRIPTOR));
|
||||
|
||||
for (String slotName : descriptor.getSlots()) {
|
||||
obj.addObjectSlot(slotName, null);
|
||||
}
|
||||
}
|
||||
|
||||
if ((String) attributes.getAttribute(ObjectData.ARRANGEMENT_FILE) != null) {
|
||||
// This is what slots the object *USES*
|
||||
SlotArrangementData arrangementData = (SlotArrangementData) clientFac.getInfoFromFile((String) attributes.getAttribute(ObjectData.ARRANGEMENT_FILE));
|
||||
|
||||
obj.setArrangment(arrangementData.getArrangement());
|
||||
}
|
||||
}
|
||||
|
||||
private void zoneInCharacter(PlayerManager playerManager, long netId, long characterId) {
|
||||
@@ -212,14 +236,10 @@ public class ObjectManager extends Manager {
|
||||
System.err.println("ObjectManager: Failed to start zone - CreatureObject could not be fetched from database");
|
||||
throw new NullPointerException("CreatureObject for ID: " + characterId + " cannot be null!");
|
||||
}
|
||||
creature.setOwner(player);
|
||||
player.setCreatureObject(creature);
|
||||
for (SWGObject obj : creature.getChildren()) {
|
||||
if (obj instanceof PlayerObject) {
|
||||
player.setPlayerObject(obj);
|
||||
obj.setOwner(player);
|
||||
break;
|
||||
}
|
||||
player.setCreatureObject(creature); // CreatureObject contains the player object!
|
||||
|
||||
if (player.getPlayerObject() == null) {
|
||||
System.err.println("FATAL: " + player.getUsername() + "'s CreatureObject has a null ghost!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Calendar;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import main.ProjectSWG;
|
||||
import network.packets.Packet;
|
||||
@@ -39,7 +40,6 @@ import resources.control.Service;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import resources.objects.tangible.TangibleObject;
|
||||
import resources.player.AccessLevel;
|
||||
import resources.player.Player;
|
||||
import resources.player.PlayerEvent;
|
||||
import resources.services.Config;
|
||||
@@ -57,7 +57,6 @@ public class ZoneService extends Service {
|
||||
public ZoneService() {
|
||||
nameGenerator = new SWGNameGenerator();
|
||||
clientFac = new ClientFactory();
|
||||
//profTemplates = new HashMap<String, ProfTemplateData>();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -65,7 +64,7 @@ public class ZoneService extends Service {
|
||||
String createCharacterSql = "INSERT INTO characters (id, name, race, userId, galaxyId) VALUES (?, ?, ?, ?, ?)";
|
||||
createCharacter = getLocalDatabase().prepareStatement(createCharacterSql);
|
||||
nameGenerator.loadAllRules();
|
||||
//loadProfTemplates(); TODO: Uncomment when object creation is implemented
|
||||
//loadProfTemplates();
|
||||
return super.initialize();
|
||||
}
|
||||
|
||||
@@ -144,29 +143,39 @@ public class ZoneService extends Service {
|
||||
creatureObj.setVolume(0x000F4240);
|
||||
PlayerObject playerObj = (PlayerObject) objManager.createObject("object/player/shared_player.iff");
|
||||
//WeaponObject defaultWeap = (WeaponObject) objManager.createObject("object/weapon/melee/unarmed/shared_unarmed_default_player.iff");
|
||||
setCreatureObjectValues(creatureObj, create);
|
||||
setCreatureObjectValues(objManager, creatureObj, create);
|
||||
setPlayerObjectValues(playerObj, create);
|
||||
playerObj.setTag(player.getAccessLevel());
|
||||
creatureObj.addChild(playerObj);
|
||||
if (!create.getHair().isEmpty()) {
|
||||
TangibleObject hairObj = (TangibleObject) objManager.createObject(create.getHair());
|
||||
TangibleObject hairObj = (TangibleObject) objManager.createObject(ClientFactory.formatToSharedFile(create.getHair()));
|
||||
hairObj.setAppearanceData(create.getHairCustomization());
|
||||
creatureObj.addChild(hairObj);
|
||||
creatureObj.setSlot("hair", hairObj);
|
||||
creatureObj.addEquipment(hairObj);
|
||||
}
|
||||
//createStarterClothing(objManager, creatureObj, create.getRace(), create.getClothes());
|
||||
creatureObj.setLocation(start);
|
||||
playerObj.setLocation(start);
|
||||
player.setCreatureObject(creatureObj);
|
||||
player.setPlayerObject(playerObj);
|
||||
|
||||
creatureObj.setSlot("ghost", playerObj);
|
||||
return creatureObj.getObjectId();
|
||||
}
|
||||
|
||||
private void setCreatureObjectValues(CreatureObject creatureObj, ClientCreateCharacter create) {
|
||||
private void setCreatureObjectValues(ObjectManager objManager, CreatureObject creatureObj, ClientCreateCharacter create) {
|
||||
TangibleObject inventory = (TangibleObject) objManager.createObject("object/tangible/inventory/shared_character_inventory.iff");
|
||||
TangibleObject datapad = (TangibleObject) objManager.createObject("object/tangible/datapad/shared_character_datapad.iff");
|
||||
|
||||
creatureObj.setRace(Race.getRaceByFile(create.getRace()));
|
||||
creatureObj.setAppearanceData(create.getCharCustomization());
|
||||
creatureObj.setHeight(create.getHeight());
|
||||
creatureObj.setName(create.getName());
|
||||
creatureObj.setPvpType(20);
|
||||
creatureObj.getSkills().add("species_" + creatureObj.getRace().getSpecies());
|
||||
creatureObj.setSlot("inventory", inventory);
|
||||
creatureObj.setSlot("datapad", datapad);
|
||||
|
||||
creatureObj.addEquipment(inventory);
|
||||
creatureObj.addEquipment(datapad);
|
||||
}
|
||||
|
||||
private void setPlayerObjectValues(PlayerObject playerObj, ClientCreateCharacter create) {
|
||||
@@ -179,7 +188,21 @@ public class ZoneService extends Service {
|
||||
sendPacket(player, new GalaxyLoopTimesResponse(ProjectSWG.getCoreTime()/1000));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private void createStarterClothing(ObjectManager objManager, CreatureObject player, String race, String profession) {
|
||||
TangibleObject inventory = (TangibleObject) player.getSlottedObject("inventory");
|
||||
|
||||
for (String template : profTemplates.get(profession).getItems(ClientFactory.formatToSharedFile(race))) {
|
||||
TangibleObject clothing = (TangibleObject) objManager.createObject(ClientFactory.formatToSharedFile(template));
|
||||
|
||||
inventory.addChild(clothing);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private void loadProfTemplates() {
|
||||
profTemplates = new ConcurrentHashMap<String, ProfTemplateData>();
|
||||
|
||||
profTemplates.put("crafting_artisan", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_combat_brawler.iff"));
|
||||
profTemplates.put("combat_brawler", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_combat_brawler.iff"));
|
||||
profTemplates.put("social_entertainer", (ProfTemplateData) clientFac.getInfoFromFile("creation/profession_defaults_social_entertainer.iff"));
|
||||
|
||||
Reference in New Issue
Block a user