Save gender to PG

This commit is contained in:
P0nk
2024-09-27 23:08:12 +02:00
parent 5abae50be5
commit 439280947c
6 changed files with 91 additions and 26 deletions

View File

@@ -23,30 +23,57 @@
package net.server.handlers.login;
import client.Client;
import client.Gender;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import net.server.Server;
import net.server.coordinator.session.SessionCoordinator;
import service.AccountService;
import tools.PacketCreator;
/**
* @author kevintjuh93
* @author Ponk
*/
public class SetGenderHandler extends AbstractPacketHandler {
private final AccountService accountService;
public SetGenderHandler(AccountService accountService) {
this.accountService = accountService;
}
@Override
public void handlePacket(InPacket p, Client c) {
if (c.getGender() == Client.NO_GENDER) { //Packet shouldn't come if Gender isn't 10.
byte confirmed = p.readByte();
if (confirmed == 0x01) {
c.setGender(p.readByte());
c.sendPacket(PacketCreator.getAuthSuccess(c));
Server.getInstance().registerLoginState(c);
} else {
SessionCoordinator.getInstance().closeSession(c, false);
c.updateLoginState(Client.LOGIN_NOTLOGGEDIN);
}
if (c.getGender() != Gender.NOT_SET) { // Packet shouldn't come if Gender isn't 10.
close(c);
return;
}
byte confirmed = p.readByte();
if (confirmed != 0x01) {
close(c);
return;
}
byte gender = p.readByte();
if (gender != Gender.MALE && gender != Gender.FEMALE) {
close(c);
return;
}
if (!accountService.setGender(c.getAccID(), gender)) {
close(c);
return;
}
c.setGender(gender);
c.sendPacket(PacketCreator.getAuthSuccess(c));
Server.getInstance().registerLoginState(c);
}
private void close(Client c) {
SessionCoordinator.getInstance().closeSession(c, false);
c.updateLoginState(Client.LOGIN_NOTLOGGEDIN);
}
}