Merge branch 'master' into awareness

Conflicts:
	src/services/objects/ObjectManager.java
This commit is contained in:
Waverunner
2014-12-15 08:57:01 -05:00
5 changed files with 85 additions and 23 deletions
@@ -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;
}
+1 -1
View File
@@ -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;
+32 -12
View File
@@ -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!");
}
}
+32 -9
View File
@@ -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"));