From 8d57e357c065b8d87e9c849596863c36fc0e9457 Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Thu, 7 Dec 2023 03:07:21 -0800 Subject: [PATCH] Fix some scenes not showing up in the map --- .../data/excel/MapEntranceExcel.java | 5 ++++ .../recv/HandlerGetEnteredSceneCsReq.java | 4 +-- .../send/PacketGetEnteredSceneScRsp.java | 27 ++++++++++++------- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/main/java/emu/lunarcore/data/excel/MapEntranceExcel.java b/src/main/java/emu/lunarcore/data/excel/MapEntranceExcel.java index 2d1805c..58da4b3 100644 --- a/src/main/java/emu/lunarcore/data/excel/MapEntranceExcel.java +++ b/src/main/java/emu/lunarcore/data/excel/MapEntranceExcel.java @@ -1,5 +1,7 @@ package emu.lunarcore.data.excel; +import org.h2.util.Utils; + import emu.lunarcore.data.GameResource; import emu.lunarcore.data.ResourceType; import lombok.Getter; @@ -12,6 +14,9 @@ public class MapEntranceExcel extends GameResource { private int FloorID; private int StartGroupID; private int StartAnchorID; + + private int[] FinishMainMissionList = Utils.EMPTY_INT_ARRAY; + private int[] FinishSubMissionList = Utils.EMPTY_INT_ARRAY; @Override public int getId() { diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetEnteredSceneCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetEnteredSceneCsReq.java index ccfc986..9dc1ac0 100644 --- a/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetEnteredSceneCsReq.java +++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerGetEnteredSceneCsReq.java @@ -4,15 +4,13 @@ import emu.lunarcore.server.game.GameSession; import emu.lunarcore.server.packet.CmdId; import emu.lunarcore.server.packet.Opcodes; import emu.lunarcore.server.packet.PacketHandler; -import emu.lunarcore.server.packet.send.PacketGetEnteredSceneScRsp; @Opcodes(CmdId.GetEnteredSceneCsReq) public class HandlerGetEnteredSceneCsReq extends PacketHandler { @Override public void handle(GameSession session, byte[] data) throws Exception { - // Note: This packet is not necessary for the client to load into a scene - session.send(new PacketGetEnteredSceneScRsp(session.getPlayer())); + session.send(CmdId.GetEnteredSceneScRsp); } } diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketGetEnteredSceneScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketGetEnteredSceneScRsp.java index dc0da74..7955db7 100644 --- a/src/main/java/emu/lunarcore/server/packet/send/PacketGetEnteredSceneScRsp.java +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketGetEnteredSceneScRsp.java @@ -1,26 +1,35 @@ package emu.lunarcore.server.packet.send; -import emu.lunarcore.game.player.Player; +import emu.lunarcore.data.GameData; import emu.lunarcore.proto.EnteredSceneInfoOuterClass.EnteredSceneInfo; import emu.lunarcore.proto.GetEnteredSceneScRspOuterClass.GetEnteredSceneScRsp; import emu.lunarcore.server.packet.BasePacket; +import emu.lunarcore.server.packet.CacheablePacket; import emu.lunarcore.server.packet.CmdId; +@CacheablePacket public class PacketGetEnteredSceneScRsp extends BasePacket { - public PacketGetEnteredSceneScRsp(Player player) { + public PacketGetEnteredSceneScRsp() { super(CmdId.GetEnteredSceneScRsp); - var sceneInfo = EnteredSceneInfo.newInstance(); + var data = GetEnteredSceneScRsp.newInstance(); - if (player.getScene() != null) { - sceneInfo.setFloorId(player.getScene().getFloorId()); - sceneInfo.setPlaneId(player.getScene().getPlaneId()); + // TODO find a better way to get these scenes + for (var excel : GameData.getMapEntranceExcelMap().values()) { + // Skip these + if (excel.getFinishMainMissionList().length == 0 && excel.getFinishSubMissionList().length == 0) { + continue; + } + + // Add info + var info = EnteredSceneInfo.newInstance() + .setPlaneId(excel.getPlaneID()) + .setFloorId(excel.getFloorID()); + + data.addEnteredSceneInfo(info); } - var data = GetEnteredSceneScRsp.newInstance() - .addEnteredSceneInfo(sceneInfo); - this.setData(data); } }