Skip to content
Snippets Groups Projects
Commit 3f34aa04 authored by Akka's avatar Akka Committed by Melledy
Browse files

Support of Enter Room Scene

parent 782c9bfb
Branches
Tags
No related merge requests found
...@@ -13,7 +13,8 @@ public class PointData { ...@@ -13,7 +13,8 @@ public class PointData {
private Position tranPos; private Position tranPos;
private int[] dungeonIds; private int[] dungeonIds;
private int[] dungeonRandomList; private int[] dungeonRandomList;
private int tranSceneId;
public int getId() { public int getId() {
return id; return id;
} }
...@@ -38,6 +39,14 @@ public class PointData { ...@@ -38,6 +39,14 @@ public class PointData {
return dungeonRandomList; return dungeonRandomList;
} }
public int getTranSceneId() {
return tranSceneId;
}
public void setTranSceneId(int tranSceneId) {
this.tranSceneId = tranSceneId;
}
public void updateDailyDungeon() { public void updateDailyDungeon() {
if (getDungeonRandomList() == null) { if (getDungeonRandomList() == null) {
return; return;
......
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.custom.ScenePointEntry;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.PersonalSceneJumpReqOuterClass.PersonalSceneJumpReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketPersonalSceneJumpRsp;
import emu.grasscutter.utils.Position;
@Opcodes(PacketOpcodes.PersonalSceneJumpReq)
public class HandlerPersonalSceneJumpReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
PersonalSceneJumpReq req = PersonalSceneJumpReq.parseFrom(payload);
// get the scene point
String code = session.getPlayer().getSceneId() + "_" + req.getPointId();
ScenePointEntry scenePointEntry = GameData.getScenePointEntries().get(code);
if (scenePointEntry != null) {
float x = scenePointEntry.getPointData().getTranPos().getX();
float y = scenePointEntry.getPointData().getTranPos().getY();
float z = scenePointEntry.getPointData().getTranPos().getZ();
Position pos = new Position(x, y, z);
int sceneId = scenePointEntry.getPointData().getTranSceneId();
session.getPlayer().getWorld().transferPlayerToScene(session.getPlayer(), sceneId, pos);
session.send(new PacketPersonalSceneJumpRsp(sceneId, pos));
}
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.PersonalSceneJumpRspOuterClass.PersonalSceneJumpRsp;
import emu.grasscutter.utils.Position;
public class PacketPersonalSceneJumpRsp extends BasePacket {
public PacketPersonalSceneJumpRsp(int sceneId, Position pos) {
super(PacketOpcodes.PersonalSceneJumpRsp);
PersonalSceneJumpRsp proto = PersonalSceneJumpRsp.newBuilder()
.setDestSceneId(sceneId)
.setDestPos(pos.toProto())
.build();
this.setData(proto);
}
}
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