LoginState enum

This commit is contained in:
P0nk
2024-09-29 16:22:32 +02:00
parent 5450c29178
commit b45620154c
8 changed files with 63 additions and 30 deletions

View File

@@ -582,19 +582,20 @@ public class Client extends ChannelInboundHandlerAdapter {
return accId;
}
public void setLoginState(int newState) {
if (newState == LoginState.LOGGED_OUT) {
loggedIn = false;
inServerTransition = false;
setAccID(0);
} else if (newState == LoginState.SERVER_TRANSITION) {
loggedIn = false;
inServerTransition = true;
} else if (newState == LoginState.LOGGED_IN) {
loggedIn = true;
inServerTransition = false;
} else {
throw new IllegalArgumentException("Invalid login state: " + newState);
public void onChangedLoginState(LoginState newState) {
switch (newState) {
case LoginState.LOGGED_OUT -> {
loggedIn = false;
inServerTransition = false;
}
case LoginState.SERVER_TRANSITION -> {
loggedIn = false;
inServerTransition = true;
}
case LoginState.LOGGED_IN -> {
loggedIn = true;
inServerTransition = false;
}
}
}

View File

@@ -1,10 +1,29 @@
package client;
import java.util.Arrays;
import java.util.Optional;
/**
* @author Ponk
*/
public class LoginState {
public static final byte LOGGED_OUT = 0;
public static final byte SERVER_TRANSITION = 1;
public static final byte LOGGED_IN = 2;
public enum LoginState {
LOGGED_OUT(0),
SERVER_TRANSITION(1),
LOGGED_IN(2);
private final byte value;
LoginState(int value) {
this.value = (byte) value;
}
public byte getValue() {
return value;
}
public static Optional<LoginState> fromValue(int value) {
return Arrays.stream(values())
.filter(v -> v.getValue() == value)
.findFirst();
}
}