Commit 2e19e70f authored by Melledy's avatar Melledy
Browse files

Refactor game server managers to systems

parent d20e9d1f
...@@ -22,7 +22,7 @@ public final class AnnounceCommand implements CommandHandler { ...@@ -22,7 +22,7 @@ public final class AnnounceCommand implements CommandHandler {
@Override @Override
public void execute(Player sender, Player targetPlayer, List<String> args) { public void execute(Player sender, Player targetPlayer, List<String> args) {
var manager = Grasscutter.getGameServer().getAnnouncementManager(); var manager = Grasscutter.getGameServer().getAnnouncementSystem();
if (args.size() < 1) { if (args.size() < 1) {
CommandHandler.sendTranslatedMessage(sender, "commands.announce.command_usage"); CommandHandler.sendTranslatedMessage(sender, "commands.announce.command_usage");
return; return;
......
...@@ -41,10 +41,10 @@ public final class CoopCommand implements CommandHandler { ...@@ -41,10 +41,10 @@ public final class CoopCommand implements CommandHandler {
// There's no target==host check but this just places them in multiplayer in their own world which seems fine. // There's no target==host check but this just places them in multiplayer in their own world which seems fine.
if (targetPlayer.isInMultiplayer()) { if (targetPlayer.isInMultiplayer()) {
targetPlayer.getServer().getMultiplayerManager().leaveCoop(targetPlayer); targetPlayer.getServer().getMultiplayerSystem().leaveCoop(targetPlayer);
} }
host.getServer().getMultiplayerManager().applyEnterMp(targetPlayer, host.getUid()); host.getServer().getMultiplayerSystem().applyEnterMp(targetPlayer, host.getUid());
targetPlayer.getServer().getMultiplayerManager().applyEnterMpReply(host, targetPlayer.getUid(), true); targetPlayer.getServer().getMultiplayerSystem().applyEnterMpReply(host, targetPlayer.getUid(), true);
CommandHandler.sendMessage(sender, translate(sender, "commands.coop.success", targetPlayer.getNickname(), host.getNickname())); CommandHandler.sendMessage(sender, translate(sender, "commands.coop.success", targetPlayer.getNickname(), host.getNickname()));
} }
} }
...@@ -25,7 +25,7 @@ public final class EnterDungeonCommand implements CommandHandler { ...@@ -25,7 +25,7 @@ public final class EnterDungeonCommand implements CommandHandler {
return; return;
} }
boolean result = targetPlayer.getServer().getDungeonManager().enterDungeon(targetPlayer.getSession().getPlayer(), 0, dungeonId); boolean result = targetPlayer.getServer().getDungeonSystem().enterDungeon(targetPlayer.getSession().getPlayer(), 0, dungeonId);
if (!result) { if (!result) {
CommandHandler.sendMessage(sender, translate(sender, "commands.enter_dungeon.not_found_error")); CommandHandler.sendMessage(sender, translate(sender, "commands.enter_dungeon.not_found_error"));
......
...@@ -18,9 +18,9 @@ public final class ReloadCommand implements CommandHandler { ...@@ -18,9 +18,9 @@ public final class ReloadCommand implements CommandHandler {
Grasscutter.loadConfig(); Grasscutter.loadConfig();
Grasscutter.loadLanguage(); Grasscutter.loadLanguage();
Grasscutter.getGameServer().getGachaManager().load(); Grasscutter.getGameServer().getGachaSystem().load();
Grasscutter.getGameServer().getDropManager().load(); Grasscutter.getGameServer().getDropSystem().load();
Grasscutter.getGameServer().getShopManager().load(); Grasscutter.getGameServer().getShopSystem().load();
CommandHandler.sendMessage(sender, translate(sender, "commands.reload.reload_done")); CommandHandler.sendMessage(sender, translate(sender, "commands.reload.reload_done"));
} }
......
...@@ -146,7 +146,7 @@ public final class SetPropCommand implements CommandHandler { ...@@ -146,7 +146,7 @@ public final class SetPropCommand implements CommandHandler {
} }
private boolean setTowerLevel(Player sender, Player targetPlayer, int topFloor) { private boolean setTowerLevel(Player sender, Player targetPlayer, int topFloor) {
List<Integer> floorIds = targetPlayer.getServer().getTowerScheduleManager().getAllFloors(); List<Integer> floorIds = targetPlayer.getServer().getTowerSystem().getAllFloors();
if (topFloor < 0 || topFloor > floorIds.size()) { if (topFloor < 0 || topFloor > floorIds.size()) {
String min = Integer.toString(0); String min = Integer.toString(0);
String max = Integer.toString(floorIds.size()); String max = Integer.toString(floorIds.size());
......
...@@ -140,11 +140,11 @@ public class BattlePassManager extends BasePlayerDataManager { ...@@ -140,11 +140,11 @@ public class BattlePassManager extends BasePlayerDataManager {
// Mission triggers // Mission triggers
public void triggerMission(WatcherTriggerType triggerType) { public void triggerMission(WatcherTriggerType triggerType) {
getPlayer().getServer().getBattlePassMissionManager().triggerMission(getPlayer(), triggerType); getPlayer().getServer().getBattlePassSystem().triggerMission(getPlayer(), triggerType);
} }
public void triggerMission(WatcherTriggerType triggerType, int param, int progress) { public void triggerMission(WatcherTriggerType triggerType, int param, int progress) {
getPlayer().getServer().getBattlePassMissionManager().triggerMission(getPlayer(), triggerType, param, progress); getPlayer().getServer().getBattlePassSystem().triggerMission(getPlayer(), triggerType, param, progress);
} }
// Handlers // Handlers
......
...@@ -11,16 +11,17 @@ import emu.grasscutter.game.player.Player; ...@@ -11,16 +11,17 @@ import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.BattlePassMissionRefreshType; import emu.grasscutter.game.props.BattlePassMissionRefreshType;
import emu.grasscutter.game.props.BattlePassMissionStatus; import emu.grasscutter.game.props.BattlePassMissionStatus;
import emu.grasscutter.game.props.WatcherTriggerType; import emu.grasscutter.game.props.WatcherTriggerType;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.PacketBattlePassMissionUpdateNotify; import emu.grasscutter.server.packet.send.PacketBattlePassMissionUpdateNotify;
public class BattlePassMissionManager { public class BattlePassSystem extends BaseGameSystem {
private final GameServer server;
private final Map<WatcherTriggerType, List<BattlePassMissionData>> cachedTriggers; private final Map<WatcherTriggerType, List<BattlePassMissionData>> cachedTriggers;
// BP Mission manager for the server, contains cached triggers so we dont have to load it for each player // BP Mission manager for the server, contains cached triggers so we dont have to load it for each player
public BattlePassMissionManager(GameServer server) { public BattlePassSystem(GameServer server) {
this.server = server; super(server);
this.cachedTriggers = new HashMap<>(); this.cachedTriggers = new HashMap<>();
for (BattlePassMissionData missionData : GameData.getBattlePassMissionDataMap().values()) { for (BattlePassMissionData missionData : GameData.getBattlePassMissionDataMap().values()) {
......
...@@ -12,6 +12,7 @@ import emu.grasscutter.game.player.Player; ...@@ -12,6 +12,7 @@ import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.ActionReason;
import emu.grasscutter.net.proto.RetcodeOuterClass; import emu.grasscutter.net.proto.RetcodeOuterClass;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.PacketCombineFormulaDataNotify; import emu.grasscutter.server.packet.send.PacketCombineFormulaDataNotify;
import emu.grasscutter.server.packet.send.PacketCombineRsp; import emu.grasscutter.server.packet.send.PacketCombineRsp;
...@@ -29,16 +30,11 @@ import java.util.List; ...@@ -29,16 +30,11 @@ import java.util.List;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
public class CombineManger { public class CombineManger extends BaseGameSystem {
private final GameServer gameServer;
private final static Int2ObjectMap<List<Integer>> reliquaryDecomposeData = new Int2ObjectOpenHashMap<>(); private final static Int2ObjectMap<List<Integer>> reliquaryDecomposeData = new Int2ObjectOpenHashMap<>();
public GameServer getGameServer() { public CombineManger(GameServer server) {
return gameServer; super(server);
}
public CombineManger(GameServer gameServer) {
this.gameServer = gameServer;
} }
public static void initialize() { public static void initialize() {
......
...@@ -12,6 +12,7 @@ import emu.grasscutter.game.inventory.ItemType; ...@@ -12,6 +12,7 @@ import emu.grasscutter.game.inventory.ItemType;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.props.ActionReason; import emu.grasscutter.game.props.ActionReason;
import emu.grasscutter.game.world.Scene; import emu.grasscutter.game.world.Scene;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.utils.Position; import emu.grasscutter.utils.Position;
import emu.grasscutter.utils.Utils; import emu.grasscutter.utils.Utils;
...@@ -23,24 +24,18 @@ import java.io.Reader; ...@@ -23,24 +24,18 @@ import java.io.Reader;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
public class DropManager { public class DropSystem extends BaseGameSystem {
public GameServer getGameServer() {
return gameServer;
}
private final GameServer gameServer;
public Int2ObjectMap<List<DropData>> getDropData() {
return dropData;
}
private final Int2ObjectMap<List<DropData>> dropData; private final Int2ObjectMap<List<DropData>> dropData;
public DropManager(GameServer gameServer) { public DropSystem(GameServer server) {
this.gameServer = gameServer; super(server);
this.dropData = new Int2ObjectOpenHashMap<>(); this.dropData = new Int2ObjectOpenHashMap<>();
this.load(); this.load();
} }
public Int2ObjectMap<List<DropData>> getDropData() {
return dropData;
}
public synchronized void load() { public synchronized void load() {
try (Reader fileReader = new InputStreamReader(DataLoader.load("Drop.json"))) { try (Reader fileReader = new InputStreamReader(DataLoader.load("Drop.json"))) {
......
...@@ -11,6 +11,7 @@ import emu.grasscutter.game.quest.enums.QuestTrigger; ...@@ -11,6 +11,7 @@ import emu.grasscutter.game.quest.enums.QuestTrigger;
import emu.grasscutter.game.world.Scene; import emu.grasscutter.game.world.Scene;
import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.PacketDungeonEntryInfoRsp; import emu.grasscutter.server.packet.send.PacketDungeonEntryInfoRsp;
import emu.grasscutter.server.packet.send.PacketPlayerEnterDungeonRsp; import emu.grasscutter.server.packet.send.PacketPlayerEnterDungeonRsp;
...@@ -18,15 +19,11 @@ import emu.grasscutter.utils.Position; ...@@ -18,15 +19,11 @@ import emu.grasscutter.utils.Position;
import java.util.List; import java.util.List;
public class DungeonManager { public class DungeonSystem extends BaseGameSystem {
private final GameServer server;
private static final BasicDungeonSettleListener basicDungeonSettleObserver = new BasicDungeonSettleListener(); private static final BasicDungeonSettleListener basicDungeonSettleObserver = new BasicDungeonSettleListener();
public DungeonManager(GameServer server) {
this.server = server; public DungeonSystem(GameServer server) {
} super(server);
public GameServer getServer() {
return server;
} }
public void getEntryInfo(Player player, int pointId) { public void getEntryInfo(Player player, int pointId) {
......
...@@ -19,7 +19,7 @@ public class GadgetChest extends GadgetContent { ...@@ -19,7 +19,7 @@ public class GadgetChest extends GadgetContent {
} }
public boolean onInteract(Player player, GadgetInteractReq req) { public boolean onInteract(Player player, GadgetInteractReq req) {
var chestInteractHandlerMap = getGadget().getScene().getWorld().getServer().getWorldDataManager().getChestInteractHandlerMap(); var chestInteractHandlerMap = getGadget().getScene().getWorld().getServer().getWorldDataSystem().getChestInteractHandlerMap();
var handler = chestInteractHandlerMap.get(getGadget().getGadgetData().getJsonName()); var handler = chestInteractHandlerMap.get(getGadget().getGadgetData().getJsonName());
if(handler == null){ if(handler == null){
Grasscutter.getLogger().warn("Could not found the handler of this type of Chests {}", getGadget().getGadgetData().getJsonName()); Grasscutter.getLogger().warn("Could not found the handler of this type of Chests {}", getGadget().getGadgetData().getJsonName());
......
...@@ -19,7 +19,7 @@ public class BossChestInteractHandler implements ChestInteractHandler{ ...@@ -19,7 +19,7 @@ public class BossChestInteractHandler implements ChestInteractHandler{
@Override @Override
public boolean onInteract(GadgetChest chest, Player player) { public boolean onInteract(GadgetChest chest, Player player) {
var worldDataManager = chest.getGadget().getScene().getWorld().getServer().getWorldDataManager(); var worldDataManager = chest.getGadget().getScene().getWorld().getServer().getWorldDataSystem();
var monster = chest.getGadget().getMetaGadget().group.monsters.get(chest.getGadget().getMetaGadget().boss_chest.monster_config_id); var monster = chest.getGadget().getMetaGadget().group.monsters.get(chest.getGadget().getMetaGadget().boss_chest.monster_config_id);
var reward = worldDataManager.getRewardByBossId(monster.monster_id); var reward = worldDataManager.getRewardByBossId(monster.monster_id);
......
...@@ -3,6 +3,7 @@ package emu.grasscutter.game.expedition; ...@@ -3,6 +3,7 @@ package emu.grasscutter.game.expedition;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.DataLoader; import emu.grasscutter.data.DataLoader;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
...@@ -15,22 +16,18 @@ import java.util.List; ...@@ -15,22 +16,18 @@ import java.util.List;
import static emu.grasscutter.Configuration.*; import static emu.grasscutter.Configuration.*;
public class ExpeditionManager { public class ExpeditionSystem extends BaseGameSystem {
public GameServer getGameServer() {
return gameServer;
}
private final GameServer gameServer;
public Int2ObjectMap<List<ExpeditionRewardDataList>> getExpeditionRewardDataList() { return expeditionRewardData; }
private final Int2ObjectMap<List<ExpeditionRewardDataList>> expeditionRewardData; private final Int2ObjectMap<List<ExpeditionRewardDataList>> expeditionRewardData;
public ExpeditionManager(GameServer gameServer) { public ExpeditionSystem(GameServer server) {
this.gameServer = gameServer; super(server);
this.expeditionRewardData = new Int2ObjectOpenHashMap<>(); this.expeditionRewardData = new Int2ObjectOpenHashMap<>();
this.load(); this.load();
} }
public Int2ObjectMap<List<ExpeditionRewardDataList>> getExpeditionRewardDataList() {
return expeditionRewardData;
}
public synchronized void load() { public synchronized void load() {
try (Reader fileReader = new InputStreamReader(DataLoader.load("ExpeditionReward.json"))) { try (Reader fileReader = new InputStreamReader(DataLoader.load("ExpeditionReward.json"))) {
......
...@@ -33,6 +33,7 @@ import emu.grasscutter.net.proto.GachaTransferItemOuterClass.GachaTransferItem; ...@@ -33,6 +33,7 @@ import emu.grasscutter.net.proto.GachaTransferItemOuterClass.GachaTransferItem;
import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp; import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp;
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode; import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.game.GameServerTickEvent; import emu.grasscutter.server.game.GameServerTickEvent;
import emu.grasscutter.server.packet.send.PacketDoGachaRsp; import emu.grasscutter.server.packet.send.PacketDoGachaRsp;
...@@ -46,8 +47,7 @@ import org.greenrobot.eventbus.Subscribe; ...@@ -46,8 +47,7 @@ import org.greenrobot.eventbus.Subscribe;
import static emu.grasscutter.Configuration.*; import static emu.grasscutter.Configuration.*;
public class GachaManager { public class GachaSystem extends BaseGameSystem {
private final GameServer server;
private final Int2ObjectMap<GachaBanner> gachaBanners; private final Int2ObjectMap<GachaBanner> gachaBanners;
private WatchService watchService; private WatchService watchService;
...@@ -56,17 +56,13 @@ public class GachaManager { ...@@ -56,17 +56,13 @@ public class GachaManager {
private int[] fallbackItems4Pool2Default = {11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405}; private int[] fallbackItems4Pool2Default = {11401, 11402, 11403, 11405, 12401, 12402, 12403, 12405, 13401, 13407, 14401, 14402, 14403, 14409, 15401, 15402, 15403, 15405};
private int[] fallbackItems5Pool2Default = {11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502}; private int[] fallbackItems5Pool2Default = {11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502};
public GachaManager(GameServer server) { public GachaSystem(GameServer server) {
this.server = server; super(server);
this.gachaBanners = new Int2ObjectOpenHashMap<>(); this.gachaBanners = new Int2ObjectOpenHashMap<>();
this.load(); this.load();
this.startWatcher(server); this.startWatcher(server);
} }
public GameServer getServer() {
return server;
}
public Int2ObjectMap<GachaBanner> getGachaBanners() { public Int2ObjectMap<GachaBanner> getGachaBanners() {
return gachaBanners; return gachaBanners;
} }
......
...@@ -260,11 +260,11 @@ public class Inventory extends BasePlayerManager implements Iterable<GameItem> { ...@@ -260,11 +260,11 @@ public class Inventory extends BasePlayerManager implements Iterable<GameItem> {
private void addVirtualItem(int itemId, int count) { private void addVirtualItem(int itemId, int count) {
switch (itemId) { switch (itemId) {
case 101 -> // Character exp case 101 -> // Character exp
this.player.getServer().getInventoryManager().upgradeAvatar(this.player, this.player.getTeamManager().getCurrentAvatarEntity().getAvatar(), count); this.player.getServer().getInventorySystem().upgradeAvatar(this.player, this.player.getTeamManager().getCurrentAvatarEntity().getAvatar(), count);
case 102 -> // Adventure exp case 102 -> // Adventure exp
this.player.addExpDirectly(count); this.player.addExpDirectly(count);
case 105 -> // Companionship exp case 105 -> // Companionship exp
this.player.getServer().getInventoryManager().upgradeAvatarFetterLevel(this.player, this.player.getTeamManager().getCurrentAvatarEntity().getAvatar(), count); this.player.getServer().getInventorySystem().upgradeAvatarFetterLevel(this.player, this.player.getTeamManager().getCurrentAvatarEntity().getAvatar(), count);
case 106 -> // Resin case 106 -> // Resin
this.player.getResinManager().addResin(count); this.player.getResinManager().addResin(count);
case 107 -> // Legendary Key case 107 -> // Legendary Key
......
...@@ -6,6 +6,7 @@ import emu.grasscutter.data.DataLoader; ...@@ -6,6 +6,7 @@ import emu.grasscutter.data.DataLoader;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.world.World; import emu.grasscutter.game.world.World;
import emu.grasscutter.net.proto.AnnounceDataOuterClass; import emu.grasscutter.net.proto.AnnounceDataOuterClass;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.PacketServerAnnounceNotify; import emu.grasscutter.server.packet.send.PacketServerAnnounceNotify;
import emu.grasscutter.server.packet.send.PacketServerAnnounceRevokeNotify; import emu.grasscutter.server.packet.send.PacketServerAnnounceRevokeNotify;
...@@ -19,24 +20,22 @@ import java.io.InputStreamReader; ...@@ -19,24 +20,22 @@ import java.io.InputStreamReader;
import java.util.*; import java.util.*;
@Getter @Getter
public class AnnouncementManager { public class AnnouncementSystem extends BaseGameSystem {
private final Map<Integer, AnnounceConfigItem> announceConfigItemMap;
public final GameServer server;
public AnnouncementManager(GameServer server){ public AnnouncementSystem(GameServer server){
this.server = server; super(server);
this.announceConfigItemMap = new HashMap<>();
loadConfig(); loadConfig();
} }
Map<Integer, AnnounceConfigItem> announceConfigItemMap = new HashMap<>();
private int loadConfig() { private int loadConfig() {
try (var fileReader = new InputStreamReader(DataLoader.load("Announcement.json"))) { try (var fileReader = new InputStreamReader(DataLoader.load("Announcement.json"))) {
List<AnnounceConfigItem> announceConfigItems = Grasscutter.getGsonFactory().fromJson(fileReader, List<AnnounceConfigItem> announceConfigItems = Grasscutter.getGsonFactory().fromJson(fileReader,
TypeToken.getParameterized(List.class, AnnounceConfigItem.class).getType()); TypeToken.getParameterized(List.class, AnnounceConfigItem.class).getType());
announceConfigItemMap = new HashMap<>(); announceConfigItemMap.clear();
announceConfigItems.forEach(i -> announceConfigItemMap.put(i.getTemplateId(), i)); announceConfigItems.forEach(i -> announceConfigItemMap.put(i.getTemplateId(), i));
} catch (Exception e) { } catch (Exception e) {
Grasscutter.getLogger().error("Unable to load server announce config.", e); Grasscutter.getLogger().error("Unable to load server announce config.", e);
} }
......
...@@ -27,15 +27,14 @@ import emu.grasscutter.game.shop.ShopChestBatchUseTable; ...@@ -27,15 +27,14 @@ import emu.grasscutter.game.shop.ShopChestBatchUseTable;
import emu.grasscutter.game.shop.ShopChestTable; import emu.grasscutter.game.shop.ShopChestTable;
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
import emu.grasscutter.net.proto.MaterialInfoOuterClass.MaterialInfo; import emu.grasscutter.net.proto.MaterialInfoOuterClass.MaterialInfo;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.*; import emu.grasscutter.server.packet.send.*;
import emu.grasscutter.utils.Utils; import emu.grasscutter.utils.Utils;
import it.unimi.dsi.fastutil.ints.Int2IntMap; import it.unimi.dsi.fastutil.ints.Int2IntMap;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
public class InventoryManager { public class InventorySystem extends BaseGameSystem {
private final GameServer server;
private final static int RELIC_MATERIAL_1 = 105002; // Sanctifying Unction private final static int RELIC_MATERIAL_1 = 105002; // Sanctifying Unction
private final static int RELIC_MATERIAL_2 = 105003; // Sanctifying Essence private final static int RELIC_MATERIAL_2 = 105003; // Sanctifying Essence
private final static int RELIC_MATERIAL_EXP_1 = 2500; // Sanctifying Unction private final static int RELIC_MATERIAL_EXP_1 = 2500; // Sanctifying Unction
...@@ -55,12 +54,8 @@ public class InventoryManager { ...@@ -55,12 +54,8 @@ public class InventoryManager {
private final static int AVATAR_BOOK_EXP_2 = 5000; // Adventurer's Experience private final static int AVATAR_BOOK_EXP_2 = 5000; // Adventurer's Experience
private final static int AVATAR_BOOK_EXP_3 = 20000; // Hero's Wit private final static int AVATAR_BOOK_EXP_3 = 20000; // Hero's Wit
public InventoryManager(GameServer server) { public InventorySystem(GameServer server) {
this.server = server; super(server);
}
public GameServer getServer() {
return server;
} }
public void lockEquip(Player player, long targetEquipGuid, boolean isLocked) { public void lockEquip(Player player, long targetEquipGuid, boolean isLocked) {
...@@ -850,7 +845,7 @@ public class InventoryManager { ...@@ -850,7 +845,7 @@ public class InventoryManager {
// Handle combine diagrams. // Handle combine diagrams.
if (useItem.getItemData().getItemUse().get(0).getUseOp().equals("ITEM_USE_UNLOCK_COMBINE")) { if (useItem.getItemData().getItemUse().get(0).getUseOp().equals("ITEM_USE_UNLOCK_COMBINE")) {
// Unlock. // Unlock.
useSuccess = player.getServer().getCombineManger().unlockCombineDiagram(player, useItem); useSuccess = player.getServer().getCombineSystem().unlockCombineDiagram(player, useItem);
} }
// Handle cooking recipies. // Handle cooking recipies.
if (useItem.getItemData().getItemUse().get(0).getUseOp().equals("ITEM_USE_UNLOCK_COOK_RECIPE")) { if (useItem.getItemData().getItemUse().get(0).getUseOp().equals("ITEM_USE_UNLOCK_COOK_RECIPE")) {
...@@ -883,7 +878,7 @@ public class InventoryManager { ...@@ -883,7 +878,7 @@ public class InventoryManager {
} }
break; break;
case MATERIAL_CHEST: case MATERIAL_CHEST:
List<ShopChestTable> shopChestTableList = player.getServer().getShopManager().getShopChestData(); List<ShopChestTable> shopChestTableList = player.getServer().getShopSystem().getShopChestData();
List<GameItem> rewardItemList = new ArrayList<>(); List<GameItem> rewardItemList = new ArrayList<>();
for (ShopChestTable shopChestTable : shopChestTableList) { for (ShopChestTable shopChestTable : shopChestTableList) {
if (shopChestTable.getItemId() != useItem.getItemId()) { if (shopChestTable.getItemId() != useItem.getItemId()) {
...@@ -914,7 +909,7 @@ public class InventoryManager { ...@@ -914,7 +909,7 @@ public class InventoryManager {
if (optionId < 1) { if (optionId < 1) {
break; break;
} }
List<ShopChestBatchUseTable> shopChestBatchUseTableList = player.getServer().getShopManager().getShopChestBatchUseData(); List<ShopChestBatchUseTable> shopChestBatchUseTableList = player.getServer().getShopSystem().getShopChestBatchUseData();
for (ShopChestBatchUseTable shopChestBatchUseTable : shopChestBatchUseTableList) { for (ShopChestBatchUseTable shopChestBatchUseTable : shopChestBatchUseTableList) {
if (shopChestBatchUseTable.getItemId() != useItem.getItemId()) { if (shopChestBatchUseTable.getItemId() != useItem.getItemId()) {
continue; continue;
......
...@@ -8,20 +8,16 @@ import emu.grasscutter.net.proto.PlayerApplyEnterMpReasonOuterClass.PlayerApplyE ...@@ -8,20 +8,16 @@ import emu.grasscutter.net.proto.PlayerApplyEnterMpReasonOuterClass.PlayerApplyE
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.player.Player.SceneLoadState; import emu.grasscutter.game.player.Player.SceneLoadState;
import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass; import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass;
import emu.grasscutter.server.game.BaseGameSystem;
import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameServer;
import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpNotify; import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpNotify;
import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpResultNotify; import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpResultNotify;
import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify; import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify;
public class MultiplayerManager { public class MultiplayerSystem extends BaseGameSystem {
private final GameServer server;
public MultiplayerManager(GameServer server) {
this.server = server;
}
public GameServer getServer() { public MultiplayerSystem(GameServer server) {
return server; super(server);
} }
public void applyEnterMp(Player player, int targetUid) { public void applyEnterMp(Player player, int targetUid) {
......
...@@ -1436,7 +1436,7 @@ public class Player { ...@@ -1436,7 +1436,7 @@ public class Player {
getStaminaManager().stopSustainedStaminaHandler(); getStaminaManager().stopSustainedStaminaHandler();
// force to leave the dungeon (inside has a "if") // force to leave the dungeon (inside has a "if")
this.getServer().getDungeonManager().exitDungeon(this); this.getServer().getDungeonSystem().exitDungeon(this);
// Leave world // Leave world
if (this.getWorld() != null) { if (this.getWorld() != null) {
......
...@@ -58,7 +58,7 @@ public class GameQuest { ...@@ -58,7 +58,7 @@ public class GameQuest {
this.mainQuest.getChildQuests().put(this.questId, this); this.mainQuest.getChildQuests().put(this.questId, this);
this.getData().getBeginExec().forEach(e -> getOwner().getServer().getQuestHandler().triggerExec(this, e, e.getParam())); this.getData().getBeginExec().forEach(e -> getOwner().getServer().getQuestSystem().triggerExec(this, e, e.getParam()));
this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.questId, this.state.getValue()); this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.questId, this.state.getValue());
...@@ -171,7 +171,7 @@ public class GameQuest { ...@@ -171,7 +171,7 @@ public class GameQuest {
this.save(); this.save();
} }
this.getData().getFinishExec().forEach(e -> getOwner().getServer().getQuestHandler().triggerExec(this, e, e.getParam())); this.getData().getFinishExec().forEach(e -> getOwner().getServer().getQuestSystem().triggerExec(this, e, e.getParam()));
this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.questId, this.state.getValue()); this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.questId, this.state.getValue());
...@@ -205,7 +205,7 @@ public class GameQuest { ...@@ -205,7 +205,7 @@ public class GameQuest {
// TODO // TODO
for (int i = 0; i < questData.getAcceptCond().size(); i++) { for (int i = 0; i < questData.getAcceptCond().size(); i++) {
QuestCondition condition = questData.getAcceptCond().get(i); QuestCondition condition = questData.getAcceptCond().get(i);
boolean result = getOwner().getServer().getQuestHandler().triggerCondition(this, condition, boolean result = getOwner().getServer().getQuestSystem().triggerCondition(this, condition,
condition.getParamStr(), condition.getParamStr(),
condition.getParam()); condition.getParam());
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment