mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-17 09:25:06 +01:00
feat: change game time (#2061)
* feat: change game time * Update proto names
This commit is contained in:
@@ -7,17 +7,22 @@ import emu.grasscutter.net.proto.PlayerSetPauseReqOuterClass.PlayerSetPauseReq;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerSetPauseRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerTimeNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketSceneTimeNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.PlayerSetPauseReq)
|
||||
public class HandlerPlayerSetPauseReq extends PacketHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
PacketHead head = PacketHead.parseFrom(header);
|
||||
PlayerSetPauseReq req = PlayerSetPauseReq.parseFrom(payload);
|
||||
|
||||
|
||||
session.send(new PacketPlayerSetPauseRsp(head.getClientSequenceId()));
|
||||
session.getPlayer().setPaused(req.getIsPaused());
|
||||
|
||||
session.send(new PacketPlayerTimeNotify(session.getPlayer()));
|
||||
session.send(new PacketSceneTimeNotify(session.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SkipPlayerGameTimeReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerGameTimeNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketSkipPlayerGameTimeRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.SkipPlayerGameTimeReq)
|
||||
public class HandlerSkipPlayerGameTimeReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = SkipPlayerGameTimeReqOuterClass.SkipPlayerGameTimeReq.parseFrom(payload);
|
||||
var player = session.getPlayer();
|
||||
player.getScene().setTime(req.getGameTime());
|
||||
player.getScene().broadcastPacket(new PacketPlayerGameTimeNotify(player));
|
||||
player.sendPacket(new PacketSkipPlayerGameTimeRsp(req));
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ public class PacketSceneTimeNotify extends BasePacket {
|
||||
super(PacketOpcodes.SceneTimeNotify);
|
||||
|
||||
SceneTimeNotify proto = SceneTimeNotify.newBuilder()
|
||||
.setIsPaused(player.isPaused())
|
||||
.setSceneId(player.getSceneId())
|
||||
.setSceneTime(player.getScene().getSceneTime())
|
||||
.build();
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.SkipPlayerGameTimeReqOuterClass;
|
||||
import emu.grasscutter.net.proto.SkipPlayerGameTimeRspOuterClass;
|
||||
|
||||
public class PacketSkipPlayerGameTimeRsp extends BasePacket {
|
||||
public PacketSkipPlayerGameTimeRsp(SkipPlayerGameTimeReqOuterClass.SkipPlayerGameTimeReq req) {
|
||||
super(PacketOpcodes.SkipPlayerGameTimeRsp);
|
||||
|
||||
var proto = SkipPlayerGameTimeRspOuterClass.SkipPlayerGameTimeRsp.newBuilder()
|
||||
.setClientGameTime(req.getClientGameTime())
|
||||
.setGameTime(req.getGameTime())
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user