mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-27 16:45:23 +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;
|
||||||
|
}
|
@ -14,6 +14,7 @@ public class PointData {
|
|||||||
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 {
|
|||||||
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;
|
||||||
|
@ -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