mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-26 03:42:55 +00:00
Support of Enter Room Scene
This commit is contained in:
parent
e693612ed1
commit
a21fc116ee
@ -13,7 +13,8 @@ public class PointData {
|
||||
private Position tranPos;
|
||||
private int[] dungeonIds;
|
||||
private int[] dungeonRandomList;
|
||||
|
||||
|
||||
private int tranSceneId;
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
@ -38,6 +39,14 @@ public class PointData {
|
||||
return dungeonRandomList;
|
||||
}
|
||||
|
||||
public int getTranSceneId() {
|
||||
return tranSceneId;
|
||||
}
|
||||
|
||||
public void setTranSceneId(int tranSceneId) {
|
||||
this.tranSceneId = tranSceneId;
|
||||
}
|
||||
|
||||
public void updateDailyDungeon() {
|
||||
if (getDungeonRandomList() == null) {
|
||||
return;
|
||||
|
@ -0,0 +1,38 @@
|
||||
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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user