Handle created chr with spec
This commit is contained in:
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user