Route chr creation to dummy CharacterCreator
This commit is contained in:
@@ -3,16 +3,16 @@ package client.creator;
|
||||
import client.inventory.Item;
|
||||
import constants.id.ItemId;
|
||||
import constants.id.MapId;
|
||||
import database.character.CharacterSaver;
|
||||
import database.character.CharacterRepository;
|
||||
|
||||
public class CharacterCreator {
|
||||
private final CharacterSaver chrSaver;
|
||||
private final CharacterRepository chrRepository;
|
||||
|
||||
public CharacterCreator(CharacterSaver chrSaver) {
|
||||
this.chrSaver = chrSaver;
|
||||
public CharacterCreator(CharacterRepository chrRepository) {
|
||||
this.chrRepository = chrRepository;
|
||||
}
|
||||
|
||||
public boolean createBeginner(NewCharacterSpec spec, int accountId, int worldId) {
|
||||
public boolean createNew(NewCharacterSpec spec, int accountId, int worldId) {
|
||||
int mapId = getStartingMap(spec.type());
|
||||
Item guide = getStarterGuide(spec.type());
|
||||
// TODO, save:
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package net;
|
||||
|
||||
import client.command.CommandsExecutor;
|
||||
import client.creator.CharacterCreator;
|
||||
import client.processor.action.MakerProcessor;
|
||||
import client.processor.npc.FredrickProcessor;
|
||||
import database.character.CharacterLoader;
|
||||
import database.character.CharacterSaver;
|
||||
import database.drop.DropProvider;
|
||||
import lombok.Builder;
|
||||
import server.shop.ShopFactory;
|
||||
import service.BanService;
|
||||
import service.NoteService;
|
||||
@@ -16,14 +18,16 @@ import java.util.Objects;
|
||||
/**
|
||||
* @author Ponk
|
||||
*/
|
||||
@Builder
|
||||
public record ChannelDependencies(
|
||||
CharacterLoader characterLoader, CharacterSaver characterSaver, NoteService noteService,
|
||||
FredrickProcessor fredrickProcessor, MakerProcessor makerProcessor, DropProvider dropProvider,
|
||||
CommandsExecutor commandsExecutor, ShopFactory shopFactory, TransitionService transitionService,
|
||||
BanService banService
|
||||
CharacterCreator characterCreator, CharacterLoader characterLoader, CharacterSaver characterSaver,
|
||||
NoteService noteService, FredrickProcessor fredrickProcessor, MakerProcessor makerProcessor,
|
||||
DropProvider dropProvider, CommandsExecutor commandsExecutor, ShopFactory shopFactory,
|
||||
TransitionService transitionService, BanService banService
|
||||
) {
|
||||
|
||||
public ChannelDependencies {
|
||||
Objects.requireNonNull(characterCreator);
|
||||
Objects.requireNonNull(characterLoader);
|
||||
Objects.requireNonNull(characterSaver);
|
||||
Objects.requireNonNull(noteService);
|
||||
|
||||
@@ -286,7 +286,7 @@ public final class PacketProcessor {
|
||||
registerHandler(RecvOpcode.SERVERLIST_REQUEST, new ServerlistRequestHandler());
|
||||
registerHandler(RecvOpcode.SERVERSTATUS_REQUEST, new ServerStatusRequestHandler());
|
||||
registerHandler(RecvOpcode.CHECK_CHAR_NAME, new CheckCharNameHandler());
|
||||
registerHandler(RecvOpcode.CREATE_CHAR, new CreateCharHandler());
|
||||
registerHandler(RecvOpcode.CREATE_CHAR, new CreateCharHandler(channelDeps.characterCreator()));
|
||||
registerHandler(RecvOpcode.DELETE_CHAR, new DeleteCharHandler());
|
||||
registerHandler(RecvOpcode.VIEW_ALL_CHAR, new ViewAllCharHandler());
|
||||
registerHandler(RecvOpcode.PICK_ALL_CHAR, new ViewAllCharSelectedHandler());
|
||||
|
||||
@@ -27,6 +27,7 @@ import client.Family;
|
||||
import client.SkillFactory;
|
||||
import client.command.CommandContext;
|
||||
import client.command.CommandsExecutor;
|
||||
import client.creator.CharacterCreator;
|
||||
import client.inventory.Item;
|
||||
import client.inventory.ItemFactory;
|
||||
import client.inventory.manipulator.CashIdGenerator;
|
||||
@@ -1004,24 +1005,29 @@ public class Server {
|
||||
return hikariConfig;
|
||||
}
|
||||
|
||||
// TODO: set up proper dependency injection with a framework such as Dagger or Guice.
|
||||
private ChannelDependencies registerChannelDependencies(PgDatabaseConnection connection) {
|
||||
CharacterRepository characterRepository = new CharacterRepository();
|
||||
MonsterCardRepository monsterCardRepository = new MonsterCardRepository(connection);
|
||||
CharacterLoader characterLoader = new CharacterLoader(monsterCardRepository);
|
||||
CharacterSaver characterSaver = new CharacterSaver(connection, characterRepository, monsterCardRepository);
|
||||
TransitionService transitionService = new TransitionService(characterSaver);
|
||||
BanService banService = new BanService(transitionService);
|
||||
NoteService noteService = new NoteService(new NoteDao(connection));
|
||||
MakerProcessor makerProcessor = new MakerProcessor(new MakerInfoProvider(new MakerRepository(connection)));
|
||||
FredrickProcessor fredrickProcessor = new FredrickProcessor(noteService);
|
||||
DropProvider dropProvider = new DropProvider(new DropRepository(connection));
|
||||
ShopFactory shopFactory = new ShopFactory(new ShopDao(connection));
|
||||
CommandContext commandContext = new CommandContext(null, dropProvider, shopFactory,
|
||||
characterSaver, transitionService);
|
||||
CommandsExecutor commandsExecutor = new CommandsExecutor(commandContext);
|
||||
ChannelDependencies channelDependencies = new ChannelDependencies(characterLoader, characterSaver, noteService,
|
||||
fredrickProcessor, makerProcessor, dropProvider, commandsExecutor, shopFactory, transitionService,
|
||||
banService);
|
||||
ChannelDependencies channelDependencies = ChannelDependencies.builder()
|
||||
.characterCreator(new CharacterCreator(characterRepository))
|
||||
.characterLoader(new CharacterLoader(monsterCardRepository))
|
||||
.characterSaver(characterSaver)
|
||||
.noteService(noteService)
|
||||
.fredrickProcessor(new FredrickProcessor(noteService))
|
||||
.makerProcessor(new MakerProcessor(new MakerInfoProvider(new MakerRepository(connection))))
|
||||
.dropProvider(dropProvider)
|
||||
.commandsExecutor(new CommandsExecutor(new CommandContext(null, dropProvider, shopFactory,
|
||||
characterSaver, transitionService)))
|
||||
.shopFactory(shopFactory)
|
||||
.transitionService(transitionService)
|
||||
.banService(new BanService(transitionService))
|
||||
.build();
|
||||
|
||||
PacketProcessor.registerGameHandlerDependencies(channelDependencies);
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ package net.server.handlers.login;
|
||||
|
||||
import client.Client;
|
||||
import client.SkinColor;
|
||||
import client.creator.CharacterCreator;
|
||||
import client.creator.JobType;
|
||||
import client.creator.NewCharacterSpec;
|
||||
import client.creator.novice.BeginnerCreator;
|
||||
@@ -35,6 +36,11 @@ import tools.PacketCreator;
|
||||
import java.util.Optional;
|
||||
|
||||
public final class CreateCharHandler extends AbstractPacketHandler {
|
||||
private final CharacterCreator characterCreator;
|
||||
|
||||
public CreateCharHandler(CharacterCreator characterCreator) {
|
||||
this.characterCreator = characterCreator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
@@ -52,6 +58,8 @@ public final class CreateCharHandler extends AbstractPacketHandler {
|
||||
.gender(p.readByte())
|
||||
.build();
|
||||
|
||||
characterCreator.createNew(spec, c.getAccID(), c.getWorld());
|
||||
|
||||
int status = switch (spec.type()) {
|
||||
case KNIGHT_OF_CYGNUS -> NoblesseCreator.createCharacter(c, spec.name(), spec.face(), spec.hair() + spec.hairColor(),
|
||||
spec.skin().getId(), spec.topItemId(), spec.bottomItemId(), spec.shoesItemId(), spec.weaponItemId(),
|
||||
|
||||
Reference in New Issue
Block a user