M server/src/packet.rs => server/src/packet.rs +7 -0
@@ 83,6 83,7 @@ pub enum Packet {
released: bool,
button: ButtonType,
},
+ RequestSave {},
// clientbound
SpawnPlayer {
id: u32,
@@ 112,4 113,10 @@ pub enum Packet {
actor: String,
content: String,
},
+ SaveEligibility {
+ eligible: bool,
+ },
+ SaveData {
+ payload: Vec<u8>,
+ },
}
M starkingdoms-client/src/pages/Play.svelte => starkingdoms-client/src/pages/Play.svelte +16 -0
@@ 94,6 94,22 @@
<Chatbox bind:this={chatbox} />
+<div class="options">
+ <Popup
+ title="Options"
+ id="options"
+ draggable
+ minimizable
+ style="width: 20vw; position: absolute;">
+ <label for="dev_mode">Developer mode (Advanced)</label>
+ <input type="checkbox" id="dev_mode" />
+ <span>
+ Enables parts of the client intended only for StarKingdoms developers.
+ Buggy. Use at your own risk.
+ </span>
+ </Popup>
+</div>
+
<div class="hud" id="hud">
<Popup notitle title="" id="hud-content-wrapper">
<table>
M starkingdoms-client/src/protocol.ts => starkingdoms-client/src/protocol.ts +17 -1
@@ 83,6 83,13 @@ export interface MessagePacket {
actor: string;
content: string;
}
+export interface RequestSavePacket {}
+export interface SaveEligibilityPacket {
+ eligible: boolean;
+}
+export interface SaveDataPacket {
+ payload: Buffer;
+}
export enum PacketType {
// serverbound
@@ 90,6 97,7 @@ export enum PacketType {
SendMessage = "SendMessage",
PlayerInput = "PlayerInput",
PlayerMouseInput = "PlayerMouseInput",
+ RequestSave = "RequestSave",
// clientbound
SpawnPlayer = "SpawnPlayer",
PlayerList = "PlayerList",
@@ 99,6 107,8 @@ export enum PacketType {
DespawnPart = "DespawnPart",
PlayerLeave = "PlayerLeave",
Message = "Message",
+ SaveEligibility = "SaveEligibility",
+ SaveData = "SaveData",
}
export interface Packet {
@@ 115,7 125,10 @@ export interface Packet {
| SendMessagePacket
| MessagePacket
| PlayerInputPacket
- | PlayerMouseInputPacket;
+ | PlayerMouseInputPacket
+ | RequestSavePacket
+ | SaveEligibilityPacket
+ | SaveDataPacket;
}
export const SERVERBOUND = [
@@ 123,6 136,7 @@ export const SERVERBOUND = [
PacketType.SendMessage,
PacketType.PlayerInput,
PacketType.PlayerMouseInput,
+ PacketType.RequestSave,
];
export const CLIENTBOUND = [
PacketType.SpawnPlayer,
@@ 133,6 147,8 @@ export const CLIENTBOUND = [
PacketType.DespawnPart,
PacketType.PlayerLeave,
PacketType.Message,
+ PacketType.SaveEligibility,
+ PacketType.SaveData,
];
export enum Direction {