Open state framework (#1483)

* Added more server debug options

* made server debug code prettier

* fixed initialization bug

* Enables logging of packets contained in UnionCmdNotify, when debug level is WHITELIST or BLACKLIST

* Fully Implement OpenState Framework

* added devOpenStates

* Commented out newPlayerOpenStates

* Removed OPEN_STATE_NONE from devOpenStates
This commit is contained in:
akatatsu27
2022-07-18 11:33:57 +03:00
committed by GitHub
parent ae8b5e30ac
commit b5a4ab7524
7 changed files with 337 additions and 18 deletions

View File

@@ -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.OpenStateChangeNotifyOuterClass.OpenStateChangeNotify;
//Sets openState to value
public class PacketOpenStateChangeNotify extends BasePacket {
public PacketOpenStateChangeNotify(int openState, int value) {
super(PacketOpcodes.OpenStateChangeNotify);
OpenStateChangeNotify proto = OpenStateChangeNotify.newBuilder()
.putOpenStateMap(openState,value).build();
this.setData(proto);
}
}

View File

@@ -1,22 +1,25 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.game.player.PlayerOpenStateManager;
import emu.grasscutter.game.props.OpenState;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.OpenStateUpdateNotifyOuterClass.OpenStateUpdateNotify;
import java.util.Map;
/*
Must be sent on login for openStates to work
Tells the client to update its openStateMap for the keys sent. value is irrelevant
*/
public class PacketOpenStateUpdateNotify extends BasePacket {
public PacketOpenStateUpdateNotify() {
public PacketOpenStateUpdateNotify(Player player) {
super(PacketOpcodes.OpenStateUpdateNotify);
OpenStateUpdateNotify.Builder proto = OpenStateUpdateNotify.newBuilder();
for (OpenState type : OpenState.values()) {
if (type.getValue() > 0) {
proto.putOpenStateMap(type.getValue(), 1);
}
}
proto.putAllOpenStateMap(player.getOpenStateManager().getOpenStateMap()).build();
this.setData(proto);
}

View File

@@ -0,0 +1,18 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.SetOpenStateRspOuterClass.SetOpenStateRsp;
public class PacketSetOpenStateRsp extends BasePacket {
public PacketSetOpenStateRsp(int openState, int value) {
super(PacketOpcodes.SetOpenStateRsp);
SetOpenStateRsp proto = SetOpenStateRsp.newBuilder()
.setKey(openState).setValue(value).build();
this.setData(proto);
}
}