diff --git a/src/resources/commands/callbacks/SitOnObjectCmdCallback.java b/src/resources/commands/callbacks/SitOnObjectCmdCallback.java index d6f4bc663..0ce1123ed 100644 --- a/src/resources/commands/callbacks/SitOnObjectCmdCallback.java +++ b/src/resources/commands/callbacks/SitOnObjectCmdCallback.java @@ -15,7 +15,7 @@ public class SitOnObjectCmdCallback implements ICmdCallback { @Override public void execute(ObjectManager objManager, Player player,SWGObject target, String args) { - CreatureObject creature = (CreatureObject) player.getCreatureObject(); + CreatureObject creature = player.getCreatureObject(); if (creature.getPosture() == Posture.DEAD || creature.getPosture() == Posture.INCAPACITATED) return; @@ -28,7 +28,7 @@ public class SitOnObjectCmdCallback implements ICmdCallback { float x = Float.valueOf(cmd[0]); float y = Float.valueOf(cmd[1]); float z = Float.valueOf(cmd[2]); - long cellid = Long.valueOf(cmd[3]); + long cellid = Long.parseLong(cmd[3]); sot = new SitOnObject(objectID, cellid, x, y, z); creature.setStatesBitmask(32768); diff --git a/src/resources/commands/callbacks/StandCmdCallback.java b/src/resources/commands/callbacks/StandCmdCallback.java index 1656acb34..4d8cf219e 100644 --- a/src/resources/commands/callbacks/StandCmdCallback.java +++ b/src/resources/commands/callbacks/StandCmdCallback.java @@ -12,7 +12,7 @@ public class StandCmdCallback implements ICmdCallback { @Override public void execute(ObjectManager objManager, Player player, SWGObject target, String args) { - CreatureObject creature = (CreatureObject) player.getCreatureObject(); + CreatureObject creature = player.getCreatureObject(); creature.setPosture(Posture.UPRIGHT); creature.sendObservers(new PostureUpdate(creature.getObjectId(), Posture.UPRIGHT)); } diff --git a/src/resources/encodables/player/Equipment.java b/src/resources/encodables/player/Equipment.java deleted file mode 100644 index fd7c6e8e3..000000000 --- a/src/resources/encodables/player/Equipment.java +++ /dev/null @@ -1,71 +0,0 @@ -package resources.encodables.player; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - -import resources.common.CRC; -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; - private long objectId; - private int templateCRC; - - public Equipment(long objectId, String template) { - this.objectId = objectId; - this.templateCRC = CRC.getCrc(template); - } - - public Equipment(WeaponObject weapon) { - this.objectId = weapon.getObjectId(); - this.templateCRC = weapon.getCrc(); - this.weapon = weapon; - } - - @Override - public byte[] encode() { - ByteBuffer buffer; - byte[] weaponData = null; - - if (weapon != null) { - weaponData = weapon.encode(); - - buffer = ByteBuffer.allocate(19 + weaponData.length).order(ByteOrder.LITTLE_ENDIAN); - } else { - buffer = ByteBuffer.allocate(19).order(ByteOrder.LITTLE_ENDIAN); - } - - if (customizationString == null) buffer.putShort((short) 0); - else buffer.put(customizationString); - - buffer.putInt(arrangementId); - buffer.putLong(objectId); - buffer.putInt(templateCRC); - - if (weapon != null) { - buffer.put((byte) 0x01); - buffer.put(weaponData); - } else { - buffer.put((byte) 0x00); - } - - return buffer.array(); - } - - public byte[] getCustomizationString() {return customizationString;} - public void setCustomizationString(byte[] customizationString) { this.customizationString = customizationString; } - - public int getArrangementId() { return arrangementId; } - public void setArrangementId(int arrangementId) { this.arrangementId = arrangementId; } - - public long getObjectId() { return objectId; } - public void setObjectId(long objectId) { this.objectId = objectId; } - - public int getTemplateCRC() { return templateCRC; } - public void setTemplateCRC(int templateCRC) { this.templateCRC = templateCRC; } -} diff --git a/src/resources/encodables/player/Mail.java b/src/resources/encodables/player/Mail.java deleted file mode 100644 index c78b57324..000000000 --- a/src/resources/encodables/player/Mail.java +++ /dev/null @@ -1,74 +0,0 @@ -package resources.encodables.player; - -import resources.network.BaselineBuilder.Encodable; - -public class Mail implements Encodable { - private static final long serialVersionUID = 1L; - - private int id; - private String sender; - private long receiverId; - private String subject; - private String message; - private byte status; - private int timestamp; - // TODO: Waypoint attachments - - public static final byte NEW = 0x4E; - public static final byte READ = 0x52; - public static final byte UNREAD = 0x55; - - public Mail(String sender, String subject, String message, long receiverId) { - this.sender = sender; - this.subject = subject; - this.message = message; - this.receiverId = receiverId; - this.status = NEW; - } - - @Override - public byte [] encode() { - // TODO Auto-generated method stub - return new byte[0]; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getSender() { - return sender; - } - - public long getReceiverId() { - return receiverId; - } - - public String getSubject() { - return subject; - } - - public String getMessage() { - return message; - } - - public byte getStatus() { - return status; - } - - public void setStatus(byte status) { - this.status = status; - } - - public int getTimestamp() { - return timestamp; - } - - public void setTimestamp(int timestamp) { - this.timestamp = timestamp; - } -} diff --git a/src/resources/objects/creature/CreatureDifficulty.java b/src/resources/objects/creature/CreatureDifficulty.java deleted file mode 100644 index da51b831e..000000000 --- a/src/resources/objects/creature/CreatureDifficulty.java +++ /dev/null @@ -1,24 +0,0 @@ -package resources.objects.creature; - -public enum CreatureDifficulty { - NORMAL (0x00), - ELITE (0x01), - BOSS (0x01); - - private int difficulty; - - CreatureDifficulty(int difficulty) { - this.difficulty = difficulty; - } - - public byte getDifficulty() { - return (byte) difficulty; - } - - public static final CreatureDifficulty getForDifficulty(int difficulty) { - for (CreatureDifficulty d : values()) - if (d.getDifficulty() == difficulty) - return d; - return NORMAL; - } -} diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java deleted file mode 100644 index de7ff8fc5..000000000 --- a/src/resources/objects/creature/CreatureObject.java +++ /dev/null @@ -1,701 +0,0 @@ -package resources.objects.creature; - -import network.packets.swg.zone.SceneEndBaselines; -import network.packets.swg.zone.UpdatePostureMessage; -import network.packets.swg.zone.UpdatePvpStatusMessage; -import network.packets.swg.zone.baselines.Baseline.BaselineType; -import resources.Posture; -import resources.Race; -import resources.collections.SWGList; -import resources.collections.SWGMap; -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; - -public class CreatureObject extends TangibleObject { - - private static final long serialVersionUID = 1L; - - private Posture posture = Posture.UPRIGHT; - private Race race = Race.HUMAN; - private double movementScale = 1; - private double movementPercent = 1; - private double walkSpeed = 1.549; - private double runSpeed = 7.3; - private double accelScale = 1; - private double accelPercent = 1; - private double turnScale = 1; - private double slopeModAngle = 1; - private double slopeModPercent = 1; - private double waterModPercent = 0.75; - private double height = 0; - private long performanceListenTarget = 0; - private int guildId = 0; - private short level = 1; - private int levelHealthGranted = 0; - private int totalLevelXp = 0; - private CreatureDifficulty difficulty = CreatureDifficulty.NORMAL; - private int cashBalance = 0; - private int bankBalance = 0; - private String moodAnimation = "neutral"; - private String animation = ""; - private long equippedWeaponId = 0; - private byte moodId = 0; - private long lookAtTargetId = 0; - private long intendedTargetId = 0; - private int performanceCounter = 0; - private int performanceId = 0; - private String costume = ""; - private boolean visible = true; - private boolean performing = false; - private boolean shownOnRadar = true; - private boolean beast = false; - private long groupId = 0; - private byte factionRank = 0; - private long ownerId = 0; - private int battleFatigue = 0; - private long statesBitmask = 0; - - private SWGList baseAttributes = new SWGList(BaselineType.CREO, 1, 2); - private SWGList skills = new SWGList(BaselineType.CREO, 1, 3, false, StringType.ASCII); - private SWGList hamEncumbList = new SWGList(BaselineType.CREO, 4, 2, true); - private SWGList attributes = new SWGList(BaselineType.CREO, 6, 21, true); - private SWGList maxAttributes = new SWGList(BaselineType.CREO, 6, 22, true); - private SWGList equipmentList = new SWGList(BaselineType.CREO, 6, 23); - private SWGList appearanceList = new SWGList(BaselineType.CREO, 6, 33); - - private SWGMap skillMods = new SWGMap<>(BaselineType.CREO, 4, 3, StringType.ASCII); // TODO: SkillMod structure - private SWGMap missionCriticalObjs = new SWGMap<>(BaselineType.CREO, 4, 13); - private SWGMap abilities = new SWGMap<>(BaselineType.CREO, 4, 14, StringType.ASCII); - private SWGMap buffs = new SWGMap<>(BaselineType.CREO, 6, 26); // TODO: Buff structure - - - public CreatureObject(long objectId) { - super(objectId); - initMaxAttributes(); - initCurrentAttributes(); - initBaseAttributes(); - } - - public void addEquipment(SWGObject obj) { - synchronized(equipmentList) { - if (obj instanceof WeaponObject) - equipmentList.add(new Equipment((WeaponObject) obj)); - else - equipmentList.add(new Equipment(obj.getObjectId(), obj.getTemplate())); - equipmentList.sendDeltaMessage(this); - } - } - - public void addAppearanceItem(SWGObject obj) { - synchronized(appearanceList) { - appearanceList.add(new Equipment(obj.getObjectId(), obj.getTemplate())); - appearanceList.sendDeltaMessage(this); - } - } - - public SWGList getEquipmentList() { - return equipmentList; - } - - public SWGList getAppearanceList() { - return appearanceList; - } - - public SWGList getSkills() { - return skills; - } - - public int getCashBalance() { - return cashBalance; - } - - public int getBankBalance() { - return bankBalance; - } - - public Posture getPosture() { - return posture; - } - - public Race getRace() { - return race; - } - - public double getMovementScale() { - return movementScale; - } - - public double getMovementPercent() { - return movementPercent; - } - - public double getWalkSpeed() { - return walkSpeed; - } - - public double getRunSpeed() { - return runSpeed; - } - - public double getAccelScale() { - return accelScale; - } - - public double getAccelPercent() { - return accelPercent; - } - - public double getTurnScale() { - return turnScale; - } - - public double getSlopeModAngle() { - return slopeModAngle; - } - - public double getSlopeModPercent() { - return slopeModPercent; - } - - public double getWaterModPercent() { - return waterModPercent; - } - - public double getHeight() { - return height; - } - - public long getPerformanceListenTarget() { - return performanceListenTarget; - } - - public int getGuildId() { - return guildId; - } - - public int getLevel() { - return level; - } - - public int getLevelHealthGranted() { - return levelHealthGranted; - } - - public int getTotalLevelXp() { - return totalLevelXp; - } - - public CreatureDifficulty getDifficulty() { - return difficulty; - } - - public PlayerObject getPlayerObject() { - return (PlayerObject) (hasSlot("ghost") ? getSlottedObject("ghost") : null); - } - - public void setPosture(Posture posture) { - this.posture = posture; - sendDelta(3, 13, posture.getId()); - } - - public void setRace(Race race) { - this.race = race; - } - - public void setCashBalance(int cashBalance) { - this.cashBalance = cashBalance; - sendDelta(1, 0, cashBalance); - } - - public void setBankBalance(int bankBalance) { - this.bankBalance = bankBalance; - sendDelta(1, 1, bankBalance); - } - - public void setMovementScale(double movementScale) { - this.movementScale = movementScale; - sendDelta(4, 4, movementScale); - } - - public void setMovementPercent(double movementPercent) { - this.movementPercent = movementPercent; - sendDelta(4, 5, movementPercent); - } - - public void setWalkSpeed(double walkSpeed) { - this.walkSpeed = walkSpeed; - sendDelta(4, 11, walkSpeed); - } - - public void setRunSpeed(double runSpeed) { - this.runSpeed = runSpeed; - sendDelta(4, 7, runSpeed); - } - - public void setAccelScale(double accelScale) { - this.accelScale = accelScale; - sendDelta(4, 0, accelScale); - } - - public void setAccelPercent(double accelPercent) { - this.accelPercent = accelPercent; - sendDelta(4, 1, accelPercent); - } - - public void setTurnScale(double turnScale) { - this.turnScale = turnScale; - sendDelta(4, 10, turnScale); - } - - public void setSlopeModAngle(double slopeModAngle) { - this.slopeModAngle = slopeModAngle; - sendDelta(4, 8, slopeModAngle); - } - - public void setSlopeModPercent(double slopeModPercent) { - this.slopeModPercent = slopeModPercent; - sendDelta(4, 9, slopeModPercent); - } - - public void setWaterModPercent(double waterModPercent) { - this.waterModPercent = waterModPercent; - sendDelta(4, 12, waterModPercent); - } - - public void setHeight(double height) { - this.height = height; - sendDelta(3, 17, height); - } - - public void setPerformanceListenTarget(long performanceListenTarget) { - this.performanceListenTarget = performanceListenTarget; - sendDelta(4, 6, performanceListenTarget); - } - - public void setGuildId(int guildId) { - this.guildId = guildId; - sendDelta(6, 15, guildId); - } - - public void setLevel(short level) { - this.level = level; - sendDelta(6, 8, level); - } - - public void setLevelHealthGranted(int levelHealthGranted) { - this.levelHealthGranted = levelHealthGranted; - sendDelta(6, 9, levelHealthGranted); - } - - public void setTotalLevelXp(int totalLevelXp) { - this.totalLevelXp = totalLevelXp; - sendDelta(4, 15, totalLevelXp); - } - - public void setDifficulty(CreatureDifficulty difficulty) { - this.difficulty = difficulty; - sendDelta(6, 26, difficulty.getDifficulty()); - } - - public String getMoodAnimation() { - return moodAnimation; - } - - public void setMoodAnimation(String moodAnimation) { - this.moodAnimation = moodAnimation; - sendDelta(6, 11, moodAnimation, StringType.ASCII); - } - - public boolean isBeast() { - return beast; - } - - public void setBeast(boolean beast) { - this.beast = beast; - sendDelta(6, 31, beast); - } - - public String getAnimation() { - return animation; - } - - public void setAnimation(String animation) { - this.animation = animation; - sendDelta(6, 10, animation, StringType.ASCII); - } - - public long getEquippedWeaponId() { - return equippedWeaponId; - } - - public void setEquippedWeaponId(long equippedWeaponId) { - this.equippedWeaponId = equippedWeaponId; - sendDelta(6, 12, equippedWeaponId); - } - - public byte getMoodId() { - return moodId; - } - - public void setMoodId(byte moodId) { - this.moodId = moodId; - sendDelta(6, 18, moodId); - } - - public long getLookAtTargetId() { - return lookAtTargetId; - } - - public void setLookAtTargetId(long lookAtTargetId) { - this.lookAtTargetId = lookAtTargetId; - sendDelta(6, 16, lookAtTargetId); - } - - public long getIntendedTargetId() { - return intendedTargetId; - } - - public void setIntendedTargetId(long intendedTargetId) { - this.intendedTargetId = intendedTargetId; - sendDelta(6, 17, intendedTargetId); - } - - public int getPerformanceCounter() { - return performanceCounter; - } - - public void setPerformanceCounter(int performanceCounter) { - this.performanceCounter = performanceCounter; - sendDelta(6, 19, performanceCounter); - } - - public int getPerformanceId() { - return performanceId; - } - - public void setPerformanceId(int performanceId) { - this.performanceId = performanceId; - sendDelta(6, 20, performanceId); - } - - public String getCostume() { - return costume; - } - - public void setCostume(String costume) { - this.costume = costume; - sendDelta(6, 24, costume, StringType.ASCII); - } - - public long getGroupId() { - return groupId; - } - - public void setGroupId(long groupId) { - this.groupId = groupId; - sendDelta(6, 13, groupId); - } - - public byte getFactionRank() { - return factionRank; - } - - public void setFactionRank(byte factionRank) { - this.factionRank = factionRank; - sendDelta(3, 14, factionRank); - } - - public long getOwnerId() { - return ownerId; - } - - public void setOwnerId(long ownerId) { - this.ownerId = ownerId; - sendDelta(3, 15, ownerId); - } - - public int getBattleFatigue() { - return battleFatigue; - } - - public void setBattleFatigue(int battleFatigue) { - this.battleFatigue = battleFatigue; - sendDelta(3, 17, battleFatigue); - } - - public long getStatesBitmask() { - return statesBitmask; - } - - public void setStatesBitmask(long statesBitmask) { - this.statesBitmask = statesBitmask; - sendDelta(3, 18, statesBitmask); - - } - - public boolean isVisible() { - return visible; - } - - public void setVisible(boolean visible) { - this.visible = visible; - sendDelta(6, 25, visible); - } - - public boolean isPerforming() { - return performing; - } - - public void setPerforming(boolean performing) { - this.performing = performing; - sendDelta(6, 27, performing); - } - - public boolean isShownOnRadar() { - return shownOnRadar; - } - - public void setShownOnRadar(boolean shownOnRadar) { - this.shownOnRadar = shownOnRadar; - sendDelta(6, 30, shownOnRadar); - } - - public int getHealth() { - return attributes.get(0); - } - - public int getMaxHealth() { - return maxAttributes.get(0); - } - - public int getBaseHealth() { - return baseAttributes.get(0); - } - - public int getAction() { - return attributes.get(2); - } - - public int getMaxAction() { - return attributes.get(2); - } - - public int getBaseAction() { - return attributes.get(2); - } - - public void setHealth(int health) { - synchronized(attributes) { - attributes.set(0, health); - attributes.sendDeltaMessage(this); - } - } - - public void setMaxHealth(int maxHealth) { - synchronized(maxAttributes) { - maxAttributes.set(0, maxHealth); - maxAttributes.sendDeltaMessage(this); - } - } - - public void setAction(int action) { - synchronized(attributes) { - attributes.set(2, action); - attributes.sendDeltaMessage(this); - } - } - - public void setMaxAction(int maxAction) { - synchronized(maxAttributes) { - maxAttributes.set(2, maxAction); - maxAttributes.sendDeltaMessage(this); - } - } - - private void initMaxAttributes() { - maxAttributes.add(0, 1000); // Health - maxAttributes.add(1, 0); - maxAttributes.add(2, 300); // Action - maxAttributes.add(3, 0); - maxAttributes.add(4, 300); // ?? - maxAttributes.add(5, 0); - maxAttributes.clearDeltaQueue(); - } - - private void initCurrentAttributes() { - attributes.add(0, 1000); // Health - attributes.add(1, 0); - attributes.add(2, 300); // Action - attributes.add(3, 0); - attributes.add(4, 300); // ?? - attributes.add(5, 0); - attributes.clearDeltaQueue(); - } - - private void initBaseAttributes() { - baseAttributes.add(0, 1000); // Health - baseAttributes.add(1, 0); - baseAttributes.add(2, 300); // Action - baseAttributes.add(3, 0); - baseAttributes.add(4, 300); // ?? - baseAttributes.add(5, 0); - baseAttributes.clearDeltaQueue(); - } - - @Override - public boolean equals(Object obj) { - return super.equals(obj); - } - - @Override - public int hashCode() { - return (super.hashCode() * 7 + posture.getId()) * 13 + race.toString().hashCode(); - } - - public void createObject(Player target) { - sendSceneCreateObject(target); - - BaselineBuilder bb = null; - - if (getOwner() == target) { - bb = new BaselineBuilder(this, BaselineType.CREO, 1); - createBaseline1(target, bb); - bb.sendTo(target); - } - - bb = new BaselineBuilder(this, BaselineType.CREO, 3); - createBaseline3(target, bb); - bb.sendTo(target); - - if (getOwner() == target) { - bb = new BaselineBuilder(this, BaselineType.CREO, 4); - createBaseline4(target, bb); - bb.sendTo(target); - } - - bb = new BaselineBuilder(this, BaselineType.CREO, 6); - createBaseline6(target, bb); - bb.sendTo(target); - - if (getOwner() == target) { - bb = new BaselineBuilder(this, BaselineType.CREO, 8); - createBaseline8(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.CREO, 9); - createBaseline9(target, bb); - bb.sendTo(target); - } - - - createChildrenObjects(target); - target.sendPacket(new SceneEndBaselines(getObjectId())); - } - - protected void createChildrenObjects(Player target) { - target.sendPacket(new UpdatePostureMessage(posture.getId(), getObjectId())); - if (target != getOwner()) target.sendPacket(new UpdatePvpStatusMessage(UpdatePvpStatusMessage.PLAYER, 0, getObjectId())); // TODO: Change this when adding non-players - super.createChildrenObjects(target); - } - - public void createBaseline1(Player target, BaselineBuilder bb) { - super.createBaseline1(target, bb); // 0 variables - bb.addInt(cashBalance); // 0 - bb.addInt(bankBalance); // 1 - bb.addObject(baseAttributes); // Attributes player has without any gear on -- 2 - bb.addObject(skills); // 3 - - bb.incremeantOperandCount(4); - } - - public void createBaseline3(Player target, BaselineBuilder bb) { - super.createBaseline3(target, bb); // 13 variables - TANO3 (9) + BASE3 (4) - bb.addByte(posture.getId()); // 13 - bb.addByte(factionRank); // 14 - bb.addLong(ownerId); // 15 - bb.addFloat((float) height); // 16 - bb.addInt(battleFatigue); // 17 - bb.addLong(statesBitmask); // 18 - - bb.incremeantOperandCount(6); - } - - public void createBaseline4(Player target, BaselineBuilder bb) { - super.createBaseline4(target, bb); // 0 variables - bb.addFloat((float) accelScale); // 0 - bb.addFloat((float) accelPercent); // 1 - bb.addObject(hamEncumbList); // 2 - bb.addObject(skillMods); // 3 - bb.addFloat((float) movementScale); // 4 - bb.addFloat((float) movementPercent); // 5 - bb.addLong(performanceListenTarget); // 6 - bb.addFloat((float) runSpeed); // 7 - bb.addFloat((float) slopeModAngle); // 8 - bb.addFloat((float) slopeModPercent); // 9 - bb.addFloat((float) turnScale); // 10 - bb.addFloat((float) walkSpeed); // 11 - bb.addFloat((float) waterModPercent); // 12 - bb.addObject(missionCriticalObjs); // 13 - bb.addObject(abilities); // 14 - bb.addInt(totalLevelXp); // 15 - - bb.incremeantOperandCount(16); - } - - public void createBaseline6(Player target, BaselineBuilder bb) { - super.createBaseline6(target, bb); // 8 variables - TANO6 (6) + BASE6 (2) - bb.addShort(level); // 8 - bb.addInt(levelHealthGranted); // 9 - bb.addAscii(animation); // 10 - bb.addAscii(moodAnimation); // 11 - bb.addLong(equippedWeaponId); // 12 - bb.addLong(groupId); // 13 - bb.addLong(0); // Group Inviter ID -- 14 - bb.addAscii(""); // Group Inviter Name - bb.addLong(0); // Invite counter - bb.addInt(guildId); // 15 - bb.addLong(lookAtTargetId); // 16 - bb.addLong(intendedTargetId); // 17 - bb.addByte(moodId); // 18 - bb.addInt(performanceCounter); // 19 - bb.addInt(performanceId); // 20 - bb.addObject(attributes); // 21 - bb.addObject(maxAttributes); // 22 - bb.addObject(equipmentList); // 23 - bb.addAscii(costume); // 24 - bb.addBoolean(visible); // 25 - bb.addObject(buffs); // 26 - bb.addBoolean(performing); // 27 - bb.addByte(difficulty.getDifficulty()); // 28 - bb.addInt(-1); // Hologram Color -- 29 - bb.addBoolean(shownOnRadar); // 30 - bb.addBoolean(beast); // 31 - bb.addByte(0); // Unknown -- 32 - bb.addObject(appearanceList); // 33 - bb.addLong(0); // unknown -- 34 - - bb.incremeantOperandCount(27); - } - - public void createBaseline8(Player target, BaselineBuilder bb) { - super.createBaseline8(target, bb); - } - - public void createBaseline9(Player target, BaselineBuilder bb) { - super.createBaseline9(target, bb); - } - - public void sendDelta(int type, int update, Object value) { - sendDelta(BaselineType.CREO, type, update, value); - } - - public void sendDelta(int type, int update, Object value, StringType strType) { - sendDelta(BaselineType.CREO, type, update, value, strType); - } -} diff --git a/src/resources/objects/intangible/IntangibleObject.java b/src/resources/objects/intangible/IntangibleObject.java deleted file mode 100644 index d8403a5e7..000000000 --- a/src/resources/objects/intangible/IntangibleObject.java +++ /dev/null @@ -1,64 +0,0 @@ -package resources.objects.intangible; - -import network.packets.swg.zone.SceneEndBaselines; -import network.packets.swg.zone.baselines.Baseline.BaselineType; -import resources.network.BaselineBuilder; -import resources.objects.SWGObject; -import resources.player.Player; - -public class IntangibleObject extends SWGObject { - - private static final long serialVersionUID = 1L; - - private int count = 0; - - public IntangibleObject(long objectId) { - super(objectId); - } - - public int getCount() { - return count; - } - - public void setCount(int count) { - this.count = count; - } - - public void createBaseline3(Player target, BaselineBuilder bb) { - super.createBaseline3(target, bb); // 4 variables - bb.addInt(count); // 4 - - bb.incremeantOperandCount(1); - } - - public void createBaseline6(Player target, BaselineBuilder bb) { - super.createBaseline6(target, bb); // 2 variables - } - - @Override - public boolean equals(Object o) { - return super.equals(o); - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - protected void createObject(Player target) { - super.sendSceneCreateObject(target); - - BaselineBuilder bb = new BaselineBuilder(this, BaselineType.ITNO, 3); - createBaseline3(target, bb); - bb.sendTo(target); - - // Probably won't need to send this as it only contains server id. Game will not crash if you exclude this baseline (PLAY6 is only one who sends this atm) - bb = new BaselineBuilder(this, BaselineType.ITNO, 6); - createBaseline6(target, bb); - bb.sendTo(target); - - createChildrenObjects(target); - target.sendPacket(new SceneEndBaselines(getObjectId())); - } - -} diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java deleted file mode 100644 index 43356512a..000000000 --- a/src/resources/objects/player/PlayerObject.java +++ /dev/null @@ -1,515 +0,0 @@ -package resources.objects.player; - -import network.packets.swg.zone.SceneEndBaselines; -import network.packets.swg.zone.UpdatePostureMessage; -import network.packets.swg.zone.baselines.Baseline.BaselineType; -import resources.collections.SWGList; -import resources.collections.SWGMap; -import resources.network.BaselineBuilder; -import resources.objects.SWGObject; -import resources.objects.creature.CreatureObject; -import resources.objects.intangible.IntangibleObject; -import resources.objects.waypoint.WaypointObject; -import resources.player.AccessLevel; -import resources.player.Player; -import utilities.MathUtils; -import utilities.Encoder.StringType; - -public class PlayerObject extends IntangibleObject { - - private static final long serialVersionUID = 1L; - - private String biography = ""; - // PLAY 03 - private SWGList flagsList = new SWGList<>(BaselineType.PLAY, 3, 5, false, StringType.UNSPECIFIED, true); - private SWGList profileFlags = new SWGList<>(BaselineType.PLAY, 3, 6, false, StringType.UNSPECIFIED, true); - private String title = ""; - private int bornDate = 0; - private int playTime = 0; - private String profession = ""; - private int gcwPoints = 0; - private int pvpKills = 0; - private long lifetimeGcwPoints = 0; - private int lifetimePvpKills = 0; - private SWGList collections = new SWGList<>(BaselineType.PLAY, 3, 16); - private SWGList guildRanks = new SWGList<>(BaselineType.PLAY, 3, 17); - private boolean showHelmet = true; - private boolean showBackpack = true; - // PLAY 06 - private int adminTag = 0; - private int currentRank = 0; - private float rankProgress = 0; - private int highestRebelRank = 0; - private int highestImperialRank = 0; - private int gcwNextUpdate = 0; - private String home = ""; - // PLAY 08 - private SWGMap experience = new SWGMap<>(BaselineType.PLAY, 8, 0); - private SWGMap waypoints = new SWGMap<>(BaselineType.PLAY, 8, 1); - private boolean citizen = false; - private int guildRankTitle = 0; - private int activeQuest = 0; - private SWGMap quests = new SWGMap<>(BaselineType.PLAY, 8, 7); - private String profWheelPosition = ""; - // PLAY 09 - private int experimentFlag = 0; - private int craftingStage = 0; - private long nearbyCraftStation = 0; - private SWGList draftSchemList = new SWGList<>(BaselineType.PLAY, 9, 3); - private int experimentPoints = 0; - private SWGList friendsList = new SWGList<>(BaselineType.PLAY, 9, 7); - private SWGList ignoreList = new SWGList<>(BaselineType.PLAY, 9, 8); - private int languageId = 0; - private SWGList defenders = new SWGList<>(BaselineType.PLAY, 9, 17); // TODO: Change to set - private int killMeter = 0; - private long petId = 0; - private SWGList petAbilities = new SWGList<>(BaselineType.PLAY, 9, 21); - private SWGList activePetAbilities = new SWGList<>(BaselineType.PLAY, 9, 22); - - - public PlayerObject(long objectId) { - super(objectId); - setVolume(0); - initFlags(); - } - - public void addWaypoint(WaypointObject waypoint) { - synchronized(waypoints) { - waypoints.put(waypoint.getObjectId(), waypoint); - waypoints.sendDeltaMessage(this); - } - } - - public WaypointObject getWaypoint(long objId) { - synchronized(waypoints) { - return waypoints.get(objId); - } - } - - public void updateWaypoint(WaypointObject obj) { - synchronized(waypoints) { - waypoints.update(obj.getObjectId(), this); - } - } - - public void removeWaypoint(long objId) { - synchronized(waypoints) { - waypoints.remove(objId); - waypoints.sendDeltaMessage(this); - } - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - sendDelta(3, 7, title, StringType.ASCII); - } - - public int getPlayTime() { - return playTime; - } - - public void setPlayTime(int playTime) { - this.playTime = playTime; - sendDelta(3, 9, playTime); - } - - public int getGcwPoints() { - return gcwPoints; - } - - public void setGcwPoints(int gcwPoints) { - this.gcwPoints = gcwPoints; - sendDelta(3, 12, gcwPoints); - } - - public int getPvpKills() { - return pvpKills; - } - - public void setPvpKills(int pvpKills) { - this.pvpKills = pvpKills; - sendDelta(3, 13, pvpKills); - } - - public long getLifetimeGcwPoints() { - return lifetimeGcwPoints; - } - - public void setLifetimeGcwPoints(long lifetimeGcwPoints) { - this.lifetimeGcwPoints = lifetimeGcwPoints; - sendDelta(3, 14, lifetimeGcwPoints); - } - - public int getLifetimePvpKills() { - return lifetimePvpKills; - } - - public void setLifetimePvpKills(int lifetimePvpKills) { - this.lifetimePvpKills = lifetimePvpKills; - sendDelta(3, 15, lifetimePvpKills); - } - - public SWGList getGuildRanks() { - return guildRanks; - } - - public void setGuildRanks(SWGList guildRanks) { - this.guildRanks = guildRanks; - } - - public boolean isShowHelmet() { - return showHelmet; - } - - public void setShowHelmet(boolean showHelmet) { - this.showHelmet = showHelmet; - sendDelta(3, 18, showHelmet); - } - - public boolean isShowBackpack() { - return showBackpack; - } - - public void setShowBackpack(boolean showBackpack) { - this.showBackpack = showBackpack; - sendDelta(3, 19, showBackpack); - } - - public String getProfession() { - return profession; - } - - public void setProfession(String profession) { - this.profession = profession; - sendDelta(3, 11, profession, StringType.ASCII); - } - - public String getBiography() { - return biography; - } - - public void setBiography(String biography) { - this.biography = biography; - } - - public void setBornDate(int year, int month, int day) { - this.bornDate = MathUtils.numberDaysSince(year, month, day, 2000, 12, 31); - } - - public int getBornDate() { - return bornDate; - } - - public void setAdminTag(AccessLevel access) { - switch(access) { - case PLAYER: break; - case ADMIN: adminTag = 1; break; - case DEV: adminTag = 2; break; - case QA: adminTag = 4; break; - } - sendDelta(6, 2, adminTag); - } - - public void setAdminTag(int tag) { - this.adminTag = tag; - sendDelta(6, 2, tag); - } - - public int getCurrentRank() { - return currentRank; - } - - public void setCurrentRank(int currentRank) { - this.currentRank = currentRank; - sendDelta(6, 3, currentRank); - } - - public float getRankProgress() { - return rankProgress; - } - - public void setRankProgress(float rankProgress) { - this.rankProgress = rankProgress; - sendDelta(6, 4, rankProgress); - } - - public int getHighestRebelRank() { - return highestRebelRank; - } - - public void setHighestRebelRank(int highestRebelRank) { - this.highestRebelRank = highestRebelRank; - sendDelta(6, 5, highestRebelRank); - } - - public int getHighestImperialRank() { - return highestImperialRank; - } - - public void setHighestImperialRank(int highestImperialRank) { - this.highestImperialRank = highestImperialRank; - sendDelta(6, 6, highestImperialRank); - } - - public int getGcwNextUpdate() { - return gcwNextUpdate; - } - - public void setGcwNextUpdate(int gcwNextUpdate) { - this.gcwNextUpdate = gcwNextUpdate; - sendDelta(6, 7, gcwNextUpdate); - } - - public String getHome() { - return home; - } - - public void setHome(String home) { - this.home = home; - sendDelta(6, 8, home, StringType.ASCII); - } - - public boolean isCitizen() { - return citizen; - } - - public void setCitizen(boolean citizen) { - this.citizen = citizen; - sendDelta(6, 9, citizen); - } - - public int getGuildRankTitle() { - return guildRankTitle; - } - - public void setGuildRankTitle(int guildRankTitle) { - this.guildRankTitle = guildRankTitle; - sendDelta(6, 13, guildRankTitle); - } - - public int getActiveQuest() { - return activeQuest; - } - - public void setActiveQuest(int activeQuest) { - this.activeQuest = activeQuest; - sendDelta(8, 6, activeQuest); - } - - public String getProfWheelPosition() { - return profWheelPosition; - } - - public void setProfWheelPosition(String profWheelPosition) { - this.profWheelPosition = profWheelPosition; - sendDelta(8, 8, profWheelPosition); - } - - public void setFlagBitmask(int flagBitmask) { - flagsList.set(0, flagsList.get(0) | flagBitmask); - sendDelta(9, 5, flagsList); - } - - public void clearFlagBitmask(int flagBitmask) { - flagsList.set(0, flagsList.get(0) & ~flagBitmask); - sendDelta(9, 5, flagsList); - } - - public void toggleFlag(int flag) { - if ((flagsList.get(0) & flag) == flag) clearFlagBitmask(flag); - else setFlagBitmask(flag); - } - - private int getProfessionIcon() { - switch (profession) { - case "entertainer_1a": - return 5; - case "medic_1a": - return 10; - case "officer_1a": - return 15; - case "bounty_hunter_1a": - return 20; - case "smuggler_1a": - return 25; - case "commando_1a": - return 30; - case "spy_1a": - return 35; - case "force_sensitive_1a": - return 40; - case "trader_0a": - case "trader_0b": - case "trader_0c": - case "trader_0d": - default: - return 0; - } - } - - private void initFlags() { - for (int i = 0; i < 4; i++) { - profileFlags.add(0); - flagsList.add(0); - } - - profileFlags.setUpdateCount(0); - flagsList.setUpdateCount(0); - } - - @Override - public boolean equals(Object o) { - return super.equals(o); - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - protected void createObject(Player target) { - super.sendSceneCreateObject(target); - - BaselineBuilder bb = new BaselineBuilder(this, BaselineType.PLAY, 3); - createBaseline3(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.PLAY, 6); - createBaseline6(target, bb); - bb.sendTo(target); - - if (getOwner() == target) { - bb = new BaselineBuilder(this, BaselineType.PLAY, 8); - createBaseline8(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.PLAY, 9); - createBaseline9(target, bb); - bb.sendTo(target); - } - - createChildrenObjects(target); - target.sendPacket(new SceneEndBaselines(getObjectId())); - } - - public void createChildrenObjects(Player target) { - SWGObject parent = getParent(); - if (parent != null && parent instanceof CreatureObject) - target.sendPacket(new UpdatePostureMessage(((CreatureObject)parent).getPosture().getId(), getObjectId())); - super.createChildrenObjects(target); - } - - public void createBaseline3(Player target, BaselineBuilder bb) { - super.createBaseline3(target, bb); // 5 variables - bb.addObject(flagsList); // 4 flags -- 5 - bb.addObject(profileFlags); // 4 flags -- 6 - bb.addAscii(title); // 7 - bb.addInt(bornDate); // Born Date -- 4001 = 12/15/2011 || Number of days after 12/31/2000 -- 8 - bb.addInt(playTime); // 9 - bb.addInt(getProfessionIcon()); // 10 - bb.addAscii(profession); // 11 - bb.addInt(gcwPoints); // 12 - bb.addInt(pvpKills); // 13 - bb.addLong(lifetimeGcwPoints); // 14 - bb.addInt(lifetimePvpKills); // 15 - bb.addObject(collections); // 16 - bb.addObject(guildRanks); // 17 - bb.addBoolean(showHelmet); // 18 - bb.addBoolean(showBackpack); // 19 - - bb.incremeantOperandCount(15); - } - - public void createBaseline6(Player target, BaselineBuilder bb) { - super.createBaseline6(target, bb); // 2 variables - bb.addByte(adminTag); // Admin Tag (0 = none, 1 = CSR, 2 = Developer, 3 = Warden, 4 = QA) -- 2 - bb.addInt(currentRank); // 3 - bb.addFloat(rankProgress); // 4 - bb.addInt(highestRebelRank); // 5 - bb.addInt(highestImperialRank); // 6 - bb.addInt(gcwNextUpdate); // 7 - bb.addAscii(home); // 8 - bb.addBoolean(citizen); // 9 - bb.addAscii(""); // City Region Defender 'region' -- 10 - bb.addByte(0); // City Region Defender byte #1 - bb.addByte(0); // City Region Defender byte #2 - bb.addAscii(""); // Guild Region Defender 'region' -- 11 - bb.addByte(0); // Guild Region Defender byte #1 - bb.addByte(0); // Guild Region Defender byte #2 - bb.addLong(0); // General? -- 12 - bb.addInt(guildRankTitle); // 13 - bb.addShort(0); // Citizen Rank Title? 6 bytes -- 14 - bb.addInt(1); // Speeder Elevation -- 15 - bb.addAscii(""); // Vehicle Attack Command -- 16 - - bb.incremeantOperandCount(15); - } - - public void createBaseline8(Player target, BaselineBuilder bb) { - super.createBaseline8(target, bb); // 0 variables - bb.addObject(experience); // 0 - bb.addObject(waypoints); // 1 - bb.addInt(100); // Current Force Power -- 2 - bb.addInt(100); // Max Force Power -- 3 - bb.addInt(0); // Current FS Quest List (List) -- 4 - bb.addInt(0); - bb.addInt(0); // Completed FS Quest List (List) -- 5 - bb.addInt(0); - bb.addInt(activeQuest); // 6 - bb.addObject(quests); // 7 - bb.addAscii(profWheelPosition); // 8 - - bb.incremeantOperandCount(9); - } - - public void createBaseline9(Player target, BaselineBuilder bb) { - super.createBaseline9(target, bb); // 0 variables - bb.addInt(experimentFlag); // 0 - bb.addInt(craftingStage); // 1 - bb.addLong(nearbyCraftStation); // 2 - bb.addObject(draftSchemList); // 3 - bb.addInt(0); // Might or might not be a list, two ints that are part of the same delta -- 4 - bb.addInt(0); - bb.addInt(experimentPoints); // 5 - bb.addInt(0); // Accomplishment Counter - Pre-NGE? -- 6 - bb.addObject(friendsList); // 7 - bb.addObject(ignoreList); // 8 - bb.addInt(languageId); // 9 - bb.addInt(0); // Current Stomach -- 10 - bb.addInt(100); // Max Stomach -- 11 - bb.addInt(0); // Current Drink -- 12 - bb.addInt(100); // Max Drink -- 13 - bb.addInt(0); // Current Consumable -- 14 - bb.addInt(100); // Max Consumable -- 15 - bb.addInt(0); // Waypoints - Is there a difference between this one and baseline 8? -- 16 - bb.addInt(0); - bb.addObject(defenders); // 17 - bb.addInt(killMeter); // 18 - bb.addInt(0); // Unk -- 19 - bb.addLong(petId); // 20 - bb.addObject(petAbilities); // 21 - bb.addObject(activePetAbilities); // 22 - bb.addByte(0); // Unk sometimes 0x01 or 0x02 -- 23 - bb.addInt(0); // Unk sometimes 4 -- 24 - bb.addLong(0); // Unk Bitmask starts with 0x20 ends with 0x40 -- 25 - bb.addLong(0); // Unk Changes from 6 bytes to 9 -- 26 - bb.addByte(0); // Unk Changes from 6 bytes to 9 -- 27 - bb.addLong(0); // Unk sometimes 856 -- 28 - bb.addLong(0); // Unk sometimes 8559 -- 29 - bb.addInt(0); // Residence Time? Seen as Saturday 28th May 2011 -- 30 - - bb.incremeantOperandCount(31); - } - - public void sendDelta(int type, int update, Object value) { - sendDelta(BaselineType.PLAY, type, update, value); - } - - public void sendDelta(int type, int update, Object value, StringType strType) { - sendDelta(BaselineType.PLAY, type, update, value, strType); - } -} diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java deleted file mode 100644 index 90d4a58a1..000000000 --- a/src/resources/objects/tangible/TangibleObject.java +++ /dev/null @@ -1,204 +0,0 @@ -package resources.objects.tangible; - -import network.packets.swg.zone.SceneEndBaselines; -import network.packets.swg.zone.baselines.Baseline.BaselineType; -import resources.network.BaselineBuilder; -import resources.objects.SWGObject; -import resources.player.Player; - -public class TangibleObject extends SWGObject { - - private static final long serialVersionUID = 1L; - - private byte [] appearanceData = new byte[0]; - private int damageTaken = 0; - private int maxHitPoints = 0; - private int components = 0; - private boolean inCombat = false; - private int condition = 0; - private int pvpFlags = 0; - private int pvpType = 0; - private int pvpFactionId = 0; - private boolean visibleGmOnly = false; - private byte [] objectEffects = new byte[0]; - - public TangibleObject(long objectId) { - super(objectId); - } - - public byte [] getAppearanceData() { - return appearanceData; - } - - public int getDamageTaken() { - return damageTaken; - } - - public int getMaxHitPoints() { - return maxHitPoints; - } - - public int getComponents() { - return components; - } - - public boolean isInCombat() { - return inCombat; - } - - public int getCondition() { - return condition; - } - - public int getPvpFlags() { - return pvpFlags; - } - - public int getPvpType() { - return pvpType; - } - - public int getPvpFactionId() { - return pvpFactionId; - } - - public boolean isVisibleGmOnly() { - return visibleGmOnly; - } - - public byte [] getObjectEffects() { - return objectEffects; - } - - public void setAppearanceData(byte [] appearanceData) { - this.appearanceData = appearanceData; - } - - public void setDamageTaken(int damageTaken) { - this.damageTaken = damageTaken; - } - - public void setMaxHitPoints(int maxHitPoints) { - this.maxHitPoints = maxHitPoints; - } - - public void setComponents(int components) { - this.components = components; - } - - public void setInCombat(boolean inCombat) { - this.inCombat = inCombat; - } - - public void setCondition(int condition) { - this.condition = condition; - } - - public void setPvpFlags(int pvpFlags) { - this.pvpFlags = pvpFlags; - } - - public void setPvpType(int pvpType) { - this.pvpType = pvpType; - } - - public void setPvpFactionId(int pvpFactionId) { - this.pvpFactionId = pvpFactionId; - } - - public void setVisibleGmOnly(boolean visibleGmOnly) { - this.visibleGmOnly = visibleGmOnly; - } - - public void setObjectEffects(byte [] objectEffects) { - this.objectEffects = objectEffects; - } - - @Override - public boolean equals(Object o) { - return super.equals(o); - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - protected void createObject(Player target) { - super.sendSceneCreateObject(target); - - BaselineBuilder bb = new BaselineBuilder(this, BaselineType.TANO, 3); - createBaseline3(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.TANO, 6); - createBaseline6(target, bb); - bb.sendTo(target); - - if (getOwner() == target) { - bb = new BaselineBuilder(this, BaselineType.TANO, 8); - createBaseline8(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.TANO, 9); - createBaseline9(target, bb); - bb.sendTo(target); - } - - createChildrenObjects(target); - target.sendPacket(new SceneEndBaselines(getObjectId())); - } - - protected void createChildrenObjects(Player target) { - super.createChildrenObjects(target); - } - - public void createBaseline3(Player target, BaselineBuilder bb) { - super.createBaseline3(target, bb); // 4 variables - BASE3 (4) - bb.addInt(0); // Faction - bb.addInt(0); // Faction Status - bb.addArray(appearanceData); - bb.addInt(0); // Component customization (Set, Integer) - bb.addInt(0); //updates - bb.addInt(128); // Options Bitmask (128 = Attackable) - bb.addInt(0); // Incap Timer for players, Use count for objects - bb.addInt(condition); - bb.addInt(100); // Random number that should be high enough - maxCondition - bb.addBoolean(false); // isStatic - - bb.incremeantOperandCount(9); - } - - public void createBaseline6(Player target, BaselineBuilder bb) { - super.createBaseline6(target, bb); - bb.addBoolean(false); // Combat flag - bb.addInt(0); // Defenders List (Set, Long) - bb.addInt(0); - bb.addInt(0); // Unknown List (List, Long) - bb.addInt(0); - bb.addInt(0); // Unknown List (List, Integer) - bb.addInt(0); - bb.addInt(0); // Unknown, possibly a list/map or something - bb.addInt(0); - - bb.addInt(0); - - bb.incremeantOperandCount(6); - } - - public void createBaseline8(Player target, BaselineBuilder bb) { - super.createBaseline8(target, bb); - bb.addShort(0); - bb.addShort(0); - - bb.incremeantOperandCount(2); - } - - public void createBaseline9(Player target, BaselineBuilder bb) { - super.createBaseline9(target, bb); - bb.addShort(0); - bb.addShort(0); - - bb.incremeantOperandCount(2); - } -} diff --git a/src/resources/objects/waypoint/WaypointObject.java b/src/resources/objects/waypoint/WaypointObject.java deleted file mode 100644 index 35b0bcfda..000000000 --- a/src/resources/objects/waypoint/WaypointObject.java +++ /dev/null @@ -1,110 +0,0 @@ -package resources.objects.waypoint; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; - -import resources.common.CRC; -import resources.network.BaselineBuilder.Encodable; -import resources.objects.intangible.IntangibleObject; -import resources.player.Player; -import utilities.Encoder; - -public class WaypointObject extends IntangibleObject implements Encodable { - - private static final long serialVersionUID = 1L; - - private int cellNumber; - private String name = "New Waypoint"; - private WaypointColor color = WaypointColor.BLUE; - private boolean active = true; - - public WaypointObject(long objectId) { - super(objectId); - } - - - public int getCellNumber() { - return cellNumber; - } - - - public void setCellNumber(int cellNumber) { - this.cellNumber = cellNumber; - } - - public String getName() { - return name; - } - - - public void setName(String name) { - this.name = name; - } - - - public WaypointColor getColor() { - return color; - } - - - public void setColor(WaypointColor color) { - this.color = color; - } - - - public boolean isActive() { - return active; - } - - public void setActive(boolean active) { - this.active = active; - } - - protected void createObject(Player target) { - // NOTE: Client is never sent a WAYP baseline in NGE, WaypointObject's just go inside the Waypoint List in PLAY. - } - - @Override - public byte[] encode() { - ByteBuffer bb = ByteBuffer.allocate(42 + name.length() * 2).order(ByteOrder.LITTLE_ENDIAN); - bb.putInt(cellNumber); - bb.putFloat((float) getLocation().getX()); - bb.putFloat((float) 0); - bb.putFloat((float) getLocation().getZ()); - bb.putLong(0); // Network id, used for clusters - bb.putInt(CRC.getCrc(getLocation().getTerrain().getName())); - bb.put(Encoder.encodeUnicode(name)); - bb.putLong(getObjectId()); - bb.put((byte) color.getValue()); - bb.put((byte) (active ? 1 : 0)); - return bb.array(); - } - - @Override - public boolean equals(Object o) { - if (!super.equals(o)) - return false; - if (o instanceof WaypointObject) { - WaypointObject wp = (WaypointObject) o; - return wp.name.equals(name) && wp.cellNumber == cellNumber && wp.color == color && wp.active == active; - } - return false; - } - - @Override - public int hashCode() { - return ((super.hashCode() * 7 + name.hashCode()) * 13 + color.getValue()) * 17 + cellNumber; - } - - public enum WaypointColor{ - BLUE(1), GREEN(2), ORANGE(3), YELLOW(4), PURPLE(5), WHITE(6), MULTICOLOR(7); - - private int i; - - private WaypointColor(int i) { - this.i = i; - } - - public int getValue() { return i; } - } -} diff --git a/src/resources/objects/weapon/WeaponObject.java b/src/resources/objects/weapon/WeaponObject.java deleted file mode 100644 index 2682d96f4..000000000 --- a/src/resources/objects/weapon/WeaponObject.java +++ /dev/null @@ -1,121 +0,0 @@ -package resources.objects.weapon; - -import network.packets.swg.zone.baselines.Baseline.BaselineType; -import resources.network.BaselineBuilder; -import resources.network.BaselineBuilder.Encodable; -import resources.objects.tangible.TangibleObject; -import resources.player.Player; - -public class WeaponObject extends TangibleObject implements Encodable{ - - private static final long serialVersionUID = 1L; - - private float attackSpeed = 0.5f; - private float maxRange = 5f; - private int type = WeaponType.UNARMED; - - public WeaponObject(long objectId) { - super(objectId); - setComplexity(0); - } - - public float getAttackSpeed() { - return attackSpeed; - } - - public void setAttackSpeed(float attackSpeed) { - this.attackSpeed = attackSpeed; - } - - public float getMaxRange() { - return maxRange; - } - - public void setMaxRange(float maxRange) { - this.maxRange = maxRange; - } - - public int getType() { - return type; - } - - public void setType(int type) { - this.type = type; - } - - @Override - public boolean equals(Object o) { - if (!super.equals(o)) - return false; - if (o instanceof WeaponObject) { - WeaponObject w = (WeaponObject) o; - return w.type == type; - } - return false; - } - - @Override - public int hashCode() { - return super.hashCode() * 7 + type; - } - - protected void createObject(Player target) { - super.sendSceneCreateObject(target); - - BaselineBuilder bb = new BaselineBuilder(this, BaselineType.WEAO, 3); - createBaseline3(target, bb); - bb.sendTo(target); - - bb = new BaselineBuilder(this, BaselineType.WEAO, 6); - createBaseline6(target, bb); - bb.sendTo(target); - } - - public void createBaseline3(Player target, BaselineBuilder bb) { - super.createBaseline3(target, bb); - - bb.addFloat(attackSpeed); - bb.addInt(0); // accuracy (pre-nge) - bb.addInt(0); // unknown - bb.addFloat(maxRange); - bb.addInt(1); // unknown (set to 1 for default weapon) - bb.addInt(0); // weapon particle effect? - bb.addInt(0); // weapon particle effect color? - - bb.incremeantOperandCount(7); - } - - public void createBaseline6(Player target, BaselineBuilder bb) { - super.createBaseline6(target, bb); - - bb.addInt(type); - - bb.incremeantOperandCount(1); - } - - public void createBaseline8(Player target, BaselineBuilder bb) { - super.createBaseline8(target, bb); - } - - public void createBaseline9(Player target, BaselineBuilder bb) { - super.createBaseline9(target, bb); - } - - @Override - public byte[] encode() { - BaselineBuilder bb = new BaselineBuilder(this, BaselineType.WEAO, 3); - createBaseline3(null, bb); - byte[] data3 = bb.buildAsBaselinePacket(); - - bb = new BaselineBuilder(this, BaselineType.WEAO, 6); - createBaseline6(null, bb); - byte[] data6 = bb.buildAsBaselinePacket(); - - byte[] ret = new byte[data3.length + data6.length]; - System.arraycopy(data3, 0, ret, 0, data3.length); - System.arraycopy(data6, 0, ret, data3.length, data6.length); - - return ret; - } - -} diff --git a/src/resources/objects/weapon/WeaponType.java b/src/resources/objects/weapon/WeaponType.java deleted file mode 100644 index 637b03b95..000000000 --- a/src/resources/objects/weapon/WeaponType.java +++ /dev/null @@ -1,19 +0,0 @@ -package resources.objects.weapon; - -public final class WeaponType { - // combat_timing.iff datatable - public static final int RIFLE = 0; - public static final int CARBINE = 1; - public static final int PISTOL = 2; - public static final int HEAVY = 3; - public static final int ONEHANDEDMELEE = 4; - public static final int TWOHANDEDMELEE = 5; - public static final int UNARMED = 6; - public static final int POLEARMMELEE = 7; - public static final int THROWN = 8; - public static final int ONEHANDEDSABER = 9; - public static final int TWOHANDEDSABER = 10; - public static final int POLEARMSABER = 11; - public static final int HEAVYWEAPON = 12; - public static final int DIRECTIONALTARGETWEAPON = 13; -} diff --git a/src/services/commands/CommandService.java b/src/services/commands/CommandService.java index 5f8c9febc..1cc7b3485 100644 --- a/src/services/commands/CommandService.java +++ b/src/services/commands/CommandService.java @@ -16,7 +16,6 @@ import resources.common.CRC; import resources.control.Intent; import resources.control.Service; import resources.objects.SWGObject; -import resources.objects.creature.CreatureObject; import resources.player.AccessLevel; import resources.player.Player; import resources.utilities.Scripts; @@ -42,14 +41,14 @@ public class CommandService extends Service { @Override public void onIntentReceived(Intent i) { if (i instanceof GalacticPacketIntent) { - Packet p = ((GalacticPacketIntent) i).getPacket(); - long netId = ((GalacticPacketIntent) i).getNetworkId(); - Player player = ((GalacticPacketIntent) i).getPlayerManager().getPlayerFromNetworkId(netId); + GalacticPacketIntent gpi = (GalacticPacketIntent) i; + Packet p = gpi.getPacket(); + long netId = gpi.getNetworkId(); + Player player = gpi.getPlayerManager().getPlayerFromNetworkId(netId); if (player != null) { if (p instanceof CommandQueueEnqueue) { CommandQueueEnqueue controller = (CommandQueueEnqueue) p; - if (controller instanceof CommandQueueEnqueue) - handleCommandRequest(player, ((GalacticPacketIntent) i).getObjectManager(), (CommandQueueEnqueue) controller); + handleCommandRequest(player, gpi.getObjectManager(), controller); } } } @@ -67,8 +66,7 @@ public class CommandService extends Service { } private void executeCommand(ObjectManager objManager, Player player, Command command, SWGObject target, String args) { - CreatureObject playerCreo = (CreatureObject) player.getCreatureObject(); - if (playerCreo == null) + if (player.getCreatureObject() == null) return; if (command.getGodLevel() > 0 && player.getAccessLevel() == AccessLevel.PLAYER) diff --git a/src/services/objects/ObjectManager.java b/src/services/objects/ObjectManager.java index 734fd289b..1bc89c238 100644 --- a/src/services/objects/ObjectManager.java +++ b/src/services/objects/ObjectManager.java @@ -294,11 +294,11 @@ public class ObjectManager extends Manager { return; player.setPlayerState(PlayerState.ZONING_IN); verifyPlayerObjectsSet(player, characterId); - long objId = player.getCreatureObject().getObjectId(); - Race race = ((CreatureObject) player.getCreatureObject()).getRace(); - Location l = player.getCreatureObject().getLocation(); + CreatureObject creature = player.getCreatureObject(); + long objId = creature.getObjectId(); + Race race = creature.getRace(); + Location l = creature.getLocation(); long time = (long)(ProjectSWG.getCoreTime()/1E3); - CreatureObject creature = (CreatureObject) player.getCreatureObject(); sendPacket(player, new HeartBeatMessage()); sendPacket(player, new ChatServerStatus(true)); sendPacket(player, new VoiceChatStatus()); @@ -321,7 +321,11 @@ public class ObjectManager extends Manager { System.err.println("ObjectManager: Failed to start zone - CreatureObject could not be fetched from database [Character: " + characterId + " User: " + player.getUsername() + "]"); return; } - player.setCreatureObject(creature); + if (!(creature instanceof CreatureObject)) { + System.err.println("ObjectManager: Failed to start zone - Object is not a CreatureObject for ID " + characterId); + return; + } + player.setCreatureObject((CreatureObject) creature); creature.setOwner(player); if (player.getPlayerObject() == null) { diff --git a/src/services/player/LoginService.java b/src/services/player/LoginService.java index a0798d5ae..d310ed60a 100644 --- a/src/services/player/LoginService.java +++ b/src/services/player/LoginService.java @@ -4,6 +4,7 @@ import intents.GalacticIntent; import intents.LoginEventIntent; import intents.LoginEventIntent.LoginEvent; +import java.nio.charset.Charset; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; diff --git a/src/services/player/ZoneService.java b/src/services/player/ZoneService.java index 536d9d027..85ec4cb28 100644 --- a/src/services/player/ZoneService.java +++ b/src/services/player/ZoneService.java @@ -197,7 +197,7 @@ public class ZoneService extends Service { try { createCharacter.setLong(1, characterId); createCharacter.setString(2, name); - createCharacter.setString(3, ((CreatureObject) player.getCreatureObject()).getRace().getFilename()); + createCharacter.setString(3, player.getCreatureObject().getRace().getFilename()); createCharacter.setInt(4, player.getUserId()); createCharacter.setInt(5, player.getGalaxyId()); return createCharacter.executeUpdate() == 1;