Replace FredrickProcessor dependence on NoteDao

This commit is contained in:
P0nk
2022-12-27 10:52:49 +01:00
parent 389b3ad2a4
commit af14da987e
8 changed files with 47 additions and 58 deletions

View File

@@ -1,12 +1,14 @@
package net;
import client.processor.npc.FredrickProcessor;
import service.NoteService;
import java.util.Objects;
public record ChannelDependencies(NoteService noteService) {
public record ChannelDependencies(NoteService noteService, FredrickProcessor fredrickProcessor) {
public ChannelDependencies {
Objects.requireNonNull(noteService);
Objects.requireNonNull(fredrickProcessor);
}
}

View File

@@ -38,7 +38,7 @@ public final class PacketProcessor {
private static final Logger log = LoggerFactory.getLogger(PacketProcessor.class);
private static final Map<String, PacketProcessor> instances = new LinkedHashMap<>();
private static ChannelDependencies channelDependencies;
private static ChannelDependencies channelDeps;
private PacketHandler[] handlers;
@@ -53,7 +53,7 @@ public final class PacketProcessor {
}
public static void registerGameHandlerDependencies(ChannelDependencies channelDependencies) {
PacketProcessor.channelDependencies = channelDependencies;
PacketProcessor.channelDeps = channelDependencies;
}
public static PacketProcessor getLoginServerProcessor() {
@@ -61,7 +61,7 @@ public final class PacketProcessor {
}
public static PacketProcessor getChannelServerProcessor(int world, int channel) {
if (channelDependencies == null) {
if (channelDeps == null) {
throw new IllegalStateException("Unable to get channel server processor - dependencies are not registered");
}
@@ -152,7 +152,7 @@ public final class PacketProcessor {
registerHandler(RecvOpcode.ITEM_SORT, new InventoryMergeHandler());
registerHandler(RecvOpcode.ITEM_MOVE, new ItemMoveHandler());
registerHandler(RecvOpcode.MESO_DROP, new MesoDropHandler());
registerHandler(RecvOpcode.PLAYER_LOGGEDIN, new PlayerLoggedinHandler(channelDependencies.noteService()));
registerHandler(RecvOpcode.PLAYER_LOGGEDIN, new PlayerLoggedinHandler(channelDeps.noteService()));
registerHandler(RecvOpcode.CHANGE_MAP, new ChangeMapHandler());
registerHandler(RecvOpcode.MOVE_LIFE, new MoveLifeHandler());
registerHandler(RecvOpcode.CLOSE_RANGE_ATTACK, new CloseRangeDamageHandler());
@@ -160,7 +160,7 @@ public final class PacketProcessor {
registerHandler(RecvOpcode.MAGIC_ATTACK, new MagicDamageHandler());
registerHandler(RecvOpcode.TAKE_DAMAGE, new TakeDamageHandler());
registerHandler(RecvOpcode.MOVE_PLAYER, new MovePlayerHandler());
registerHandler(RecvOpcode.USE_CASH_ITEM, new UseCashItemHandler(channelDependencies.noteService()));
registerHandler(RecvOpcode.USE_CASH_ITEM, new UseCashItemHandler(channelDeps.noteService()));
registerHandler(RecvOpcode.USE_ITEM, new UseItemHandler());
registerHandler(RecvOpcode.USE_RETURN_SCROLL, new UseItemHandler());
registerHandler(RecvOpcode.USE_UPGRADE_SCROLL, new ScrollHandler());
@@ -202,7 +202,7 @@ public final class PacketProcessor {
registerHandler(RecvOpcode.MESSENGER, new MessengerHandler());
registerHandler(RecvOpcode.NPC_ACTION, new NPCAnimationHandler());
registerHandler(RecvOpcode.CHECK_CASH, new TouchingCashShopHandler());
registerHandler(RecvOpcode.CASHSHOP_OPERATION, new CashOperationHandler(channelDependencies.noteService()));
registerHandler(RecvOpcode.CASHSHOP_OPERATION, new CashOperationHandler(channelDeps.noteService()));
registerHandler(RecvOpcode.COUPON_CODE, new CouponCodeHandler());
registerHandler(RecvOpcode.SPAWN_PET, new SpawnPetHandler());
registerHandler(RecvOpcode.MOVE_PET, new MovePetHandler());
@@ -215,11 +215,11 @@ public final class PacketProcessor {
registerHandler(RecvOpcode.CANCEL_DEBUFF, new CancelDebuffHandler());
registerHandler(RecvOpcode.USE_SKILL_BOOK, new SkillBookHandler());
registerHandler(RecvOpcode.SKILL_MACRO, new SkillMacroHandler());
registerHandler(RecvOpcode.NOTE_ACTION, new NoteActionHandler(channelDependencies.noteService()));
registerHandler(RecvOpcode.NOTE_ACTION, new NoteActionHandler(channelDeps.noteService()));
registerHandler(RecvOpcode.CLOSE_CHALKBOARD, new CloseChalkboardHandler());
registerHandler(RecvOpcode.USE_MOUNT_FOOD, new UseMountFoodHandler());
registerHandler(RecvOpcode.MTS_OPERATION, new MTSHandler());
registerHandler(RecvOpcode.RING_ACTION, new RingActionHandler(channelDependencies.noteService()));
registerHandler(RecvOpcode.RING_ACTION, new RingActionHandler(channelDeps.noteService()));
registerHandler(RecvOpcode.SPOUSE_CHAT, new SpouseChatHandler());
registerHandler(RecvOpcode.PET_AUTO_POT, new PetAutoPotHandler());
registerHandler(RecvOpcode.PET_EXCLUDE_ITEMS, new PetExcludeItemsHandler());
@@ -273,7 +273,7 @@ public final class PacketProcessor {
registerHandler(RecvOpcode.COCONUT, new CoconutHandler());
registerHandler(RecvOpcode.ARAN_COMBO_COUNTER, new AranComboHandler());
registerHandler(RecvOpcode.CLICK_GUIDE, new ClickGuideHandler());
registerHandler(RecvOpcode.FREDRICK_ACTION, new FredrickHandler());
registerHandler(RecvOpcode.FREDRICK_ACTION, new FredrickHandler(channelDeps.fredrickProcessor()));
registerHandler(RecvOpcode.MONSTER_CARNIVAL, new MonsterCarnivalHandler());
registerHandler(RecvOpcode.REMOTE_STORE, new RemoteStoreHandler());
registerHandler(RecvOpcode.WEDDING_ACTION, new WeddingHandler());

View File

@@ -30,6 +30,7 @@ import client.inventory.Item;
import client.inventory.ItemFactory;
import client.inventory.manipulator.CashIdGenerator;
import client.newyear.NewYearCardRecord;
import client.processor.npc.FredrickProcessor;
import config.YamlConfig;
import constants.game.GameConstants;
import constants.inventory.ItemConstants;
@@ -842,7 +843,7 @@ public class Server {
throw new IllegalStateException("Failed to initiate a connection to the database");
}
registerChannelDependencies();
ChannelDependencies channelDependencies = registerChannelDependencies();
final ExecutorService initExecutor = Executors.newFixedThreadPool(10);
// Run slow operations asynchronously to make startup faster
@@ -872,7 +873,7 @@ public class Server {
}
ThreadManager.getInstance().start();
initializeTimelyTasks(); // aggregated method for timely tasks thanks to lxconan
initializeTimelyTasks(channelDependencies); // aggregated method for timely tasks thanks to lxconan
try {
int worldCount = Math.min(GameConstants.WORLD_NAMES.length, YamlConfig.config.server.WORLDS);
@@ -920,14 +921,14 @@ public class Server {
}
}
private void registerChannelDependencies() {
NoteDao noteDao = new NoteDao();
ChannelDependencies channelDependencies = new ChannelDependencies(
new NoteService(noteDao)
);
private ChannelDependencies registerChannelDependencies() {
NoteService noteService = new NoteService(new NoteDao());
FredrickProcessor fredrickProcessor = new FredrickProcessor(noteService);
ChannelDependencies channelDependencies = new ChannelDependencies(noteService, fredrickProcessor);
PacketProcessor.registerGameHandlerDependencies(channelDependencies);
return channelDependencies;
}
private LoginServer initLoginServer(int port) {
@@ -948,7 +949,7 @@ public class Server {
}
}
private void initializeTimelyTasks() {
private void initializeTimelyTasks(ChannelDependencies channelDependencies) {
TimerManager tMan = TimerManager.getInstance();
tMan.start();
tMan.register(tMan.purge(), YamlConfig.config.server.PURGING_INTERVAL);//Purging ftw...
@@ -962,7 +963,7 @@ public class Server {
tMan.register(new LoginCoordinatorTask(), HOURS.toMillis(1), timeLeft);
tMan.register(new EventRecallCoordinatorTask(), HOURS.toMillis(1), timeLeft);
tMan.register(new LoginStorageTask(), MINUTES.toMillis(2), MINUTES.toMillis(2));
tMan.register(new DueyFredrickTask(), HOURS.toMillis(1), timeLeft);
tMan.register(new DueyFredrickTask(channelDependencies.fredrickProcessor()), HOURS.toMillis(1), timeLeft);
tMan.register(new InvitationTask(), SECONDS.toMillis(30), SECONDS.toMillis(30));
tMan.register(new RespawnTask(), YamlConfig.config.server.RESPAWN_INTERVAL, YamlConfig.config.server.RESPAWN_INTERVAL);

View File

@@ -31,6 +31,11 @@ import net.packet.InPacket;
* @author kevintjuh93
*/
public class FredrickHandler extends AbstractPacketHandler {
private final FredrickProcessor fredrickProcessor;
public FredrickHandler(FredrickProcessor fredrickProcessor) {
this.fredrickProcessor = fredrickProcessor;
}
@Override
public void handlePacket(InPacket p, Client c) {
@@ -42,7 +47,7 @@ public class FredrickHandler extends AbstractPacketHandler {
//c.sendPacket(PacketCreator.getFredrick((byte) 0x24));
break;
case 0x1A:
FredrickProcessor.fredrickRetrieveItems(c);
fredrickProcessor.fredrickRetrieveItems(c);
break;
case 0x1C: //Exit
break;

View File

@@ -26,10 +26,15 @@ import client.processor.npc.FredrickProcessor;
* @author Ronan
*/
public class DueyFredrickTask implements Runnable {
private final FredrickProcessor fredrickProcessor;
public DueyFredrickTask(FredrickProcessor fredrickProcessor) {
this.fredrickProcessor = fredrickProcessor;
}
@Override
public void run() {
FredrickProcessor.runFredrickSchedule();
fredrickProcessor.runFredrickSchedule();
DueyProcessor.runDueyExpireSchedule();
}
}