Merge holocore/quality_assurance into buffs

Conflicts:
	src/resources/objects/creature/CreatureObject.java
	src/resources/objects/player/PlayerObject.java
	src/services/galaxy/GameManager.java
This commit is contained in:
Mads Boddum
2016-08-29 05:27:10 +02:00
343 changed files with 43400 additions and 38590 deletions
+132 -299
View File
@@ -29,12 +29,9 @@ package resources.objects.player;
import network.packets.swg.zone.UpdatePostureMessage;
import network.packets.swg.zone.baselines.Baseline.BaselineType;
import network.packets.swg.zone.chat.ChatSystemMessage;
import resources.collections.SWGFlag;
import resources.collections.SWGBitSet;
import resources.collections.SWGList;
import resources.collections.SWGMap;
import resources.network.BaselineBuilder;
import resources.network.NetBufferStream;
import resources.objects.SWGObject;
import resources.objects.creature.CreatureObject;
import resources.objects.intangible.IntangibleObject;
@@ -42,68 +39,23 @@ import resources.objects.waypoint.WaypointObject;
import resources.player.AccessLevel;
import resources.player.Player;
import resources.player.PlayerFlags;
import utilities.MathUtils;
import utilities.Encoder.StringType;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
public class PlayerObject extends IntangibleObject {
private static final long serialVersionUID = 1L;
private PlayerObjectShared play3 = new PlayerObjectShared();
private PlayerObjectSharedNP play6 = new PlayerObjectSharedNP();
private PlayerObjectPrivate play8 = new PlayerObjectPrivate();
private PlayerObjectPrivateNP play9 = new PlayerObjectPrivateNP();
private String biography = "";
private List<String> joinedChannels = new ArrayList<>();
// PLAY 03
private SWGFlag flagsList = new SWGFlag(3, 5);
private SWGFlag profileFlags = new SWGFlag(3, 6);
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 SWGBitSet collectionBadges = new SWGBitSet(3, 16);
private SWGList<Integer> guildRanks = new SWGList<>(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<String, Integer> experience = new SWGMap<>(8, 0);
private SWGMap<Long, WaypointObject> waypoints = new SWGMap<>(8, 1);
private boolean citizen = false;
private int guildRankTitle = 0;
private int activeQuest = 0;
private SWGMap<Integer, Integer> quests = new SWGMap<>(8, 7);
private String profWheelPosition = "";
// PLAY 09
private int experimentFlag = 0;
private int craftingStage = 0;
private long nearbyCraftStation = 0;
private SWGList<String> draftSchemList = new SWGList<>(9, 3);
private int experimentPoints = 0;
private SWGList<String> friendsList = new SWGList<>(9, 7, StringType.ASCII);
private SWGList<String> ignoreList = new SWGList<>(9, 8, StringType.ASCII);
private int languageId = 0;
private SWGList<Long> defenders = new SWGList<>(9, 17); // TODO: Change to set
private int killMeter = 0;
private long petId = 0;
private SWGList<String> petAbilities = new SWGList<>(9, 21);
private SWGList<String> activePetAbilities = new SWGList<>(9, 22);
private int startPlayTime;
private int startPlayTime = 0;
private String biography = "";
private List<String> joinedChannels = new ArrayList<>();
public PlayerObject(long objectId) {
super(objectId, BaselineType.PLAY);
@@ -111,47 +63,30 @@ public class PlayerObject extends IntangibleObject {
}
public void addWaypoint(WaypointObject waypoint) {
synchronized(waypoints) {
if (waypoints.size() < 250) {
waypoints.put(waypoint.getObjectId(), waypoint);
waypoints.sendDeltaMessage(this);
}
else {
sendSelf(new ChatSystemMessage(ChatSystemMessage.SystemChatType.SCREEN_AND_CHAT, "@base_player:too_many_waypoints"));
}
}
play8.addWaypoint(waypoint, this);
}
public WaypointObject getWaypoint(long objId) {
synchronized(waypoints) {
return waypoints.get(objId);
}
return play8.getWaypoint(objId);
}
public SWGMap<Long, WaypointObject> getWaypoints() {
synchronized(waypoints) {
return waypoints;
}
return play8.getWaypoints();
}
public void updateWaypoint(WaypointObject obj) {
synchronized(waypoints) {
waypoints.update(obj.getObjectId(), this);
}
play8.updateWaypoint(obj, this);
}
public void removeWaypoint(long objId) {
synchronized(waypoints) {
waypoints.remove(objId);
waypoints.sendDeltaMessage(this);
}
play8.removeWaypoint(objId, this);
}
public String getTitle() {
return title;
return play3.getTitle();
}
public void setTitle(String title) {
this.title = title;
play3.setTitle(title);
sendDelta(3, 7, title, StringType.ASCII);
}
@@ -160,93 +95,82 @@ public class PlayerObject extends IntangibleObject {
* @return the amount of time this PlayerObject has played.
*/
public int getPlayTime() {
playTime = (int) TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - getStartPlayTime()); // Set new time and send delta
return playTime;
return play3.getPlayTime();
}
public void setPlayTime(int playTime) {
this.playTime = playTime;
play3.setPlayTime(playTime);
sendDelta(3, 9, playTime);
}
public int getGcwPoints() {
return gcwPoints;
return play3.getGcwPoints();
}
public void setGcwPoints(int gcwPoints) {
this.gcwPoints = gcwPoints;
play3.setGcwPoints(gcwPoints);
sendDelta(3, 12, gcwPoints);
}
public int getPvpKills() {
return pvpKills;
return play3.getPvpKills();
}
public void setPvpKills(int pvpKills) {
this.pvpKills = pvpKills;
play3.setPvpKills(pvpKills);
sendDelta(3, 13, pvpKills);
}
public long getLifetimeGcwPoints() {
return lifetimeGcwPoints;
return play3.getLifetimeGcwPoints();
}
public void setLifetimeGcwPoints(long lifetimeGcwPoints) {
this.lifetimeGcwPoints = lifetimeGcwPoints;
play3.setLifetimeGcwPoints(lifetimeGcwPoints);
sendDelta(3, 14, lifetimeGcwPoints);
}
public int getLifetimePvpKills() {
return lifetimePvpKills;
return play3.getLifetimePvpKills();
}
public void setLifetimePvpKills(int lifetimePvpKills) {
this.lifetimePvpKills = lifetimePvpKills;
play3.setLifetimePvpKills(lifetimePvpKills);
sendDelta(3, 15, lifetimePvpKills);
}
public byte[] getCollectionBadges() {
return collectionBadges.toByteArray();
return play3.getCollectionBadges();
}
public void setCollectionBadges(byte[] collection) {
this.collectionBadges.clear();
this.collectionBadges.or(BitSet.valueOf(collection));
sendDelta(3, 16, collectionBadges);
}
public SWGList<Integer> getGuildRanks() {
return guildRanks;
}
public void setGuildRanks(SWGList<Integer> guildRanks) {
this.guildRanks = guildRanks;
play3.setCollectionBadges(collection, this);
}
public boolean isShowHelmet() {
return showHelmet;
return play3.isShowHelmet();
}
public void setShowHelmet(boolean showHelmet) {
this.showHelmet = showHelmet;
play3.setShowHelmet(showHelmet);
sendDelta(3, 19, showHelmet);
}
public boolean isShowBackpack() {
return showBackpack;
return play3.isShowBackpack();
}
public void setShowBackpack(boolean showBackpack) {
this.showBackpack = showBackpack;
play3.setShowBackpack(showBackpack);
sendDelta(3, 18, showBackpack);
}
public String getProfession() {
return profession;
return play3.getProfession();
}
public void setProfession(String profession) {
this.profession = profession;
play3.setProfession(profession);
sendDelta(3, 11, profession, StringType.ASCII);
}
@@ -259,175 +183,154 @@ public class PlayerObject extends IntangibleObject {
}
public void setBornDate(int year, int month, int day) {
this.bornDate = MathUtils.numberDaysSince(year, month, day, 2000, 12, 31);
play3.setBornDate(year, month, day);
}
public int getBornDate() {
return bornDate;
return play3.getBornDate();
}
public int getAdminTag() {
return play6.getAdminTag();
}
public void setAdminTag(AccessLevel access) {
switch(access) {
case PLAYER: break;
case CSR: adminTag = 1; break;
case DEV: adminTag = 2; break;
case WARDEN: adminTag = 3; break;
case QA: adminTag = 4; break;
}
sendDelta(6, 2, adminTag);
}
public void setAdminTag(int tag) {
this.adminTag = tag;
sendDelta(6, 2, tag);
play6.setAdminTag(access);
sendDelta(6, 2, play6.getAdminTag());
}
public int getCurrentRank() {
return currentRank;
return play6.getCurrentRank();
}
public void setCurrentRank(int currentRank) {
this.currentRank = currentRank;
play6.setCurrentRank(currentRank);
sendDelta(6, 3, currentRank);
}
public float getRankProgress() {
return rankProgress;
return play6.getRankProgress();
}
public void setRankProgress(float rankProgress) {
this.rankProgress = rankProgress;
play6.setRankProgress(rankProgress);
sendDelta(6, 4, rankProgress);
}
public int getHighestRebelRank() {
return highestRebelRank;
return play6.getHighestRebelRank();
}
public void setHighestRebelRank(int highestRebelRank) {
this.highestRebelRank = highestRebelRank;
play6.setHighestRebelRank(highestRebelRank);
sendDelta(6, 5, highestRebelRank);
}
public int getHighestImperialRank() {
return highestImperialRank;
return play6.getHighestImperialRank();
}
public void setHighestImperialRank(int highestImperialRank) {
this.highestImperialRank = highestImperialRank;
play6.setHighestImperialRank(highestImperialRank);
sendDelta(6, 6, highestImperialRank);
}
public int getGcwNextUpdate() {
return gcwNextUpdate;
return play6.getGcwNextUpdate();
}
public void setGcwNextUpdate(int gcwNextUpdate) {
this.gcwNextUpdate = gcwNextUpdate;
play6.setGcwNextUpdate(gcwNextUpdate);
sendDelta(6, 7, gcwNextUpdate);
}
public String getHome() {
return home;
return play6.getHome();
}
public void setHome(String home) {
this.home = home;
play6.setHome(home);
sendDelta(6, 8, home, StringType.ASCII);
}
public boolean isCitizen() {
return citizen;
return play6.isCitizen();
}
public void setCitizen(boolean citizen) {
this.citizen = citizen;
play6.setCitizen(citizen);
sendDelta(6, 9, citizen);
}
public int getGuildRankTitle() {
return guildRankTitle;
return play8.getGuildRankTitle();
}
public void setGuildRankTitle(int guildRankTitle) {
this.guildRankTitle = guildRankTitle;
play8.setGuildRankTitle(guildRankTitle);
sendDelta(6, 13, guildRankTitle);
}
public int getActiveQuest() {
return activeQuest;
return play8.getActiveQuest();
}
public void setActiveQuest(int activeQuest) {
this.activeQuest = activeQuest;
play8.setActiveQuest(activeQuest);
sendDelta(8, 6, activeQuest);
}
public void removeFriend(String friend) {
synchronized (friendsList) {
friendsList.remove(friend);
}
friendsList.sendDeltaMessage(this);
play9.removeFriend(friend, this);
}
public void addFriend(String friend) {
synchronized (friendsList) {
friendsList.add(friend);
}
friendsList.sendDeltaMessage(this);
play9.addFriend(friend, this);
}
public boolean isFriend(String target) {
return play9.isFriend(target);
}
public List<String> getFriendsList() {
return friendsList;
return play9.getFriendsList();
}
public void addIgnored(String ignored) {
synchronized (ignoreList) {
ignoreList.add(ignored);
}
ignoreList.sendDeltaMessage(this);
play9.addIgnored(ignored, this);
}
public void removeIgnored(String ignored) {
synchronized (ignoreList) {
ignoreList.remove(ignored);
}
ignoreList.sendDeltaMessage(this);
play9.removeIgnored(ignored, this);
}
public boolean isIgnored(String target) {
return ignoreList.contains(target);
return play9.isIgnored(target);
}
public List<String> getIgnoreList() {
return ignoreList;
return play9.getIgnoreList();
}
public String getProfWheelPosition() {
return profWheelPosition;
return play8.getProfWheelPosition();
}
public void setProfWheelPosition(String profWheelPosition) {
this.profWheelPosition = profWheelPosition;
sendDelta(8, 8, profWheelPosition);
play8.setProfWheelPosition(profWheelPosition);
sendDelta(8, 8, profWheelPosition, StringType.ASCII);
}
public void setFlagBitmask(PlayerFlags ... flags) {
for (PlayerFlags flag : flags)
flagsList.set(flag.getFlag());
flagsList.sendDeltaMessage(this);
play3.setFlagBitmask(this, flags);
}
public void clearFlagBitmask(PlayerFlags ... flags) {
for (PlayerFlags flag : flags)
flagsList.clear(flag.getFlag());
flagsList.sendDeltaMessage(this);
play3.clearFlagBitmask(this, flags);
}
public void toggleFlag(PlayerFlags ... flags) {
for (PlayerFlags flag : flags)
flagsList.flip(flag.getFlag());
flagsList.sendDeltaMessage(this);
play3.toggleFlag(this, flags);
}
public List<String> getJoinedChannels() {
@@ -452,41 +355,37 @@ public class PlayerObject extends IntangibleObject {
}
}
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;
}
}
@Override
public boolean equals(Object o) {
return super.equals(o);
public void setProfessionIcon(int professionIcon) {
play3.setProfessionIcon(professionIcon);
sendDelta(3, 10, professionIcon);
}
@Override
public int hashCode() {
return super.hashCode();
public int getProfessionIcon() {
return play3.getProfessionIcon();
}
public void addDraftSchematic(String schematic) {
play9.addDraftSchematic(schematic, this);
}
public int getExperiencePoints(String xpType) {
return play8.getExperiencePoints(xpType);
}
public void setExperiencePoints(String xpType, int experiencePoints) {
play8.setExperiencePoints(xpType, experiencePoints, this);
}
public void addExperiencePoints(String xpType, int experiencePoints) {
play8.addExperiencePoints(xpType, experiencePoints, this);
}
public int getStartPlayTime() {
return startPlayTime;
}
public void setStartPlayTime(int startPlayTime) {
this.startPlayTime = startPlayTime;
}
public void createChildrenObjects(Player target) {
@@ -498,111 +397,45 @@ public class PlayerObject extends IntangibleObject {
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(collectionBadges); // 16
bb.addObject(guildRanks); // 17
bb.addBoolean(showBackpack); // 18
bb.addBoolean(showHelmet); // 19
bb.incrementOperandCount(15);
play3.createBaseline3(target, bb);
}
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.incrementOperandCount(15);
play6.createBaseline6(target, bb);
}
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); // Completed Quests (List) -- 4
bb.addInt(0);
bb.addInt(0); // Active Quests (List) -- 5
bb.addInt(0);
bb.addInt(activeQuest); // Current Quest -- 6
bb.addObject(quests); // 7
bb.addAscii(profWheelPosition); // 8
bb.incrementOperandCount(9);
play8.createBaseline8(target, bb);
}
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); // Group Waypoints -- 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.incrementOperandCount(31);
play9.createBaseline9(target, bb);
}
public int getStartPlayTime() {
return startPlayTime;
@Override
public void save(NetBufferStream stream) {
super.save(stream);
stream.addByte(0);
play3.save(stream);
play6.save(stream);
play8.save(stream);
play9.save(stream);
stream.addInt(startPlayTime);
stream.addUnicode(biography);
}
public void setStartPlayTime(int startPlayTime) {
this.startPlayTime = startPlayTime;
@Override
public void read(NetBufferStream stream) {
super.read(stream);
stream.getByte();
play3.read(stream);
play6.read(stream);
play8.read(stream);
play9.read(stream);
startPlayTime = stream.getInt();
biography = stream.getUnicode();
}
}