Make MembershipStatus an enumeration.

This commit is contained in:
Major-
2015-03-01 18:42:31 +00:00
parent 8968786c01
commit 25a41d392a
6 changed files with 114 additions and 43 deletions
@@ -1,6 +1,7 @@
package org.apollo.game.message.impl;
import org.apollo.game.message.Message;
import org.apollo.game.model.entity.setting.MembershipStatus;
/**
* A {@link Message} sent to the client that specifies the local id and membership status of the current player.
@@ -15,17 +16,17 @@ public final class IdAssignmentMessage extends Message {
private final int id;
/**
* The membership flag.
* The MembershipStatus.
*/
private final boolean members;
private final MembershipStatus members;
/**
* Creates the local id message.
*
* @param id The id.
* @param members The membership flag.
* @param members The MembershipStatus.
*/
public IdAssignmentMessage(int id, boolean members) {
public IdAssignmentMessage(int id, MembershipStatus members) {
this.id = id;
this.members = members;
}
@@ -40,12 +41,12 @@ public final class IdAssignmentMessage extends Message {
}
/**
* Gets the membership flag.
* Gets whether or not the Player is a {@link MembershipStatus#PAID paying member}.
*
* @return The membership flag.
* @return {@code true} if the Player is a paying member, {@code false} if not.
*/
public boolean isMembers() {
return members;
return members == MembershipStatus.PAID;
}
}
+13 -3
View File
@@ -19,6 +19,7 @@ import org.apollo.game.model.Appearance;
import org.apollo.game.model.Position;
import org.apollo.game.model.World;
import org.apollo.game.model.area.Sector;
import org.apollo.game.model.entity.setting.MembershipStatus;
import org.apollo.game.model.entity.setting.PrivacyState;
import org.apollo.game.model.entity.setting.PrivilegeLevel;
import org.apollo.game.model.entity.setting.ScreenBrightness;
@@ -131,9 +132,9 @@ public final class Player extends Mob {
private transient Position lastKnownSector;
/**
* The membership flag.
* The MembershipStatus of this Player.
*/
private transient boolean members = false;
private transient MembershipStatus members = MembershipStatus.FREE;
/**
* A flag indicating if the player is new.
@@ -558,6 +559,15 @@ public final class Player extends Mob {
* @return {@code true} if so, {@code false} if not.
*/
public boolean isMembers() {
return members == MembershipStatus.PAID;
}
/**
* Gets the {@link MembershipStatus} of this Player.
*
* @return The MembershipStatus.
*/
public MembershipStatus getMembershipStatus() {
return members;
}
@@ -830,7 +840,7 @@ public final class Player extends Mob {
*
* @param members The new membership flag.
*/
public void setMembers(boolean members) {
public void setMembers(MembershipStatus members) {
this.members = members;
}
@@ -0,0 +1,58 @@
package org.apollo.game.model.entity.setting;
import java.util.Arrays;
import java.util.Optional;
/**
* The membership status of a Player.
*
* @author Major
*/
public enum MembershipStatus {
/**
* The free membership status.
*/
FREE(0),
/**
* The paid membership status.
*/
PAID(1);
/**
* Gets the MembershipStatus with the specified value.
*
* @param value The integer value of the MembershipStatus.
* @return The MembershipStatus.
* @throws IllegalArgumentException If no MembershipStatus with the specified the value exists.
*/
public static MembershipStatus valueOf(int value) {
Optional<MembershipStatus> optional = Arrays.stream(values()).filter(status -> status.value == value).findAny();
return optional.orElseThrow(() -> new IllegalArgumentException("Illegal membership status value."));
}
/**
* The integer value of this MembershipStatus.
*/
private final int value;
/**
* Creates the MembershipStatus.
*
* @param value The integer value.
*/
private MembershipStatus(int value) {
this.value = value;
}
/**
* Gets the value of this MembershipStatus.
*
* @return The value.
*/
public int getValue() {
return value;
}
}
@@ -21,6 +21,7 @@ import org.apollo.game.model.entity.attr.BooleanAttribute;
import org.apollo.game.model.entity.attr.NumericalAttribute;
import org.apollo.game.model.entity.attr.StringAttribute;
import org.apollo.game.model.entity.setting.Gender;
import org.apollo.game.model.entity.setting.MembershipStatus;
import org.apollo.game.model.entity.setting.PrivacyState;
import org.apollo.game.model.entity.setting.PrivilegeLevel;
import org.apollo.game.model.entity.setting.ScreenBrightness;
@@ -69,7 +70,7 @@ public final class BinaryPlayerLoader implements PlayerLoader {
credentials.setPassword(pass);
PrivilegeLevel privilegeLevel = PrivilegeLevel.valueOf(in.readByte());
boolean members = in.readBoolean();
MembershipStatus members = MembershipStatus.valueOf(in.readByte());
// read settings
PrivacyState chatPrivacy = PrivacyState.valueOf(in.readByte(), true);
@@ -166,21 +167,21 @@ public final class BinaryPlayerLoader implements PlayerLoader {
String name = StreamUtil.readString(in);
AttributeType type = AttributeType.valueOf(in.read());
switch (type) {
case BOOLEAN:
attribute = new BooleanAttribute(in.read() == 1);
break;
case DOUBLE:
attribute = new NumericalAttribute(in.readDouble());
break;
case LONG:
attribute = new NumericalAttribute(in.readLong());
break;
case STRING:
case SYMBOL:
attribute = new StringAttribute(StreamUtil.readString(in), type == AttributeType.SYMBOL);
break;
default:
throw new IllegalArgumentException("Undefined attribute type: " + type + ".");
case BOOLEAN:
attribute = new BooleanAttribute(in.read() == 1);
break;
case DOUBLE:
attribute = new NumericalAttribute(in.readDouble());
break;
case LONG:
attribute = new NumericalAttribute(in.readLong());
break;
case STRING:
case SYMBOL:
attribute = new StringAttribute(StreamUtil.readString(in), type == AttributeType.SYMBOL);
break;
default:
throw new IllegalArgumentException("Undefined attribute type: " + type + ".");
}
attributes.put(name, attribute);
}
@@ -39,7 +39,7 @@ public final class BinaryPlayerSaver implements PlayerSaver {
StreamUtil.writeString(out, player.getUsername());
StreamUtil.writeString(out, player.getCredentials().getPassword());
out.writeByte(player.getPrivilegeLevel().toInteger());
out.writeBoolean(player.isMembers());
out.writeByte(player.getMembershipStatus().getValue());
// write settings
out.writeByte(player.getChatPrivacy().toInteger(true));
@@ -118,21 +118,21 @@ public final class BinaryPlayerSaver implements PlayerSaver {
out.writeByte(type.getValue());
switch (type) {
case BOOLEAN:
out.writeByte((Boolean) attribute.getValue() ? 1 : 0);
break;
case DOUBLE:
out.writeDouble((Double) attribute.getValue());
break;
case LONG:
out.writeLong((Long) attribute.getValue());
break;
case STRING:
case SYMBOL:
StreamUtil.writeString(out, (String) attribute.getValue());
break;
default:
throw new IllegalArgumentException("Undefined attribute type " + type + ".");
case BOOLEAN:
out.writeByte((Boolean) attribute.getValue() ? 1 : 0);
break;
case DOUBLE:
out.writeDouble((Double) attribute.getValue());
break;
case LONG:
out.writeLong((Long) attribute.getValue());
break;
case STRING:
case SYMBOL:
StreamUtil.writeString(out, (String) attribute.getValue());
break;
default:
throw new IllegalArgumentException("Undefined attribute type " + type + ".");
}
}
@@ -2,6 +2,7 @@ package org.apollo.io.player.impl;
import org.apollo.game.model.Position;
import org.apollo.game.model.entity.Player;
import org.apollo.game.model.entity.setting.MembershipStatus;
import org.apollo.game.model.entity.setting.PrivilegeLevel;
import org.apollo.io.player.PlayerLoader;
import org.apollo.io.player.PlayerLoaderResponse;
@@ -26,7 +27,7 @@ public final class DummyPlayerLoader implements PlayerLoader {
Player player = new Player(credentials, DEFAULT_POSITION);
player.setPrivilegeLevel(PrivilegeLevel.ADMINISTRATOR);
player.setMembers(true);
player.setMembers(MembershipStatus.PAID);
return new PlayerLoaderResponse(status, player);
}