Merge branch 'master' of git@bitbucket.org:Major-/apollo.git.

This commit is contained in:
Ryley Kimmel
2015-03-01 15:09:27 -05:00
7 changed files with 125 additions and 53 deletions
+11 -10
View File
@@ -107,18 +107,19 @@ public final class Server {
* @param jagGrabAddress The JAGGRAB address to bind to. * @param jagGrabAddress The JAGGRAB address to bind to.
*/ */
public void bind(SocketAddress serviceAddress, SocketAddress httpAddress, SocketAddress jagGrabAddress) { public void bind(SocketAddress serviceAddress, SocketAddress httpAddress, SocketAddress jagGrabAddress) {
logger.fine("Binding service listener to address: " + serviceAddress + "...");
serviceBootstrap.bind(serviceAddress);
logger.fine("Binding HTTP listener to address: " + httpAddress + "...");
try { try {
httpBootstrap.bind(httpAddress); logger.fine("Binding service listener to address: " + serviceAddress + "...");
} catch (Throwable t) { serviceBootstrap.bind(serviceAddress).sync();
logger.log(Level.WARNING, "Binding to HTTP failed: client will use JAGGRAB as a fallback (not recommended)!", t);
}
logger.fine("Binding JAGGRAB listener to address: " + jagGrabAddress + "..."); logger.fine("Binding HTTP listener to address: " + httpAddress + "...");
jagGrabBootstrap.bind(jagGrabAddress); httpBootstrap.bind(httpAddress).sync();
logger.fine("Binding JAGGRAB listener to address: " + jagGrabAddress + "...");
jagGrabBootstrap.bind(jagGrabAddress).sync();
} catch (Exception e) {
logger.log(Level.SEVERE, "Binding to a port failed: ensure apollo isn't already running.", e);
System.exit(1);
}
logger.info("Ready for connections."); logger.info("Ready for connections.");
} }
@@ -1,6 +1,7 @@
package org.apollo.game.message.impl; package org.apollo.game.message.impl;
import org.apollo.game.message.Message; 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. * 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; private final int id;
/** /**
* The membership flag. * The MembershipStatus.
*/ */
private final boolean members; private final MembershipStatus members;
/** /**
* Creates the local id message. * Creates the local id message.
* *
* @param id The id. * @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.id = id;
this.members = members; 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() { 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.Position;
import org.apollo.game.model.World; import org.apollo.game.model.World;
import org.apollo.game.model.area.Sector; 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.PrivacyState;
import org.apollo.game.model.entity.setting.PrivilegeLevel; import org.apollo.game.model.entity.setting.PrivilegeLevel;
import org.apollo.game.model.entity.setting.ScreenBrightness; import org.apollo.game.model.entity.setting.ScreenBrightness;
@@ -131,9 +132,9 @@ public final class Player extends Mob {
private transient Position lastKnownSector; 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. * 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. * @return {@code true} if so, {@code false} if not.
*/ */
public boolean isMembers() { public boolean isMembers() {
return members == MembershipStatus.PAID;
}
/**
* Gets the {@link MembershipStatus} of this Player.
*
* @return The MembershipStatus.
*/
public MembershipStatus getMembershipStatus() {
return members; return members;
} }
@@ -830,7 +840,7 @@ public final class Player extends Mob {
* *
* @param members The new membership flag. * @param members The new membership flag.
*/ */
public void setMembers(boolean members) { public void setMembers(MembershipStatus members) {
this.members = 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.NumericalAttribute;
import org.apollo.game.model.entity.attr.StringAttribute; import org.apollo.game.model.entity.attr.StringAttribute;
import org.apollo.game.model.entity.setting.Gender; 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.PrivacyState;
import org.apollo.game.model.entity.setting.PrivilegeLevel; import org.apollo.game.model.entity.setting.PrivilegeLevel;
import org.apollo.game.model.entity.setting.ScreenBrightness; import org.apollo.game.model.entity.setting.ScreenBrightness;
@@ -69,7 +70,7 @@ public final class BinaryPlayerLoader implements PlayerLoader {
credentials.setPassword(pass); credentials.setPassword(pass);
PrivilegeLevel privilegeLevel = PrivilegeLevel.valueOf(in.readByte()); PrivilegeLevel privilegeLevel = PrivilegeLevel.valueOf(in.readByte());
boolean members = in.readBoolean(); MembershipStatus members = MembershipStatus.valueOf(in.readByte());
// read settings // read settings
PrivacyState chatPrivacy = PrivacyState.valueOf(in.readByte(), true); PrivacyState chatPrivacy = PrivacyState.valueOf(in.readByte(), true);
@@ -166,21 +167,21 @@ public final class BinaryPlayerLoader implements PlayerLoader {
String name = StreamUtil.readString(in); String name = StreamUtil.readString(in);
AttributeType type = AttributeType.valueOf(in.read()); AttributeType type = AttributeType.valueOf(in.read());
switch (type) { switch (type) {
case BOOLEAN: case BOOLEAN:
attribute = new BooleanAttribute(in.read() == 1); attribute = new BooleanAttribute(in.read() == 1);
break; break;
case DOUBLE: case DOUBLE:
attribute = new NumericalAttribute(in.readDouble()); attribute = new NumericalAttribute(in.readDouble());
break; break;
case LONG: case LONG:
attribute = new NumericalAttribute(in.readLong()); attribute = new NumericalAttribute(in.readLong());
break; break;
case STRING: case STRING:
case SYMBOL: case SYMBOL:
attribute = new StringAttribute(StreamUtil.readString(in), type == AttributeType.SYMBOL); attribute = new StringAttribute(StreamUtil.readString(in), type == AttributeType.SYMBOL);
break; break;
default: default:
throw new IllegalArgumentException("Undefined attribute type: " + type + "."); throw new IllegalArgumentException("Undefined attribute type: " + type + ".");
} }
attributes.put(name, attribute); attributes.put(name, attribute);
} }
@@ -39,7 +39,7 @@ public final class BinaryPlayerSaver implements PlayerSaver {
StreamUtil.writeString(out, player.getUsername()); StreamUtil.writeString(out, player.getUsername());
StreamUtil.writeString(out, player.getCredentials().getPassword()); StreamUtil.writeString(out, player.getCredentials().getPassword());
out.writeByte(player.getPrivilegeLevel().toInteger()); out.writeByte(player.getPrivilegeLevel().toInteger());
out.writeBoolean(player.isMembers()); out.writeByte(player.getMembershipStatus().getValue());
// write settings // write settings
out.writeByte(player.getChatPrivacy().toInteger(true)); out.writeByte(player.getChatPrivacy().toInteger(true));
@@ -118,21 +118,21 @@ public final class BinaryPlayerSaver implements PlayerSaver {
out.writeByte(type.getValue()); out.writeByte(type.getValue());
switch (type) { switch (type) {
case BOOLEAN: case BOOLEAN:
out.writeByte((Boolean) attribute.getValue() ? 1 : 0); out.writeByte((Boolean) attribute.getValue() ? 1 : 0);
break; break;
case DOUBLE: case DOUBLE:
out.writeDouble((Double) attribute.getValue()); out.writeDouble((Double) attribute.getValue());
break; break;
case LONG: case LONG:
out.writeLong((Long) attribute.getValue()); out.writeLong((Long) attribute.getValue());
break; break;
case STRING: case STRING:
case SYMBOL: case SYMBOL:
StreamUtil.writeString(out, (String) attribute.getValue()); StreamUtil.writeString(out, (String) attribute.getValue());
break; break;
default: default:
throw new IllegalArgumentException("Undefined attribute type " + type + "."); 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.Position;
import org.apollo.game.model.entity.Player; 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.game.model.entity.setting.PrivilegeLevel;
import org.apollo.io.player.PlayerLoader; import org.apollo.io.player.PlayerLoader;
import org.apollo.io.player.PlayerLoaderResponse; import org.apollo.io.player.PlayerLoaderResponse;
@@ -26,7 +27,7 @@ public final class DummyPlayerLoader implements PlayerLoader {
Player player = new Player(credentials, DEFAULT_POSITION); Player player = new Player(credentials, DEFAULT_POSITION);
player.setPrivilegeLevel(PrivilegeLevel.ADMINISTRATOR); player.setPrivilegeLevel(PrivilegeLevel.ADMINISTRATOR);
player.setMembers(true); player.setMembers(MembershipStatus.PAID);
return new PlayerLoaderResponse(status, player); return new PlayerLoaderResponse(status, player);
} }