mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-30 13:58:42 +00:00
Support of Enter Room Scene
This commit is contained in:
parent
b61672e046
commit
32c70cc83f
16
proto/PersonalSceneJumpReq.proto
Normal file
16
proto/PersonalSceneJumpReq.proto
Normal file
@ -0,0 +1,16 @@
|
||||
syntax = "proto3";
|
||||
|
||||
option java_package = "emu.grasscutter.net.proto";
|
||||
|
||||
message PersonalSceneJumpReq {
|
||||
enum CmdId {
|
||||
option allow_alias = true;
|
||||
ENET_CHANNEL_ID = 0;
|
||||
NONE = 0;
|
||||
ENET_IS_RELIABLE = 1;
|
||||
IS_ALLOW_CLIENT = 1;
|
||||
CMD_ID = 260;
|
||||
}
|
||||
|
||||
uint32 point_id = 1;
|
||||
}
|
19
proto/PersonalSceneJumpRsp.proto
Normal file
19
proto/PersonalSceneJumpRsp.proto
Normal file
@ -0,0 +1,19 @@
|
||||
syntax = "proto3";
|
||||
|
||||
option java_package = "emu.grasscutter.net.proto";
|
||||
|
||||
import "Vector.proto";
|
||||
|
||||
message PersonalSceneJumpRsp {
|
||||
enum CmdId {
|
||||
option allow_alias = true;
|
||||
NONE = 0;
|
||||
ENET_CHANNEL_ID = 0;
|
||||
ENET_IS_RELIABLE = 1;
|
||||
CMD_ID = 228;
|
||||
}
|
||||
|
||||
int32 retcode = 1;
|
||||
uint32 dest_scene_id = 2;
|
||||
Vector dest_pos = 3;
|
||||
}
|
@ -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