Skip to content
Snippets Groups Projects
Commit 2e19e70f authored by Melledy's avatar Melledy
Browse files

Refactor game server managers to systems

parent d20e9d1f
Branches
Tags
No related merge requests found
Showing
with 72 additions and 100 deletions
...@@ -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());
......
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