Inject ShopFactory
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package client.command;
|
package client.command;
|
||||||
|
|
||||||
import database.drop.DropProvider;
|
import database.drop.DropProvider;
|
||||||
|
import server.ShopFactory;
|
||||||
|
|
||||||
public record CommandContext(DropProvider dropProvider) {
|
public record CommandContext(DropProvider dropProvider, ShopFactory shopFactory) {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,15 +26,16 @@ package client.command.commands.gm2;
|
|||||||
import client.Client;
|
import client.Client;
|
||||||
import client.command.Command;
|
import client.command.Command;
|
||||||
import client.command.CommandContext;
|
import client.command.CommandContext;
|
||||||
import server.ShopFactory;
|
|
||||||
|
|
||||||
public class GmShopCommand extends Command {
|
public class GmShopCommand extends Command {
|
||||||
{
|
{
|
||||||
setDescription("Open the GM shop.");
|
setDescription("Open the GM shop.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final int GM_SHOP_ID = 1337;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Client c, String[] params, CommandContext ctx) {
|
public void execute(Client c, String[] params, CommandContext ctx) {
|
||||||
ShopFactory.getInstance().getShop(1337).sendShop(c);
|
ctx.shopFactory().getShop(GM_SHOP_ID).sendShop(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ package client.command.commands.gm3;
|
|||||||
import client.Client;
|
import client.Client;
|
||||||
import client.command.Command;
|
import client.command.Command;
|
||||||
import client.command.CommandContext;
|
import client.command.CommandContext;
|
||||||
import server.ShopFactory;
|
|
||||||
|
|
||||||
|
|
||||||
public class ReloadShopsCommand extends Command {
|
public class ReloadShopsCommand extends Command {
|
||||||
@@ -36,6 +35,6 @@ public class ReloadShopsCommand extends Command {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(Client c, String[] params, CommandContext ctx) {
|
public void execute(Client c, String[] params, CommandContext ctx) {
|
||||||
ShopFactory.getInstance().reloadShops();
|
ctx.shopFactory().reloadShops();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,14 @@ import client.command.CommandsExecutor;
|
|||||||
import client.processor.action.MakerProcessor;
|
import client.processor.action.MakerProcessor;
|
||||||
import client.processor.npc.FredrickProcessor;
|
import client.processor.npc.FredrickProcessor;
|
||||||
import database.drop.DropProvider;
|
import database.drop.DropProvider;
|
||||||
|
import server.ShopFactory;
|
||||||
import service.NoteService;
|
import service.NoteService;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public record ChannelDependencies(
|
public record ChannelDependencies(
|
||||||
NoteService noteService, FredrickProcessor fredrickProcessor, MakerProcessor makerProcessor,
|
NoteService noteService, FredrickProcessor fredrickProcessor, MakerProcessor makerProcessor,
|
||||||
DropProvider dropProvider, CommandsExecutor commandsExecutor
|
DropProvider dropProvider, CommandsExecutor commandsExecutor, ShopFactory shopFactory
|
||||||
) {
|
) {
|
||||||
|
|
||||||
public ChannelDependencies {
|
public ChannelDependencies {
|
||||||
@@ -19,5 +20,6 @@ public record ChannelDependencies(
|
|||||||
Objects.requireNonNull(makerProcessor);
|
Objects.requireNonNull(makerProcessor);
|
||||||
Objects.requireNonNull(dropProvider);
|
Objects.requireNonNull(dropProvider);
|
||||||
Objects.requireNonNull(commandsExecutor);
|
Objects.requireNonNull(commandsExecutor);
|
||||||
|
Objects.requireNonNull(shopFactory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ public final class PacketProcessor {
|
|||||||
registerHandler(RecvOpcode.STRANGE_DATA, LoginRequiringNoOpHandler.getInstance());
|
registerHandler(RecvOpcode.STRANGE_DATA, LoginRequiringNoOpHandler.getInstance());
|
||||||
registerHandler(RecvOpcode.GENERAL_CHAT, new GeneralChatHandler(channelDeps.commandsExecutor()));
|
registerHandler(RecvOpcode.GENERAL_CHAT, new GeneralChatHandler(channelDeps.commandsExecutor()));
|
||||||
registerHandler(RecvOpcode.WHISPER, new WhisperHandler());
|
registerHandler(RecvOpcode.WHISPER, new WhisperHandler());
|
||||||
registerHandler(RecvOpcode.NPC_TALK, new NPCTalkHandler());
|
registerHandler(RecvOpcode.NPC_TALK, new NPCTalkHandler(channelDeps.shopFactory()));
|
||||||
registerHandler(RecvOpcode.NPC_TALK_MORE, new NPCMoreTalkHandler());
|
registerHandler(RecvOpcode.NPC_TALK_MORE, new NPCMoreTalkHandler());
|
||||||
registerHandler(RecvOpcode.QUEST_ACTION, new QuestActionHandler());
|
registerHandler(RecvOpcode.QUEST_ACTION, new QuestActionHandler());
|
||||||
registerHandler(RecvOpcode.GRENADE_EFFECT, new GrenadeEffectHandler());
|
registerHandler(RecvOpcode.GRENADE_EFFECT, new GrenadeEffectHandler());
|
||||||
@@ -160,7 +160,7 @@ public final class PacketProcessor {
|
|||||||
registerHandler(RecvOpcode.MAGIC_ATTACK, new MagicDamageHandler(channelDeps.dropProvider()));
|
registerHandler(RecvOpcode.MAGIC_ATTACK, new MagicDamageHandler(channelDeps.dropProvider()));
|
||||||
registerHandler(RecvOpcode.TAKE_DAMAGE, new TakeDamageHandler());
|
registerHandler(RecvOpcode.TAKE_DAMAGE, new TakeDamageHandler());
|
||||||
registerHandler(RecvOpcode.MOVE_PLAYER, new MovePlayerHandler());
|
registerHandler(RecvOpcode.MOVE_PLAYER, new MovePlayerHandler());
|
||||||
registerHandler(RecvOpcode.USE_CASH_ITEM, new UseCashItemHandler(channelDeps.noteService()));
|
registerHandler(RecvOpcode.USE_CASH_ITEM, new UseCashItemHandler(channelDeps.noteService(), channelDeps.shopFactory()));
|
||||||
registerHandler(RecvOpcode.USE_ITEM, new UseItemHandler());
|
registerHandler(RecvOpcode.USE_ITEM, new UseItemHandler());
|
||||||
registerHandler(RecvOpcode.USE_RETURN_SCROLL, new UseItemHandler());
|
registerHandler(RecvOpcode.USE_RETURN_SCROLL, new UseItemHandler());
|
||||||
registerHandler(RecvOpcode.USE_UPGRADE_SCROLL, new ScrollHandler());
|
registerHandler(RecvOpcode.USE_UPGRADE_SCROLL, new ScrollHandler());
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ import org.apache.logging.log4j.LogManager;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import server.CashShop.CashItemFactory;
|
import server.CashShop.CashItemFactory;
|
||||||
|
import server.ShopFactory;
|
||||||
import server.SkillbookInformationProvider;
|
import server.SkillbookInformationProvider;
|
||||||
import server.ThreadManager;
|
import server.ThreadManager;
|
||||||
import server.TimerManager;
|
import server.TimerManager;
|
||||||
@@ -977,10 +978,11 @@ public class Server {
|
|||||||
MakerProcessor makerProcessor = new MakerProcessor(new MakerInfoProvider(new MakerDao(connection)));
|
MakerProcessor makerProcessor = new MakerProcessor(new MakerInfoProvider(new MakerDao(connection)));
|
||||||
FredrickProcessor fredrickProcessor = new FredrickProcessor(noteService);
|
FredrickProcessor fredrickProcessor = new FredrickProcessor(noteService);
|
||||||
DropProvider dropProvider = new DropProvider(new DropDao(connection));
|
DropProvider dropProvider = new DropProvider(new DropDao(connection));
|
||||||
CommandContext commandContext = new CommandContext(dropProvider);
|
ShopFactory shopFactory = new ShopFactory();
|
||||||
|
CommandContext commandContext = new CommandContext(dropProvider, shopFactory);
|
||||||
CommandsExecutor commandsExecutor = new CommandsExecutor(commandContext);
|
CommandsExecutor commandsExecutor = new CommandsExecutor(commandContext);
|
||||||
ChannelDependencies channelDependencies = new ChannelDependencies(noteService, fredrickProcessor,
|
ChannelDependencies channelDependencies = new ChannelDependencies(noteService, fredrickProcessor,
|
||||||
makerProcessor, dropProvider, commandsExecutor);
|
makerProcessor, dropProvider, commandsExecutor, shopFactory);
|
||||||
|
|
||||||
PacketProcessor.registerGameHandlerDependencies(channelDependencies);
|
PacketProcessor.registerGameHandlerDependencies(channelDependencies);
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ import net.packet.InPacket;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import scripting.npc.NPCScriptManager;
|
import scripting.npc.NPCScriptManager;
|
||||||
|
import server.Shop;
|
||||||
|
import server.ShopFactory;
|
||||||
import server.life.NPC;
|
import server.life.NPC;
|
||||||
import server.life.PlayerNPC;
|
import server.life.PlayerNPC;
|
||||||
import server.maps.MapObject;
|
import server.maps.MapObject;
|
||||||
@@ -37,6 +39,11 @@ import tools.PacketCreator;
|
|||||||
|
|
||||||
public final class NPCTalkHandler extends AbstractPacketHandler {
|
public final class NPCTalkHandler extends AbstractPacketHandler {
|
||||||
private static final Logger log = LoggerFactory.getLogger(NPCTalkHandler.class);
|
private static final Logger log = LoggerFactory.getLogger(NPCTalkHandler.class);
|
||||||
|
private final ShopFactory shopFactory;
|
||||||
|
|
||||||
|
public NPCTalkHandler(ShopFactory shopFactory) {
|
||||||
|
this.shopFactory = shopFactory;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handlePacket(InPacket p, Client c) {
|
public void handlePacket(InPacket p, Client c) {
|
||||||
@@ -75,7 +82,7 @@ public final class NPCTalkHandler extends AbstractPacketHandler {
|
|||||||
} else {
|
} else {
|
||||||
boolean hasNpcScript = NPCScriptManager.getInstance().start(c, npc.getId(), oid, null);
|
boolean hasNpcScript = NPCScriptManager.getInstance().start(c, npc.getId(), oid, null);
|
||||||
if (!hasNpcScript) {
|
if (!hasNpcScript) {
|
||||||
if (!npc.hasShop()) {
|
if (!hasShop(npc)) {
|
||||||
log.warn("NPC {} ({}) is not coded", npc.getName(), npc.getId());
|
log.warn("NPC {} ({}) is not coded", npc.getName(), npc.getId());
|
||||||
return;
|
return;
|
||||||
} else if (c.getPlayer().getShop() != null) {
|
} else if (c.getPlayer().getShop() != null) {
|
||||||
@@ -83,7 +90,7 @@ public final class NPCTalkHandler extends AbstractPacketHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
npc.sendShop(c);
|
sendShop(npc, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,4 +104,16 @@ public final class NPCTalkHandler extends AbstractPacketHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
private boolean hasShop(NPC npc) {
|
||||||
|
return shopFactory.getShopForNPC(npc.getId()) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendShop(NPC npc, Client c) {
|
||||||
|
Shop shop = shopFactory.getShopForNPC(npc.getId());
|
||||||
|
if (shop == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
shop.sendShop(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -60,11 +60,14 @@ import static java.util.concurrent.TimeUnit.SECONDS;
|
|||||||
|
|
||||||
public final class UseCashItemHandler extends AbstractPacketHandler {
|
public final class UseCashItemHandler extends AbstractPacketHandler {
|
||||||
private static final Logger log = LoggerFactory.getLogger(UseCashItemHandler.class);
|
private static final Logger log = LoggerFactory.getLogger(UseCashItemHandler.class);
|
||||||
|
private static final int MIU_MIU_SHOP_ID = 1338;
|
||||||
|
|
||||||
private final NoteService noteService;
|
private final NoteService noteService;
|
||||||
|
private final ShopFactory shopFactory;
|
||||||
|
|
||||||
public UseCashItemHandler(NoteService noteService) {
|
public UseCashItemHandler(NoteService noteService, ShopFactory shopFactory) {
|
||||||
this.noteService = noteService;
|
this.noteService = noteService;
|
||||||
|
this.shopFactory = shopFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -508,7 +511,7 @@ public final class UseCashItemHandler extends AbstractPacketHandler {
|
|||||||
}
|
}
|
||||||
} else if (itemType == 545) { // MiuMiu's travel store
|
} else if (itemType == 545) { // MiuMiu's travel store
|
||||||
if (player.getShop() == null) {
|
if (player.getShop() == null) {
|
||||||
Shop shop = ShopFactory.getInstance().getShop(1338);
|
Shop shop = shopFactory.getShop(MIU_MIU_SHOP_ID);
|
||||||
if (shop != null) {
|
if (shop != null) {
|
||||||
shop.sendShop(c);
|
shop.sendShop(c);
|
||||||
remove(c, position, itemId);
|
remove(c, position, itemId);
|
||||||
|
|||||||
@@ -28,12 +28,6 @@ import java.util.Map;
|
|||||||
* @author Matze
|
* @author Matze
|
||||||
*/
|
*/
|
||||||
public class ShopFactory {
|
public class ShopFactory {
|
||||||
private static final ShopFactory instance = new ShopFactory();
|
|
||||||
|
|
||||||
public static ShopFactory getInstance() {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Map<Integer, Shop> shops = new HashMap<>();
|
private final Map<Integer, Shop> shops = new HashMap<>();
|
||||||
private final Map<Integer, Shop> npcShops = new HashMap<>();
|
private final Map<Integer, Shop> npcShops = new HashMap<>();
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
package server.life;
|
package server.life;
|
||||||
|
|
||||||
import client.Client;
|
import client.Client;
|
||||||
import server.ShopFactory;
|
|
||||||
import server.maps.MapObjectType;
|
import server.maps.MapObjectType;
|
||||||
import tools.PacketCreator;
|
import tools.PacketCreator;
|
||||||
|
|
||||||
@@ -34,14 +33,6 @@ public class NPC extends AbstractLoadedLife {
|
|||||||
this.stats = stats;
|
this.stats = stats;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasShop() {
|
|
||||||
return ShopFactory.getInstance().getShopForNPC(getId()) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void sendShop(Client c) {
|
|
||||||
ShopFactory.getInstance().getShopForNPC(getId()).sendShop(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendSpawnData(Client client) {
|
public void sendSpawnData(Client client) {
|
||||||
client.sendPacket(PacketCreator.spawnNPC(this));
|
client.sendPacket(PacketCreator.spawnNPC(this));
|
||||||
|
|||||||
Reference in New Issue
Block a user