mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-02-06 18:17:00 +01:00
Refactor game server managers to systems
This commit is contained in:
@@ -140,11 +140,11 @@ public class BattlePassManager extends BasePlayerDataManager {
|
||||
|
||||
// Mission triggers
|
||||
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) {
|
||||
getPlayer().getServer().getBattlePassMissionManager().triggerMission(getPlayer(), triggerType, param, progress);
|
||||
getPlayer().getServer().getBattlePassSystem().triggerMission(getPlayer(), triggerType, param, progress);
|
||||
}
|
||||
|
||||
// Handlers
|
||||
|
||||
@@ -11,16 +11,17 @@ import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.BattlePassMissionRefreshType;
|
||||
import emu.grasscutter.game.props.BattlePassMissionStatus;
|
||||
import emu.grasscutter.game.props.WatcherTriggerType;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.packet.send.PacketBattlePassMissionUpdateNotify;
|
||||
|
||||
public class BattlePassMissionManager {
|
||||
private final GameServer server;
|
||||
public class BattlePassSystem extends BaseGameSystem {
|
||||
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
|
||||
public BattlePassMissionManager(GameServer server) {
|
||||
this.server = server;
|
||||
public BattlePassSystem(GameServer server) {
|
||||
super(server);
|
||||
|
||||
this.cachedTriggers = new HashMap<>();
|
||||
|
||||
for (BattlePassMissionData missionData : GameData.getBattlePassMissionDataMap().values()) {
|
||||
@@ -12,6 +12,7 @@ import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.packet.send.PacketCombineFormulaDataNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketCombineRsp;
|
||||
@@ -29,16 +30,11 @@ import java.util.List;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
public class CombineManger {
|
||||
private final GameServer gameServer;
|
||||
public class CombineManger extends BaseGameSystem {
|
||||
private final static Int2ObjectMap<List<Integer>> reliquaryDecomposeData = new Int2ObjectOpenHashMap<>();
|
||||
|
||||
public GameServer getGameServer() {
|
||||
return gameServer;
|
||||
}
|
||||
|
||||
public CombineManger(GameServer gameServer) {
|
||||
this.gameServer = gameServer;
|
||||
public CombineManger(GameServer server) {
|
||||
super(server);
|
||||
}
|
||||
|
||||
public static void initialize() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import emu.grasscutter.game.inventory.ItemType;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
@@ -23,24 +24,18 @@ import java.io.Reader;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class DropManager {
|
||||
public GameServer getGameServer() {
|
||||
return gameServer;
|
||||
}
|
||||
|
||||
private final GameServer gameServer;
|
||||
|
||||
public Int2ObjectMap<List<DropData>> getDropData() {
|
||||
return dropData;
|
||||
}
|
||||
|
||||
public class DropSystem extends BaseGameSystem {
|
||||
private final Int2ObjectMap<List<DropData>> dropData;
|
||||
|
||||
public DropManager(GameServer gameServer) {
|
||||
this.gameServer = gameServer;
|
||||
public DropSystem(GameServer server) {
|
||||
super(server);
|
||||
this.dropData = new Int2ObjectOpenHashMap<>();
|
||||
this.load();
|
||||
}
|
||||
|
||||
public Int2ObjectMap<List<DropData>> getDropData() {
|
||||
return dropData;
|
||||
}
|
||||
|
||||
public synchronized void load() {
|
||||
try (Reader fileReader = new InputStreamReader(DataLoader.load("Drop.json"))) {
|
||||
@@ -11,6 +11,7 @@ import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.game.world.Scene;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.packet.send.PacketDungeonEntryInfoRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerEnterDungeonRsp;
|
||||
@@ -18,15 +19,11 @@ import emu.grasscutter.utils.Position;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DungeonManager {
|
||||
private final GameServer server;
|
||||
public class DungeonSystem extends BaseGameSystem {
|
||||
private static final BasicDungeonSettleListener basicDungeonSettleObserver = new BasicDungeonSettleListener();
|
||||
public DungeonManager(GameServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
public GameServer getServer() {
|
||||
return server;
|
||||
|
||||
public DungeonSystem(GameServer server) {
|
||||
super(server);
|
||||
}
|
||||
|
||||
public void getEntryInfo(Player player, int pointId) {
|
||||
@@ -19,7 +19,7 @@ public class GadgetChest extends GadgetContent {
|
||||
}
|
||||
|
||||
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());
|
||||
if(handler == null){
|
||||
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{
|
||||
|
||||
@Override
|
||||
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 reward = worldDataManager.getRewardByBossId(monster.monster_id);
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package emu.grasscutter.game.expedition;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.DataLoader;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
@@ -15,22 +16,18 @@ import java.util.List;
|
||||
|
||||
import static emu.grasscutter.Configuration.*;
|
||||
|
||||
public class ExpeditionManager {
|
||||
public GameServer getGameServer() {
|
||||
return gameServer;
|
||||
}
|
||||
|
||||
private final GameServer gameServer;
|
||||
|
||||
public Int2ObjectMap<List<ExpeditionRewardDataList>> getExpeditionRewardDataList() { return expeditionRewardData; }
|
||||
|
||||
public class ExpeditionSystem extends BaseGameSystem {
|
||||
private final Int2ObjectMap<List<ExpeditionRewardDataList>> expeditionRewardData;
|
||||
|
||||
public ExpeditionManager(GameServer gameServer) {
|
||||
this.gameServer = gameServer;
|
||||
public ExpeditionSystem(GameServer server) {
|
||||
super(server);
|
||||
this.expeditionRewardData = new Int2ObjectOpenHashMap<>();
|
||||
this.load();
|
||||
}
|
||||
|
||||
public Int2ObjectMap<List<ExpeditionRewardDataList>> getExpeditionRewardDataList() {
|
||||
return expeditionRewardData;
|
||||
}
|
||||
|
||||
public synchronized void load() {
|
||||
try (Reader fileReader = new InputStreamReader(DataLoader.load("ExpeditionReward.json"))) {
|
||||
@@ -33,6 +33,7 @@ import emu.grasscutter.net.proto.GachaTransferItemOuterClass.GachaTransferItem;
|
||||
import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.game.GameServerTickEvent;
|
||||
import emu.grasscutter.server.packet.send.PacketDoGachaRsp;
|
||||
@@ -46,8 +47,7 @@ import org.greenrobot.eventbus.Subscribe;
|
||||
|
||||
import static emu.grasscutter.Configuration.*;
|
||||
|
||||
public class GachaManager {
|
||||
private final GameServer server;
|
||||
public class GachaSystem extends BaseGameSystem {
|
||||
private final Int2ObjectMap<GachaBanner> gachaBanners;
|
||||
private WatchService watchService;
|
||||
|
||||
@@ -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[] fallbackItems5Pool2Default = {11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502};
|
||||
|
||||
public GachaManager(GameServer server) {
|
||||
this.server = server;
|
||||
public GachaSystem(GameServer server) {
|
||||
super(server);
|
||||
this.gachaBanners = new Int2ObjectOpenHashMap<>();
|
||||
this.load();
|
||||
this.startWatcher(server);
|
||||
}
|
||||
|
||||
public GameServer getServer() {
|
||||
return server;
|
||||
}
|
||||
|
||||
public Int2ObjectMap<GachaBanner> getGachaBanners() {
|
||||
return gachaBanners;
|
||||
}
|
||||
@@ -260,11 +260,11 @@ public class Inventory extends BasePlayerManager implements Iterable<GameItem> {
|
||||
private void addVirtualItem(int itemId, int count) {
|
||||
switch (itemId) {
|
||||
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
|
||||
this.player.addExpDirectly(count);
|
||||
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
|
||||
this.player.getResinManager().addResin(count);
|
||||
case 107 -> // Legendary Key
|
||||
|
||||
@@ -6,6 +6,7 @@ import emu.grasscutter.data.DataLoader;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.world.World;
|
||||
import emu.grasscutter.net.proto.AnnounceDataOuterClass;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.packet.send.PacketServerAnnounceNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketServerAnnounceRevokeNotify;
|
||||
@@ -19,24 +20,22 @@ import java.io.InputStreamReader;
|
||||
import java.util.*;
|
||||
|
||||
@Getter
|
||||
public class AnnouncementManager {
|
||||
|
||||
public final GameServer server;
|
||||
public AnnouncementManager(GameServer server){
|
||||
this.server = server;
|
||||
public class AnnouncementSystem extends BaseGameSystem {
|
||||
private final Map<Integer, AnnounceConfigItem> announceConfigItemMap;
|
||||
|
||||
public AnnouncementSystem(GameServer server){
|
||||
super(server);
|
||||
this.announceConfigItemMap = new HashMap<>();
|
||||
loadConfig();
|
||||
}
|
||||
Map<Integer, AnnounceConfigItem> announceConfigItemMap = new HashMap<>();
|
||||
|
||||
private int loadConfig() {
|
||||
try (var fileReader = new InputStreamReader(DataLoader.load("Announcement.json"))) {
|
||||
List<AnnounceConfigItem> announceConfigItems = Grasscutter.getGsonFactory().fromJson(fileReader,
|
||||
TypeToken.getParameterized(List.class, AnnounceConfigItem.class).getType());
|
||||
|
||||
announceConfigItemMap = new HashMap<>();
|
||||
announceConfigItemMap.clear();
|
||||
announceConfigItems.forEach(i -> announceConfigItemMap.put(i.getTemplateId(), i));
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
Grasscutter.getLogger().error("Unable to load server announce config.", e);
|
||||
}
|
||||
@@ -27,15 +27,14 @@ import emu.grasscutter.game.shop.ShopChestBatchUseTable;
|
||||
import emu.grasscutter.game.shop.ShopChestTable;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
||||
import emu.grasscutter.net.proto.MaterialInfoOuterClass.MaterialInfo;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.packet.send.*;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import it.unimi.dsi.fastutil.ints.Int2IntMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
|
||||
|
||||
public class InventoryManager {
|
||||
private final GameServer server;
|
||||
|
||||
public class InventorySystem extends BaseGameSystem {
|
||||
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_EXP_1 = 2500; // Sanctifying Unction
|
||||
@@ -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_3 = 20000; // Hero's Wit
|
||||
|
||||
public InventoryManager(GameServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
public GameServer getServer() {
|
||||
return server;
|
||||
public InventorySystem(GameServer server) {
|
||||
super(server);
|
||||
}
|
||||
|
||||
public void lockEquip(Player player, long targetEquipGuid, boolean isLocked) {
|
||||
@@ -850,7 +845,7 @@ public class InventoryManager {
|
||||
// Handle combine diagrams.
|
||||
if (useItem.getItemData().getItemUse().get(0).getUseOp().equals("ITEM_USE_UNLOCK_COMBINE")) {
|
||||
// Unlock.
|
||||
useSuccess = player.getServer().getCombineManger().unlockCombineDiagram(player, useItem);
|
||||
useSuccess = player.getServer().getCombineSystem().unlockCombineDiagram(player, useItem);
|
||||
}
|
||||
// Handle cooking recipies.
|
||||
if (useItem.getItemData().getItemUse().get(0).getUseOp().equals("ITEM_USE_UNLOCK_COOK_RECIPE")) {
|
||||
@@ -883,7 +878,7 @@ public class InventoryManager {
|
||||
}
|
||||
break;
|
||||
case MATERIAL_CHEST:
|
||||
List<ShopChestTable> shopChestTableList = player.getServer().getShopManager().getShopChestData();
|
||||
List<ShopChestTable> shopChestTableList = player.getServer().getShopSystem().getShopChestData();
|
||||
List<GameItem> rewardItemList = new ArrayList<>();
|
||||
for (ShopChestTable shopChestTable : shopChestTableList) {
|
||||
if (shopChestTable.getItemId() != useItem.getItemId()) {
|
||||
@@ -914,7 +909,7 @@ public class InventoryManager {
|
||||
if (optionId < 1) {
|
||||
break;
|
||||
}
|
||||
List<ShopChestBatchUseTable> shopChestBatchUseTableList = player.getServer().getShopManager().getShopChestBatchUseData();
|
||||
List<ShopChestBatchUseTable> shopChestBatchUseTableList = player.getServer().getShopSystem().getShopChestBatchUseData();
|
||||
for (ShopChestBatchUseTable shopChestBatchUseTable : shopChestBatchUseTableList) {
|
||||
if (shopChestBatchUseTable.getItemId() != useItem.getItemId()) {
|
||||
continue;
|
||||
@@ -8,20 +8,16 @@ import emu.grasscutter.net.proto.PlayerApplyEnterMpReasonOuterClass.PlayerApplyE
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.player.Player.SceneLoadState;
|
||||
import emu.grasscutter.net.proto.PlayerApplyEnterMpResultNotifyOuterClass;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpResultNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify;
|
||||
|
||||
public class MultiplayerManager {
|
||||
private final GameServer server;
|
||||
|
||||
public MultiplayerManager(GameServer server) {
|
||||
this.server = server;
|
||||
}
|
||||
public class MultiplayerSystem extends BaseGameSystem {
|
||||
|
||||
public GameServer getServer() {
|
||||
return server;
|
||||
public MultiplayerSystem(GameServer server) {
|
||||
super(server);
|
||||
}
|
||||
|
||||
public void applyEnterMp(Player player, int targetUid) {
|
||||
@@ -1436,7 +1436,7 @@ public class Player {
|
||||
getStaminaManager().stopSustainedStaminaHandler();
|
||||
|
||||
// force to leave the dungeon (inside has a "if")
|
||||
this.getServer().getDungeonManager().exitDungeon(this);
|
||||
this.getServer().getDungeonSystem().exitDungeon(this);
|
||||
|
||||
// Leave world
|
||||
if (this.getWorld() != null) {
|
||||
|
||||
@@ -58,7 +58,7 @@ public class GameQuest {
|
||||
|
||||
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());
|
||||
|
||||
@@ -171,7 +171,7 @@ public class GameQuest {
|
||||
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());
|
||||
|
||||
@@ -205,7 +205,7 @@ public class GameQuest {
|
||||
// TODO
|
||||
for (int i = 0; i < questData.getAcceptCond().size(); 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.getParam());
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ public class QuestManager extends BasePlayerManager {
|
||||
continue;
|
||||
}
|
||||
|
||||
boolean result = getPlayer().getServer().getQuestHandler().triggerContent(quest, condition, paramStr, params);
|
||||
boolean result = getPlayer().getServer().getQuestSystem().triggerContent(quest, condition, paramStr, params);
|
||||
|
||||
if (result) {
|
||||
quest.getFinishProgressList()[i] = 1;
|
||||
|
||||
@@ -4,6 +4,9 @@ import java.util.Set;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
|
||||
import org.reflections.Reflections;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
@@ -13,12 +16,14 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class ServerQuestHandler {
|
||||
public class QuestSystem extends BaseGameSystem {
|
||||
private final Int2ObjectMap<QuestBaseHandler> condHandlers;
|
||||
private final Int2ObjectMap<QuestBaseHandler> contHandlers;
|
||||
private final Int2ObjectMap<QuestExecHandler> execHandlers;
|
||||
|
||||
public ServerQuestHandler() {
|
||||
public QuestSystem(GameServer server) {
|
||||
super(server);
|
||||
|
||||
this.condHandlers = new Int2ObjectOpenHashMap<>();
|
||||
this.contHandlers = new Int2ObjectOpenHashMap<>();
|
||||
this.execHandlers = new Int2ObjectOpenHashMap<>();
|
||||
@@ -6,6 +6,7 @@ import emu.grasscutter.data.DataLoader;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.data.excels.ShopGoodsData;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
@@ -21,35 +22,33 @@ import java.util.List;
|
||||
|
||||
import static emu.grasscutter.Configuration.*;
|
||||
|
||||
public class ShopManager {
|
||||
private final GameServer server;
|
||||
|
||||
public Int2ObjectMap<List<ShopInfo>> getShopData() {
|
||||
return shopData;
|
||||
}
|
||||
|
||||
public List<ShopChestTable> getShopChestData() {
|
||||
return shopChestData;
|
||||
}
|
||||
|
||||
public List<ShopChestBatchUseTable> getShopChestBatchUseData() {
|
||||
return shopChestBatchUseData;
|
||||
}
|
||||
|
||||
public class ShopSystem extends BaseGameSystem {
|
||||
private final Int2ObjectMap<List<ShopInfo>> shopData;
|
||||
private final List<ShopChestTable> shopChestData;
|
||||
private final List<ShopChestBatchUseTable> shopChestBatchUseData;
|
||||
|
||||
private static final int REFRESH_HOUR = 4; // In GMT+8 server
|
||||
private static final String TIME_ZONE = "Asia/Shanghai"; // GMT+8 Timezone
|
||||
|
||||
public ShopManager(GameServer server) {
|
||||
this.server = server;
|
||||
public ShopSystem(GameServer server) {
|
||||
super(server);
|
||||
this.shopData = new Int2ObjectOpenHashMap<>();
|
||||
this.shopChestData = new ArrayList<>();
|
||||
this.shopChestBatchUseData = new ArrayList<>();
|
||||
this.load();
|
||||
}
|
||||
|
||||
public Int2ObjectMap<List<ShopInfo>> getShopData() {
|
||||
return shopData;
|
||||
}
|
||||
|
||||
private static final int REFRESH_HOUR = 4; // In GMT+8 server
|
||||
private static final String TIME_ZONE = "Asia/Shanghai"; // GMT+8 Timezone
|
||||
public List<ShopChestTable> getShopChestData() {
|
||||
return shopChestData;
|
||||
}
|
||||
|
||||
public List<ShopChestBatchUseTable> getShopChestBatchUseData() {
|
||||
return shopChestBatchUseData;
|
||||
}
|
||||
|
||||
public static int getShopNextRefreshTime(ShopInfo shopInfo) {
|
||||
return switch (shopInfo.getShopRefreshType()) {
|
||||
@@ -74,7 +74,7 @@ public class TowerManager extends BasePlayerManager {
|
||||
notifyCurLevelRecordChange();
|
||||
// use team user choose
|
||||
player.getTeamManager().useTemporaryTeam(0);
|
||||
player.getServer().getDungeonManager().handoffDungeon(player, dungeonId,
|
||||
player.getServer().getDungeonSystem().handoffDungeon(player, dungeonId,
|
||||
towerDungeonSettleListener);
|
||||
|
||||
// make sure user can exit dungeon correctly
|
||||
@@ -116,10 +116,10 @@ public class TowerManager extends BasePlayerManager {
|
||||
return getTowerData().currentLevel < 3;
|
||||
}
|
||||
public int getNextFloorId() {
|
||||
return player.getServer().getTowerScheduleManager().getNextFloorId(getTowerData().currentFloorId);
|
||||
return player.getServer().getTowerSystem().getNextFloorId(getTowerData().currentFloorId);
|
||||
}
|
||||
public boolean hasNextFloor(){
|
||||
return player.getServer().getTowerScheduleManager().getNextFloorId(getTowerData().currentFloorId) > 0;
|
||||
return player.getServer().getTowerSystem().getNextFloorId(getTowerData().currentFloorId) > 0;
|
||||
}
|
||||
|
||||
public void clearEntry() {
|
||||
@@ -128,10 +128,10 @@ public class TowerManager extends BasePlayerManager {
|
||||
|
||||
public boolean canEnterScheduleFloor(){
|
||||
Map<Integer, TowerLevelRecord> recordMap = getRecordMap();
|
||||
if(!recordMap.containsKey(player.getServer().getTowerScheduleManager().getLastEntranceFloor())){
|
||||
if(!recordMap.containsKey(player.getServer().getTowerSystem().getLastEntranceFloor())){
|
||||
return false;
|
||||
}
|
||||
return recordMap.get(player.getServer().getTowerScheduleManager().getLastEntranceFloor())
|
||||
return recordMap.get(player.getServer().getTowerSystem().getLastEntranceFloor())
|
||||
.getStarCount() >= 6;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.DataLoader;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.TowerScheduleData;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
|
||||
import java.io.FileReader;
|
||||
@@ -14,15 +15,10 @@ import java.util.List;
|
||||
|
||||
import static emu.grasscutter.Configuration.*;
|
||||
|
||||
public class TowerScheduleManager {
|
||||
private final GameServer gameServer;
|
||||
|
||||
public GameServer getGameServer() {
|
||||
return gameServer;
|
||||
}
|
||||
|
||||
public TowerScheduleManager(GameServer gameServer) {
|
||||
this.gameServer = gameServer;
|
||||
public class TowerSystem extends BaseGameSystem {
|
||||
|
||||
public TowerSystem(GameServer server) {
|
||||
super(server);
|
||||
this.load();
|
||||
}
|
||||
|
||||
@@ -399,7 +399,7 @@ public class Scene {
|
||||
|
||||
// Reward drop
|
||||
if (target instanceof EntityMonster && this.getSceneType() != SceneType.SCENE_DUNGEON) {
|
||||
getWorld().getServer().getDropManager().callDrop((EntityMonster) target);
|
||||
getWorld().getServer().getDropSystem().callDrop((EntityMonster) target);
|
||||
}
|
||||
|
||||
this.removeEntity(target);
|
||||
|
||||
@@ -14,6 +14,7 @@ import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.net.proto.InvestigationMonsterOuterClass;
|
||||
import emu.grasscutter.scripts.data.SceneGroup;
|
||||
import emu.grasscutter.scripts.data.SceneMonster;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
|
||||
import java.io.InputStream;
|
||||
@@ -24,13 +25,12 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class WorldDataManager {
|
||||
private final GameServer gameServer;
|
||||
public class WorldDataSystem extends BaseGameSystem {
|
||||
private final Map<String, ChestInteractHandler> chestInteractHandlerMap; // chestType-Handler
|
||||
private final Map<String, SceneGroup> sceneInvestigationGroupMap; // <sceneId_groupId, Group>
|
||||
|
||||
public WorldDataManager(GameServer gameServer){
|
||||
this.gameServer = gameServer;
|
||||
public WorldDataSystem(GameServer server){
|
||||
super(server);
|
||||
this.chestInteractHandlerMap = new HashMap<>();
|
||||
this.sceneInvestigationGroupMap = new ConcurrentHashMap<>();
|
||||
|
||||
Reference in New Issue
Block a user