mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-15 08:25:21 +01:00
feat: change game time (#2061)
* feat: change game time * Update proto names
This commit is contained in:
@@ -49,7 +49,7 @@ public class Scene {
|
||||
@Getter @Setter private boolean dontDestroyWhenEmpty;
|
||||
|
||||
@Getter @Setter private int autoCloseTime;
|
||||
@Getter private int time;
|
||||
@Getter @Setter private int time;
|
||||
private long startTime;
|
||||
|
||||
@Getter private SceneScriptManager scriptManager;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package emu.grasscutter.net.packet;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
public class PacketOpcodes {
|
||||
public static final int NONE = 0;
|
||||
|
||||
@@ -414,7 +412,6 @@ public class PacketOpcodes {
|
||||
public static final int DigActivityChangeGadgetStateRsp = 8810;
|
||||
public static final int DigActivityMarkPointChangeNotify = 8508;
|
||||
public static final int DisableRoguelikeTrapNotify = 8726;
|
||||
public static final int DKMDNEAEGDF = 166;
|
||||
public static final int DoGachaReq = 1587;
|
||||
public static final int DoGachaRsp = 1598;
|
||||
public static final int DoRoguelikeDungeonCardGachaReq = 8752;
|
||||
@@ -1456,7 +1453,6 @@ public class PacketOpcodes {
|
||||
public static final int PlayerInvestigationAllInfoNotify = 1917;
|
||||
public static final int PlayerInvestigationNotify = 1911;
|
||||
public static final int PlayerInvestigationTargetNotify = 1930;
|
||||
public static final int PlayerIpRegionNotify = 108;
|
||||
public static final int PlayerLevelRewardUpdateNotify = 154;
|
||||
public static final int PlayerLoginReq = 187;
|
||||
public static final int PlayerLoginRsp = 198;
|
||||
@@ -1835,6 +1831,8 @@ public class PacketOpcodes {
|
||||
public static final int SingleRestartBrickBreakerRsp = 22641;
|
||||
public static final int SingleStartBrickBreakerReq = 23861;
|
||||
public static final int SingleStartBrickBreakerRsp = 23349;
|
||||
public static final int SkipPlayerGameTimeReq = 108;
|
||||
public static final int SkipPlayerGameTimeRsp = 166;
|
||||
public static final int SkyCrystalDetectorDataUpdateNotify = 4265;
|
||||
public static final int SocialDataNotify = 4050;
|
||||
public static final int SpiceActivityFinishMakeSpiceReq = 8744;
|
||||
|
||||
@@ -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