Handle created chr with spec

This commit is contained in:
P0nk
2024-09-25 06:33:03 +02:00
parent 98d76ad45e
commit 00fc3ed1a1

View File

@@ -22,7 +22,9 @@
package net.server.handlers.login; package net.server.handlers.login;
import client.Client; import client.Client;
import client.SkinColor;
import client.creator.JobType; import client.creator.JobType;
import client.creator.NewCharacterSpec;
import client.creator.novice.BeginnerCreator; import client.creator.novice.BeginnerCreator;
import client.creator.novice.LegendCreator; import client.creator.novice.LegendCreator;
import client.creator.novice.NoblesseCreator; import client.creator.novice.NoblesseCreator;
@@ -30,54 +32,37 @@ import net.AbstractPacketHandler;
import net.packet.InPacket; import net.packet.InPacket;
import tools.PacketCreator; import tools.PacketCreator;
import java.util.Optional;
public final class CreateCharHandler extends AbstractPacketHandler { public final class CreateCharHandler extends AbstractPacketHandler {
@Override @Override
public void handlePacket(InPacket p, Client c) { public void handlePacket(InPacket p, Client c) {
String name = p.readString();
int job = p.readInt();
int face = p.readInt();
int hair = p.readInt();
int haircolor = p.readInt();
int skincolor = p.readInt();
int top = p.readInt();
int bottom = p.readInt();
int shoes = p.readInt();
int weapon = p.readInt();
int gender = p.readByte();
/*
NewCharacterSpec spec = NewCharacterSpec.builder() NewCharacterSpec spec = NewCharacterSpec.builder()
.name(p.readString())
.type(parseJobType(p.readInt())) .type(parseJobType(p.readInt()))
.face(p.readInt()) .face(p.readInt())
.hair(p.readInt()) .hair(p.readInt())
.hairColor(p.readInt()) .hairColor(p.readInt())
.skin(p.readInt()) .skin(parseSkinColor(p.readInt()))
.topItemId(p.readInt()) .topItemId(p.readInt())
.bottomItemId(p.readInt()) .bottomItemId(p.readInt())
.shoesItemId(p.readInt()) .shoesItemId(p.readInt())
.weaponItemId(p.readInt()) .weaponItemId(p.readInt())
.gender(p.readByte()) .gender(p.readByte())
.build(); .build();
*/
int status; int status = switch (spec.type()) {
switch (job) { case KNIGHT_OF_CYGNUS -> NoblesseCreator.createCharacter(c, spec.name(), spec.face(), spec.hair() + spec.hairColor(),
case 0: // Knights of Cygnus spec.skin().getId(), spec.topItemId(), spec.bottomItemId(), spec.shoesItemId(), spec.weaponItemId(),
status = NoblesseCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender); spec.gender());
break; case ADVENTURER -> BeginnerCreator.createCharacter(c, spec.name(), spec.face(), spec.hair() + spec.hairColor(),
case 1: // Adventurer spec.skin().getId(), spec.topItemId(), spec.bottomItemId(), spec.shoesItemId(), spec.weaponItemId(),
status = BeginnerCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender); spec.gender());
break; case ARAN -> LegendCreator.createCharacter(c, spec.name(), spec.face(), spec.hair() + spec.hairColor(),
case 2: // Aran spec.skin().getId(), spec.topItemId(), spec.bottomItemId(), spec.shoesItemId(), spec.weaponItemId(),
status = LegendCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender); spec.gender());
break; };
default:
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
return;
}
if (status == -2) { if (status == -2) {
c.sendPacket(PacketCreator.deleteCharResponse(0, 9)); c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
@@ -92,4 +77,9 @@ public final class CreateCharHandler extends AbstractPacketHandler {
default -> throw new IllegalArgumentException("Invalid job type: " + value); default -> throw new IllegalArgumentException("Invalid job type: " + value);
}; };
} }
private static SkinColor parseSkinColor(int value) {
return Optional.ofNullable(SkinColor.getById(value))
.orElseThrow(() -> new IllegalArgumentException("Invalid skin color: " + value));
}
} }