Cleanup Player code

This commit is contained in:
Major-
2016-02-11 12:57:05 +00:00
parent 7a4392fe74
commit f49bb8c023
@@ -8,6 +8,8 @@ import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import org.apollo.game.message.impl.ConfigMessage;
import org.apollo.game.message.impl.IdAssignmentMessage;
import org.apollo.game.message.impl.IgnoreListMessage;
@@ -49,15 +51,10 @@ import org.apollo.game.model.skill.LevelUpSkillListener;
import org.apollo.game.model.skill.SynchronizationSkillListener;
import org.apollo.game.session.GameSession;
import org.apollo.game.sync.block.SynchronizationBlock;
import org.apollo.game.sync.block.SynchronizationBlockSet;
import org.apollo.net.message.Message;
import org.apollo.util.CollectionUtil;
import org.apollo.util.Point;
import org.apollo.util.security.PlayerCredentials;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
/**
* A {@link Mob} that a user is controlling.
*
@@ -66,6 +63,11 @@ import com.google.common.base.Preconditions;
*/
public final class Player extends Mob {
/**
* The current amount of appearance tickets.
*/
private static final AtomicInteger appearanceTicketCounter = new AtomicInteger(0);
static {
// TODO this should be a time rather than a flag
AttributeMap.define("muted", AttributeDefinition.forBoolean(false, AttributePersistence.PERSISTENT));
@@ -75,9 +77,16 @@ public final class Player extends Mob {
}
/**
* The current amount of appearance tickets.
* Generates the next appearance ticket.
*
* @return The next available appearance ticket.
*/
private static final AtomicInteger appearanceTicketCounter = new AtomicInteger(0);
private static int nextAppearanceTicket() {
if (appearanceTicketCounter.incrementAndGet() == 0) {
appearanceTicketCounter.set(1);
}
return appearanceTicketCounter.get();
}
/**
* This appearance tickets for this Player.
@@ -114,30 +123,30 @@ public final class Player extends Mob {
*/
private Appearance appearance = Appearance.DEFAULT_APPEARANCE;
/**
* This Players appearance ticket.
*/
private int appearanceTicket = nextAppearanceTicket();
/**
* The privacy state of this player's public chat.
*/
private PrivacyState chatPrivacy = PrivacyState.ON;
/**
* A deque of this player's mouse clicks.
*/
private Deque<Point> clicks = new ArrayDeque<>();
/**
* A flag which indicates there are npcs that couldn't be added.
*/
private boolean excessiveNpcs = false;
private boolean excessiveNpcs;
/**
* A flag which indicates there are players that couldn't be added.
*/
private boolean excessivePlayers = false;
private boolean excessivePlayers;
/**
* Indicates whether this player has the message filter enabled.
*/
private boolean filteringMessages = false;
private boolean filteringMessages;
/**
* The privacy state of this player's private chat.
@@ -157,7 +166,7 @@ public final class Player extends Mob {
/**
* Whether or not the player is skulled.
*/
private boolean isSkulled = false;
private boolean isSkulled;
/**
* The centre of the last region the client has loaded.
@@ -182,12 +191,12 @@ public final class Player extends Mob {
/**
* A flag indicating if the region changed in the last cycle.
*/
private boolean regionChanged = false;
private boolean regionChanged;
/**
* A flag indicating if this player is running.
*/
private boolean running = false;
private boolean running;
/**
* The brightness of this player's screen.
@@ -195,7 +204,7 @@ public final class Player extends Mob {
private ScreenBrightness screenBrightness = ScreenBrightness.NORMAL;
/**
* The {@link GameSession} currently attached to this {@link Player}.
* The {@link GameSession} currently attached to this Player.
*/
private GameSession session;
@@ -205,25 +214,20 @@ public final class Player extends Mob {
private PrivacyState tradePrivacy = PrivacyState.ON;
/**
* The current maximum viewing distance of this player.
* The current maximum viewing distance of this Player.
*/
private int viewingDistance = 1;
/**
* A flag indicating if the player is withdrawing items as notes.
*/
private boolean withdrawingNotes = false;
private boolean withdrawingNotes;
/**
* The id of the world this player is in.
* The world id of this Player.
*/
private int worldId = 1;
/**
* This Players appearance ticket.
*/
private int appearanceTicket = nextAppearanceTicket();
/**
* Creates the Player.
*
@@ -238,17 +242,6 @@ public final class Player extends Mob {
init();
}
/**
* Adds a click, represented by a {@link Point}, to the {@link List} of
* clicks.
*
* @param point The point.
* @return {@code true} if the point was added successfully.
*/
public boolean addClick(Point point) {
return clicks.add(point);
}
/**
* Adds the specified username to this player's friend list.
*
@@ -332,6 +325,24 @@ public final class Player extends Mob {
return appearance;
}
/**
* Gets this Players appearance ticket.
*
* @return This Players appearance ticket.
*/
public int getAppearanceTicket() {
return appearanceTicket;
}
/**
* Gets all of this Players appearance tickets.
*
* @return All of this Players appearance tickets.
*/
public int[] getAppearanceTickets() {
return appearanceTickets;
}
/**
* Gets the mob's bank.
*
@@ -350,15 +361,6 @@ public final class Player extends Mob {
return chatPrivacy;
}
/**
* Gets the {@link Deque} of clicks.
*
* @return The deque.
*/
public Deque<Point> getClicks() {
return clicks;
}
/**
* Gets the player's credentials.
*
@@ -411,7 +413,7 @@ public final class Player extends Mob {
@Override
public int getInteractionIndex() {
return getIndex() | 0x8000;
return getIndex() | 0x8000; // TODO magic constant
}
/**
@@ -423,15 +425,6 @@ public final class Player extends Mob {
return interfaceSet;
}
/**
* Gets this player's last click, represented by a {@link Point}.
*
* @return The click.
*/
public Point getLastClick() {
return clicks.pollLast();
}
/**
* Gets the last known region.
*
@@ -468,6 +461,7 @@ public final class Player extends Mob {
public PrivilegeLevel getPrivilegeLevel() {
return privilegeLevel;
}
/**
* Gets the player's run energy.
*
@@ -478,22 +472,6 @@ public final class Player extends Mob {
return energy.getValue();
}
/**
* Returns if this player is banned or not.
*/
public boolean isBanned() {
Attribute<Boolean> banned = attributes.get("banned");
return banned.getValue();
}
/**
* Returns if this player is muted or not.
*/
public boolean isMuted() {
Attribute<Boolean> muted = attributes.get("muted");
return muted.getValue();
}
/**
* Gets this player's {@link ScreenBrightness}.
*
@@ -592,6 +570,14 @@ public final class Player extends Mob {
}
}
/**
* Returns if this player is banned or not.
*/
public boolean isBanned() {
Attribute<Boolean> banned = attributes.get("banned");
return banned.getValue();
}
/**
* Checks if there are excessive npcs.
*
@@ -619,6 +605,14 @@ public final class Player extends Mob {
return members == MembershipStatus.PAID;
}
/**
* Returns if this player is muted or not.
*/
public boolean isMuted() {
Attribute<Boolean> muted = attributes.get("muted");
return muted.getValue();
}
/**
* Checks if this player is running.
*
@@ -658,36 +652,6 @@ public final class Player extends Mob {
localObjects.forEach(object -> object.removeFrom(this));
}
/**
* Generates the next appearance ticket.
*
* @return The next available appearance ticket.
*/
private static int nextAppearanceTicket() {
if (appearanceTicketCounter.incrementAndGet() == 0) {
appearanceTicketCounter.set(1);
}
return appearanceTicketCounter.get();
}
/**
* Gets all of this Players appearance tickets.
*
* @return All of this Players appearance tickets.
*/
public int[] getAppearanceTickets() {
return appearanceTickets;
}
/**
* Gets this Players appearance ticket.
*
* @return This Players appearance ticket.
*/
public int getAppearanceTicket() {
return appearanceTicket;
}
/**
* Indicates whether the message filter is enabled.
*
@@ -843,7 +807,7 @@ public final class Player extends Mob {
* Sends the friend and ignore user lists.
*/
public void sendUserLists() {
if (ignores.size() > 0) {
if (!ignores.isEmpty()) {
send(new IgnoreListMessage(ignores));
}
@@ -938,7 +902,7 @@ public final class Player extends Mob {
/**
* Sets the region changed flag.
*
* @param regionChanged A flag indicating if the region has changed.
* @param regionChanged Whether or not the region has changed.
*/
public void setRegionChanged(boolean regionChanged) {
this.regionChanged = regionChanged;
@@ -1008,6 +972,7 @@ public final class Player extends Mob {
@Override
public void teleport(Position position) {
super.teleport(position);
if (interfaceSet.size() > 0) {
interfaceSet.close();
}
@@ -1015,7 +980,8 @@ public final class Player extends Mob {
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("username", getUsername()).add("privilege", privilegeLevel).toString();
return MoreObjects.toStringHelper(this).add("username", getUsername()).add("privilege", privilegeLevel)
.toString();
}
/**
@@ -1036,6 +1002,14 @@ public final class Player extends Mob {
send(new ConfigMessage(173, running ? 1 : 0));
}
/**
* Updates the appearance for this Player.
*/
public void updateAppearance() {
appearanceTicket = nextAppearanceTicket();
blockSet.add(SynchronizationBlock.createAppearanceBlock(this));
}
/**
* Initialises this player.
*/
@@ -1048,20 +1022,22 @@ public final class Player extends Mob {
* Initialises the player's inventories.
*/
private void initInventories() {
InventoryListener fullInventoryListener = new FullInventoryListener(this, FullInventoryListener.FULL_INVENTORY_MESSAGE);
InventoryListener fullBankListener = new FullInventoryListener(this, FullInventoryListener.FULL_BANK_MESSAGE);
InventoryListener appearanceListener = new AppearanceInventoryListener(this);
InventoryListener fullInventory = new FullInventoryListener(this, FullInventoryListener.FULL_INVENTORY_MESSAGE);
InventoryListener fullBank = new FullInventoryListener(this, FullInventoryListener.FULL_BANK_MESSAGE);
InventoryListener appearance = new AppearanceInventoryListener(this);
InventoryListener syncInventoryListener = new SynchronizationInventoryListener(this, SynchronizationInventoryListener.INVENTORY_ID);
InventoryListener syncBankListener = new SynchronizationInventoryListener(this, BankConstants.BANK_INVENTORY_ID);
InventoryListener syncEquipmentListener = new SynchronizationInventoryListener(this, SynchronizationInventoryListener.EQUIPMENT_ID);
InventoryListener syncInventory = new SynchronizationInventoryListener(this,
SynchronizationInventoryListener.INVENTORY_ID);
InventoryListener syncBank = new SynchronizationInventoryListener(this, BankConstants.BANK_INVENTORY_ID);
InventoryListener syncEquipment = new SynchronizationInventoryListener(this,
SynchronizationInventoryListener.EQUIPMENT_ID);
inventory.addListener(syncInventoryListener);
inventory.addListener(fullInventoryListener);
bank.addListener(syncBankListener);
bank.addListener(fullBankListener);
equipment.addListener(syncEquipmentListener);
equipment.addListener(appearanceListener);
inventory.addListener(syncInventory);
inventory.addListener(fullInventory);
bank.addListener(syncBank);
bank.addListener(fullBank);
equipment.addListener(syncEquipment);
equipment.addListener(appearance);
}
/**
@@ -1072,12 +1048,4 @@ public final class Player extends Mob {
skillSet.addListener(new LevelUpSkillListener(this));
}
/**
* Updates the appearance for this Player.
*/
public void updateAppearance() {
appearanceTicket = nextAppearanceTicket();
blockSet.add(SynchronizationBlock.createAppearanceBlock(this));
}
}