Prepare centralized chr creation
This commit is contained in:
44
src/main/java/client/creator/CharacterCreator.java
Normal file
44
src/main/java/client/creator/CharacterCreator.java
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
package client.creator;
|
||||||
|
|
||||||
|
import client.inventory.Item;
|
||||||
|
import constants.id.ItemId;
|
||||||
|
import constants.id.MapId;
|
||||||
|
import database.character.CharacterSaver;
|
||||||
|
|
||||||
|
public class CharacterCreator {
|
||||||
|
private final CharacterSaver chrSaver;
|
||||||
|
|
||||||
|
public CharacterCreator(CharacterSaver chrSaver) {
|
||||||
|
this.chrSaver = chrSaver;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean createBeginner(NewCharacterSpec spec, int accountId, int worldId) {
|
||||||
|
int mapId = getStartingMap(spec.type());
|
||||||
|
Item guide = getStarterGuide(spec.type());
|
||||||
|
// TODO, save:
|
||||||
|
// - character
|
||||||
|
// - skills
|
||||||
|
// - equips
|
||||||
|
// - starter item
|
||||||
|
// - keymap
|
||||||
|
// - quickslots
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getStartingMap(JobType type) {
|
||||||
|
return switch (type) {
|
||||||
|
case ADVENTURER -> MapId.MUSHROOM_TOWN;
|
||||||
|
case KNIGHT_OF_CYGNUS -> MapId.ARAN_TUTORIAL_START;
|
||||||
|
case ARAN -> MapId.STARTING_MAP_NOBLESSE;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private Item getStarterGuide(JobType type) {
|
||||||
|
int itemId = switch (type) {
|
||||||
|
case ADVENTURER -> ItemId.BEGINNERS_GUIDE;
|
||||||
|
case KNIGHT_OF_CYGNUS -> ItemId.NOBLESSE_GUIDE;
|
||||||
|
case ARAN -> ItemId.LEGENDS_GUIDE;
|
||||||
|
};
|
||||||
|
return new Item(itemId, (short) 0, (short) 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
7
src/main/java/client/creator/JobType.java
Normal file
7
src/main/java/client/creator/JobType.java
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
package client.creator;
|
||||||
|
|
||||||
|
public enum JobType {
|
||||||
|
ADVENTURER,
|
||||||
|
KNIGHT_OF_CYGNUS,
|
||||||
|
ARAN
|
||||||
|
}
|
||||||
20
src/main/java/client/creator/NewCharacterSpec.java
Normal file
20
src/main/java/client/creator/NewCharacterSpec.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
package client.creator;
|
||||||
|
|
||||||
|
import client.SkinColor;
|
||||||
|
import lombok.Builder;
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
public record NewCharacterSpec(
|
||||||
|
String name,
|
||||||
|
JobType type,
|
||||||
|
int face,
|
||||||
|
int hair,
|
||||||
|
int hairColor,
|
||||||
|
SkinColor skin,
|
||||||
|
int topItemId,
|
||||||
|
int bottomItemId,
|
||||||
|
int shoesItemId,
|
||||||
|
int weaponItemId,
|
||||||
|
byte gender
|
||||||
|
) {
|
||||||
|
}
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
package net.server.handlers.login;
|
package net.server.handlers.login;
|
||||||
|
|
||||||
import client.Client;
|
import client.Client;
|
||||||
|
import client.creator.JobType;
|
||||||
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;
|
||||||
@@ -47,6 +48,21 @@ public final class CreateCharHandler extends AbstractPacketHandler {
|
|||||||
int weapon = p.readInt();
|
int weapon = p.readInt();
|
||||||
int gender = p.readByte();
|
int gender = p.readByte();
|
||||||
|
|
||||||
|
/*
|
||||||
|
NewCharacterSpec spec = NewCharacterSpec.builder()
|
||||||
|
.type(parseJobType(p.readInt()))
|
||||||
|
.face(p.readInt())
|
||||||
|
.hair(p.readInt())
|
||||||
|
.hairColor(p.readInt())
|
||||||
|
.skin(p.readInt())
|
||||||
|
.topItemId(p.readInt())
|
||||||
|
.bottomItemId(p.readInt())
|
||||||
|
.shoesItemId(p.readInt())
|
||||||
|
.weaponItemId(p.readInt())
|
||||||
|
.gender(p.readByte())
|
||||||
|
.build();
|
||||||
|
*/
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
switch (job) {
|
switch (job) {
|
||||||
case 0: // Knights of Cygnus
|
case 0: // Knights of Cygnus
|
||||||
@@ -67,4 +83,13 @@ public final class CreateCharHandler extends AbstractPacketHandler {
|
|||||||
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
|
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static JobType parseJobType(int value) {
|
||||||
|
return switch (value) {
|
||||||
|
case 0 -> JobType.KNIGHT_OF_CYGNUS;
|
||||||
|
case 1 -> JobType.ADVENTURER;
|
||||||
|
case 2 -> JobType.ARAN;
|
||||||
|
default -> throw new IllegalArgumentException("Invalid job type: " + value);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user