M client/src/gateway.ts => client/src/gateway.ts +2 -2
@@ 74,7 74,7 @@ export async function gateway_connect(gateway_url: string, username: string): Pr
let handshake_start_msg;
if (global.can_beam_out) {
handshake_start_msg = MessageC2SHello.encode({
- version: 4,
+ version: 5,
requestedUsername: username,
nextState: State.Play,
user: window.localStorage.getItem("user")!,
@@ 82,7 82,7 @@ export async function gateway_connect(gateway_url: string, username: string): Pr
}).finish();
} else {
handshake_start_msg = MessageC2SHello.encode({
- version: 4,
+ version: 5,
requestedUsername: username,
nextState: State.Play,
// @ts-ignore
M client/src/protocol/message_c2s.ts => client/src/protocol/message_c2s.ts +246 -0
@@ 286,6 286,84 @@ export function messageC2SMouseInput_packetInfoToJSON(object: MessageC2SMouseInp
}
}
+export interface MessageC2SModuleGrabBegin {
+ moduleId: number;
+ worldposX: number;
+ worldposY: number;
+}
+
+export enum MessageC2SModuleGrabBegin_packetInfo {
+ unknown = 0,
+ type = 14,
+ UNRECOGNIZED = -1,
+}
+
+export function messageC2SModuleGrabBegin_packetInfoFromJSON(object: any): MessageC2SModuleGrabBegin_packetInfo {
+ switch (object) {
+ case 0:
+ case "unknown":
+ return MessageC2SModuleGrabBegin_packetInfo.unknown;
+ case 14:
+ case "type":
+ return MessageC2SModuleGrabBegin_packetInfo.type;
+ case -1:
+ case "UNRECOGNIZED":
+ default:
+ return MessageC2SModuleGrabBegin_packetInfo.UNRECOGNIZED;
+ }
+}
+
+export function messageC2SModuleGrabBegin_packetInfoToJSON(object: MessageC2SModuleGrabBegin_packetInfo): string {
+ switch (object) {
+ case MessageC2SModuleGrabBegin_packetInfo.unknown:
+ return "unknown";
+ case MessageC2SModuleGrabBegin_packetInfo.type:
+ return "type";
+ case MessageC2SModuleGrabBegin_packetInfo.UNRECOGNIZED:
+ default:
+ return "UNRECOGNIZED";
+ }
+}
+
+export interface MessageC2SModuleGrabEnd {
+ moduleId: number;
+ parentId: number;
+ slot: number;
+}
+
+export enum MessageC2SModuleGrabEnd_packetInfo {
+ unknown = 0,
+ type = 16,
+ UNRECOGNIZED = -1,
+}
+
+export function messageC2SModuleGrabEnd_packetInfoFromJSON(object: any): MessageC2SModuleGrabEnd_packetInfo {
+ switch (object) {
+ case 0:
+ case "unknown":
+ return MessageC2SModuleGrabEnd_packetInfo.unknown;
+ case 16:
+ case "type":
+ return MessageC2SModuleGrabEnd_packetInfo.type;
+ case -1:
+ case "UNRECOGNIZED":
+ default:
+ return MessageC2SModuleGrabEnd_packetInfo.UNRECOGNIZED;
+ }
+}
+
+export function messageC2SModuleGrabEnd_packetInfoToJSON(object: MessageC2SModuleGrabEnd_packetInfo): string {
+ switch (object) {
+ case MessageC2SModuleGrabEnd_packetInfo.unknown:
+ return "unknown";
+ case MessageC2SModuleGrabEnd_packetInfo.type:
+ return "type";
+ case MessageC2SModuleGrabEnd_packetInfo.UNRECOGNIZED:
+ default:
+ return "UNRECOGNIZED";
+ }
+}
+
function createBaseMessageC2SHello(): MessageC2SHello {
return { version: 0, requestedUsername: "", nextState: 0, token: "", user: "" };
}
@@ 821,6 899,174 @@ export const MessageC2SMouseInput = {
},
};
+function createBaseMessageC2SModuleGrabBegin(): MessageC2SModuleGrabBegin {
+ return { moduleId: 0, worldposX: 0, worldposY: 0 };
+}
+
+export const MessageC2SModuleGrabBegin = {
+ encode(message: MessageC2SModuleGrabBegin, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
+ if (message.moduleId !== 0) {
+ writer.uint32(8).uint32(message.moduleId);
+ }
+ if (message.worldposX !== 0) {
+ writer.uint32(17).double(message.worldposX);
+ }
+ if (message.worldposY !== 0) {
+ writer.uint32(25).double(message.worldposY);
+ }
+ return writer;
+ },
+
+ decode(input: _m0.Reader | Uint8Array, length?: number): MessageC2SModuleGrabBegin {
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
+ let end = length === undefined ? reader.len : reader.pos + length;
+ const message = createBaseMessageC2SModuleGrabBegin();
+ while (reader.pos < end) {
+ const tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1:
+ if (tag != 8) {
+ break;
+ }
+
+ message.moduleId = reader.uint32();
+ continue;
+ case 2:
+ if (tag != 17) {
+ break;
+ }
+
+ message.worldposX = reader.double();
+ continue;
+ case 3:
+ if (tag != 25) {
+ break;
+ }
+
+ message.worldposY = reader.double();
+ continue;
+ }
+ if ((tag & 7) == 4 || tag == 0) {
+ break;
+ }
+ reader.skipType(tag & 7);
+ }
+ return message;
+ },
+
+ fromJSON(object: any): MessageC2SModuleGrabBegin {
+ return {
+ moduleId: isSet(object.moduleId) ? Number(object.moduleId) : 0,
+ worldposX: isSet(object.worldposX) ? Number(object.worldposX) : 0,
+ worldposY: isSet(object.worldposY) ? Number(object.worldposY) : 0,
+ };
+ },
+
+ toJSON(message: MessageC2SModuleGrabBegin): unknown {
+ const obj: any = {};
+ message.moduleId !== undefined && (obj.moduleId = Math.round(message.moduleId));
+ message.worldposX !== undefined && (obj.worldposX = message.worldposX);
+ message.worldposY !== undefined && (obj.worldposY = message.worldposY);
+ return obj;
+ },
+
+ create<I extends Exact<DeepPartial<MessageC2SModuleGrabBegin>, I>>(base?: I): MessageC2SModuleGrabBegin {
+ return MessageC2SModuleGrabBegin.fromPartial(base ?? {});
+ },
+
+ fromPartial<I extends Exact<DeepPartial<MessageC2SModuleGrabBegin>, I>>(object: I): MessageC2SModuleGrabBegin {
+ const message = createBaseMessageC2SModuleGrabBegin();
+ message.moduleId = object.moduleId ?? 0;
+ message.worldposX = object.worldposX ?? 0;
+ message.worldposY = object.worldposY ?? 0;
+ return message;
+ },
+};
+
+function createBaseMessageC2SModuleGrabEnd(): MessageC2SModuleGrabEnd {
+ return { moduleId: 0, parentId: 0, slot: 0 };
+}
+
+export const MessageC2SModuleGrabEnd = {
+ encode(message: MessageC2SModuleGrabEnd, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
+ if (message.moduleId !== 0) {
+ writer.uint32(8).uint32(message.moduleId);
+ }
+ if (message.parentId !== 0) {
+ writer.uint32(16).uint32(message.parentId);
+ }
+ if (message.slot !== 0) {
+ writer.uint32(24).uint32(message.slot);
+ }
+ return writer;
+ },
+
+ decode(input: _m0.Reader | Uint8Array, length?: number): MessageC2SModuleGrabEnd {
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
+ let end = length === undefined ? reader.len : reader.pos + length;
+ const message = createBaseMessageC2SModuleGrabEnd();
+ while (reader.pos < end) {
+ const tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1:
+ if (tag != 8) {
+ break;
+ }
+
+ message.moduleId = reader.uint32();
+ continue;
+ case 2:
+ if (tag != 16) {
+ break;
+ }
+
+ message.parentId = reader.uint32();
+ continue;
+ case 3:
+ if (tag != 24) {
+ break;
+ }
+
+ message.slot = reader.uint32();
+ continue;
+ }
+ if ((tag & 7) == 4 || tag == 0) {
+ break;
+ }
+ reader.skipType(tag & 7);
+ }
+ return message;
+ },
+
+ fromJSON(object: any): MessageC2SModuleGrabEnd {
+ return {
+ moduleId: isSet(object.moduleId) ? Number(object.moduleId) : 0,
+ parentId: isSet(object.parentId) ? Number(object.parentId) : 0,
+ slot: isSet(object.slot) ? Number(object.slot) : 0,
+ };
+ },
+
+ toJSON(message: MessageC2SModuleGrabEnd): unknown {
+ const obj: any = {};
+ message.moduleId !== undefined && (obj.moduleId = Math.round(message.moduleId));
+ message.parentId !== undefined && (obj.parentId = Math.round(message.parentId));
+ message.slot !== undefined && (obj.slot = Math.round(message.slot));
+ return obj;
+ },
+
+ create<I extends Exact<DeepPartial<MessageC2SModuleGrabEnd>, I>>(base?: I): MessageC2SModuleGrabEnd {
+ return MessageC2SModuleGrabEnd.fromPartial(base ?? {});
+ },
+
+ fromPartial<I extends Exact<DeepPartial<MessageC2SModuleGrabEnd>, I>>(object: I): MessageC2SModuleGrabEnd {
+ const message = createBaseMessageC2SModuleGrabEnd();
+ message.moduleId = object.moduleId ?? 0;
+ message.parentId = object.parentId ?? 0;
+ message.slot = object.slot ?? 0;
+ return message;
+ },
+};
+
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T
M client/src/protocol/message_s2c.ts => client/src/protocol/message_s2c.ts +288 -1
@@ 1,7 1,7 @@
//@ts-nocheck
import * as _m0 from "protobufjs/minimal";
import { GoodbyeReason, goodbyeReasonFromJSON, goodbyeReasonToJSON } from "./goodbye_reason";
-import { Module } from "./module";
+import { AttachedModule, Module } from "./module";
import { Planet } from "./planet";
import { Player } from "./player";
import { State, stateFromJSON, stateToJSON } from "./state";
@@ 277,6 277,117 @@ export function messageS2CModulesUpdate_packetInfoToJSON(object: MessageS2CModul
}
}
+export interface MessageS2CModuleTreeUpdate {
+ tree: AttachedModule[];
+}
+
+export enum MessageS2CModuleTreeUpdate_packetInfo {
+ unknown = 0,
+ type = 12,
+ UNRECOGNIZED = -1,
+}
+
+export function messageS2CModuleTreeUpdate_packetInfoFromJSON(object: any): MessageS2CModuleTreeUpdate_packetInfo {
+ switch (object) {
+ case 0:
+ case "unknown":
+ return MessageS2CModuleTreeUpdate_packetInfo.unknown;
+ case 12:
+ case "type":
+ return MessageS2CModuleTreeUpdate_packetInfo.type;
+ case -1:
+ case "UNRECOGNIZED":
+ default:
+ return MessageS2CModuleTreeUpdate_packetInfo.UNRECOGNIZED;
+ }
+}
+
+export function messageS2CModuleTreeUpdate_packetInfoToJSON(object: MessageS2CModuleTreeUpdate_packetInfo): string {
+ switch (object) {
+ case MessageS2CModuleTreeUpdate_packetInfo.unknown:
+ return "unknown";
+ case MessageS2CModuleTreeUpdate_packetInfo.type:
+ return "type";
+ case MessageS2CModuleTreeUpdate_packetInfo.UNRECOGNIZED:
+ default:
+ return "UNRECOGNIZED";
+ }
+}
+
+export interface MessageS2CModuleAdd {
+ module: AttachedModule | undefined;
+}
+
+export enum MessageS2CModuleAdd_packetInfo {
+ unknown = 0,
+ type = 13,
+ UNRECOGNIZED = -1,
+}
+
+export function messageS2CModuleAdd_packetInfoFromJSON(object: any): MessageS2CModuleAdd_packetInfo {
+ switch (object) {
+ case 0:
+ case "unknown":
+ return MessageS2CModuleAdd_packetInfo.unknown;
+ case 13:
+ case "type":
+ return MessageS2CModuleAdd_packetInfo.type;
+ case -1:
+ case "UNRECOGNIZED":
+ default:
+ return MessageS2CModuleAdd_packetInfo.UNRECOGNIZED;
+ }
+}
+
+export function messageS2CModuleAdd_packetInfoToJSON(object: MessageS2CModuleAdd_packetInfo): string {
+ switch (object) {
+ case MessageS2CModuleAdd_packetInfo.unknown:
+ return "unknown";
+ case MessageS2CModuleAdd_packetInfo.type:
+ return "type";
+ case MessageS2CModuleAdd_packetInfo.UNRECOGNIZED:
+ default:
+ return "UNRECOGNIZED";
+ }
+}
+
+export interface MessageS2CModuleRemove {
+ module: AttachedModule | undefined;
+}
+
+export enum MessageS2CModuleRemove_packetInfo {
+ unknown = 0,
+ type = 14,
+ UNRECOGNIZED = -1,
+}
+
+export function messageS2CModuleRemove_packetInfoFromJSON(object: any): MessageS2CModuleRemove_packetInfo {
+ switch (object) {
+ case 0:
+ case "unknown":
+ return MessageS2CModuleRemove_packetInfo.unknown;
+ case 14:
+ case "type":
+ return MessageS2CModuleRemove_packetInfo.type;
+ case -1:
+ case "UNRECOGNIZED":
+ default:
+ return MessageS2CModuleRemove_packetInfo.UNRECOGNIZED;
+ }
+}
+
+export function messageS2CModuleRemove_packetInfoToJSON(object: MessageS2CModuleRemove_packetInfo): string {
+ switch (object) {
+ case MessageS2CModuleRemove_packetInfo.unknown:
+ return "unknown";
+ case MessageS2CModuleRemove_packetInfo.type:
+ return "type";
+ case MessageS2CModuleRemove_packetInfo.UNRECOGNIZED:
+ default:
+ return "UNRECOGNIZED";
+ }
+}
+
function createBaseMessageS2CHello(): MessageS2CHello {
return { version: 0, givenUsername: "", nextState: 0 };
}
@@ 712,6 823,182 @@ export const MessageS2CModulesUpdate = {
},
};
+function createBaseMessageS2CModuleTreeUpdate(): MessageS2CModuleTreeUpdate {
+ return { tree: [] };
+}
+
+export const MessageS2CModuleTreeUpdate = {
+ encode(message: MessageS2CModuleTreeUpdate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
+ for (const v of message.tree) {
+ AttachedModule.encode(v!, writer.uint32(10).fork()).ldelim();
+ }
+ return writer;
+ },
+
+ decode(input: _m0.Reader | Uint8Array, length?: number): MessageS2CModuleTreeUpdate {
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
+ let end = length === undefined ? reader.len : reader.pos + length;
+ const message = createBaseMessageS2CModuleTreeUpdate();
+ while (reader.pos < end) {
+ const tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1:
+ if (tag != 10) {
+ break;
+ }
+
+ message.tree.push(AttachedModule.decode(reader, reader.uint32()));
+ continue;
+ }
+ if ((tag & 7) == 4 || tag == 0) {
+ break;
+ }
+ reader.skipType(tag & 7);
+ }
+ return message;
+ },
+
+ fromJSON(object: any): MessageS2CModuleTreeUpdate {
+ return { tree: Array.isArray(object?.tree) ? object.tree.map((e: any) => AttachedModule.fromJSON(e)) : [] };
+ },
+
+ toJSON(message: MessageS2CModuleTreeUpdate): unknown {
+ const obj: any = {};
+ if (message.tree) {
+ obj.tree = message.tree.map((e) => e ? AttachedModule.toJSON(e) : undefined);
+ } else {
+ obj.tree = [];
+ }
+ return obj;
+ },
+
+ create<I extends Exact<DeepPartial<MessageS2CModuleTreeUpdate>, I>>(base?: I): MessageS2CModuleTreeUpdate {
+ return MessageS2CModuleTreeUpdate.fromPartial(base ?? {});
+ },
+
+ fromPartial<I extends Exact<DeepPartial<MessageS2CModuleTreeUpdate>, I>>(object: I): MessageS2CModuleTreeUpdate {
+ const message = createBaseMessageS2CModuleTreeUpdate();
+ message.tree = object.tree?.map((e) => AttachedModule.fromPartial(e)) || [];
+ return message;
+ },
+};
+
+function createBaseMessageS2CModuleAdd(): MessageS2CModuleAdd {
+ return { module: undefined };
+}
+
+export const MessageS2CModuleAdd = {
+ encode(message: MessageS2CModuleAdd, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
+ if (message.module !== undefined) {
+ AttachedModule.encode(message.module, writer.uint32(10).fork()).ldelim();
+ }
+ return writer;
+ },
+
+ decode(input: _m0.Reader | Uint8Array, length?: number): MessageS2CModuleAdd {
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
+ let end = length === undefined ? reader.len : reader.pos + length;
+ const message = createBaseMessageS2CModuleAdd();
+ while (reader.pos < end) {
+ const tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1:
+ if (tag != 10) {
+ break;
+ }
+
+ message.module = AttachedModule.decode(reader, reader.uint32());
+ continue;
+ }
+ if ((tag & 7) == 4 || tag == 0) {
+ break;
+ }
+ reader.skipType(tag & 7);
+ }
+ return message;
+ },
+
+ fromJSON(object: any): MessageS2CModuleAdd {
+ return { module: isSet(object.module) ? AttachedModule.fromJSON(object.module) : undefined };
+ },
+
+ toJSON(message: MessageS2CModuleAdd): unknown {
+ const obj: any = {};
+ message.module !== undefined && (obj.module = message.module ? AttachedModule.toJSON(message.module) : undefined);
+ return obj;
+ },
+
+ create<I extends Exact<DeepPartial<MessageS2CModuleAdd>, I>>(base?: I): MessageS2CModuleAdd {
+ return MessageS2CModuleAdd.fromPartial(base ?? {});
+ },
+
+ fromPartial<I extends Exact<DeepPartial<MessageS2CModuleAdd>, I>>(object: I): MessageS2CModuleAdd {
+ const message = createBaseMessageS2CModuleAdd();
+ message.module = (object.module !== undefined && object.module !== null)
+ ? AttachedModule.fromPartial(object.module)
+ : undefined;
+ return message;
+ },
+};
+
+function createBaseMessageS2CModuleRemove(): MessageS2CModuleRemove {
+ return { module: undefined };
+}
+
+export const MessageS2CModuleRemove = {
+ encode(message: MessageS2CModuleRemove, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
+ if (message.module !== undefined) {
+ AttachedModule.encode(message.module, writer.uint32(10).fork()).ldelim();
+ }
+ return writer;
+ },
+
+ decode(input: _m0.Reader | Uint8Array, length?: number): MessageS2CModuleRemove {
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
+ let end = length === undefined ? reader.len : reader.pos + length;
+ const message = createBaseMessageS2CModuleRemove();
+ while (reader.pos < end) {
+ const tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1:
+ if (tag != 10) {
+ break;
+ }
+
+ message.module = AttachedModule.decode(reader, reader.uint32());
+ continue;
+ }
+ if ((tag & 7) == 4 || tag == 0) {
+ break;
+ }
+ reader.skipType(tag & 7);
+ }
+ return message;
+ },
+
+ fromJSON(object: any): MessageS2CModuleRemove {
+ return { module: isSet(object.module) ? AttachedModule.fromJSON(object.module) : undefined };
+ },
+
+ toJSON(message: MessageS2CModuleRemove): unknown {
+ const obj: any = {};
+ message.module !== undefined && (obj.module = message.module ? AttachedModule.toJSON(message.module) : undefined);
+ return obj;
+ },
+
+ create<I extends Exact<DeepPartial<MessageS2CModuleRemove>, I>>(base?: I): MessageS2CModuleRemove {
+ return MessageS2CModuleRemove.fromPartial(base ?? {});
+ },
+
+ fromPartial<I extends Exact<DeepPartial<MessageS2CModuleRemove>, I>>(object: I): MessageS2CModuleRemove {
+ const message = createBaseMessageS2CModuleRemove();
+ message.module = (object.module !== undefined && object.module !== null)
+ ? AttachedModule.fromPartial(object.module)
+ : undefined;
+ return message;
+ },
+};
+
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T
M client/src/protocol/module.ts => client/src/protocol/module.ts +224 -1
@@ 53,10 53,25 @@ export interface Module {
rotation: number;
x: number;
y: number;
+ isOn: boolean;
+}
+
+export interface AttachedModule {
+ moduleType: ModuleType;
+ rotation: number;
+ x: number;
+ y: number;
+ id: number;
+ children: Attachment[];
+}
+
+export interface Attachment {
+ id: number;
+ slot: number;
}
function createBaseModule(): Module {
- return { moduleType: 0, rotation: 0, x: 0, y: 0 };
+ return { moduleType: 0, rotation: 0, x: 0, y: 0, isOn: false };
}
export const Module = {
@@ 73,6 88,9 @@ export const Module = {
if (message.y !== 0) {
writer.uint32(33).double(message.y);
}
+ if (message.isOn === true) {
+ writer.uint32(40).bool(message.isOn);
+ }
return writer;
},
@@ 111,6 129,13 @@ export const Module = {
message.y = reader.double();
continue;
+ case 5:
+ if (tag != 40) {
+ break;
+ }
+
+ message.isOn = reader.bool();
+ continue;
}
if ((tag & 7) == 4 || tag == 0) {
break;
@@ 126,6 151,7 @@ export const Module = {
rotation: isSet(object.rotation) ? Number(object.rotation) : 0,
x: isSet(object.x) ? Number(object.x) : 0,
y: isSet(object.y) ? Number(object.y) : 0,
+ isOn: isSet(object.isOn) ? Boolean(object.isOn) : false,
};
},
@@ 135,6 161,7 @@ export const Module = {
message.rotation !== undefined && (obj.rotation = message.rotation);
message.x !== undefined && (obj.x = message.x);
message.y !== undefined && (obj.y = message.y);
+ message.isOn !== undefined && (obj.isOn = message.isOn);
return obj;
},
@@ 148,6 175,202 @@ export const Module = {
message.rotation = object.rotation ?? 0;
message.x = object.x ?? 0;
message.y = object.y ?? 0;
+ message.isOn = object.isOn ?? false;
+ return message;
+ },
+};
+
+function createBaseAttachedModule(): AttachedModule {
+ return { moduleType: 0, rotation: 0, x: 0, y: 0, id: 0, children: [] };
+}
+
+export const AttachedModule = {
+ encode(message: AttachedModule, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
+ if (message.moduleType !== 0) {
+ writer.uint32(8).int32(message.moduleType);
+ }
+ if (message.rotation !== 0) {
+ writer.uint32(17).double(message.rotation);
+ }
+ if (message.x !== 0) {
+ writer.uint32(25).double(message.x);
+ }
+ if (message.y !== 0) {
+ writer.uint32(33).double(message.y);
+ }
+ if (message.id !== 0) {
+ writer.uint32(40).uint32(message.id);
+ }
+ for (const v of message.children) {
+ Attachment.encode(v!, writer.uint32(50).fork()).ldelim();
+ }
+ return writer;
+ },
+
+ decode(input: _m0.Reader | Uint8Array, length?: number): AttachedModule {
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
+ let end = length === undefined ? reader.len : reader.pos + length;
+ const message = createBaseAttachedModule();
+ while (reader.pos < end) {
+ const tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1:
+ if (tag != 8) {
+ break;
+ }
+
+ message.moduleType = reader.int32() as any;
+ continue;
+ case 2:
+ if (tag != 17) {
+ break;
+ }
+
+ message.rotation = reader.double();
+ continue;
+ case 3:
+ if (tag != 25) {
+ break;
+ }
+
+ message.x = reader.double();
+ continue;
+ case 4:
+ if (tag != 33) {
+ break;
+ }
+
+ message.y = reader.double();
+ continue;
+ case 5:
+ if (tag != 40) {
+ break;
+ }
+
+ message.id = reader.uint32();
+ continue;
+ case 6:
+ if (tag != 50) {
+ break;
+ }
+
+ message.children.push(Attachment.decode(reader, reader.uint32()));
+ continue;
+ }
+ if ((tag & 7) == 4 || tag == 0) {
+ break;
+ }
+ reader.skipType(tag & 7);
+ }
+ return message;
+ },
+
+ fromJSON(object: any): AttachedModule {
+ return {
+ moduleType: isSet(object.moduleType) ? moduleTypeFromJSON(object.moduleType) : 0,
+ rotation: isSet(object.rotation) ? Number(object.rotation) : 0,
+ x: isSet(object.x) ? Number(object.x) : 0,
+ y: isSet(object.y) ? Number(object.y) : 0,
+ id: isSet(object.id) ? Number(object.id) : 0,
+ children: Array.isArray(object?.children) ? object.children.map((e: any) => Attachment.fromJSON(e)) : [],
+ };
+ },
+
+ toJSON(message: AttachedModule): unknown {
+ const obj: any = {};
+ message.moduleType !== undefined && (obj.moduleType = moduleTypeToJSON(message.moduleType));
+ message.rotation !== undefined && (obj.rotation = message.rotation);
+ message.x !== undefined && (obj.x = message.x);
+ message.y !== undefined && (obj.y = message.y);
+ message.id !== undefined && (obj.id = Math.round(message.id));
+ if (message.children) {
+ obj.children = message.children.map((e) => e ? Attachment.toJSON(e) : undefined);
+ } else {
+ obj.children = [];
+ }
+ return obj;
+ },
+
+ create<I extends Exact<DeepPartial<AttachedModule>, I>>(base?: I): AttachedModule {
+ return AttachedModule.fromPartial(base ?? {});
+ },
+
+ fromPartial<I extends Exact<DeepPartial<AttachedModule>, I>>(object: I): AttachedModule {
+ const message = createBaseAttachedModule();
+ message.moduleType = object.moduleType ?? 0;
+ message.rotation = object.rotation ?? 0;
+ message.x = object.x ?? 0;
+ message.y = object.y ?? 0;
+ message.id = object.id ?? 0;
+ message.children = object.children?.map((e) => Attachment.fromPartial(e)) || [];
+ return message;
+ },
+};
+
+function createBaseAttachment(): Attachment {
+ return { id: 0, slot: 0 };
+}
+
+export const Attachment = {
+ encode(message: Attachment, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
+ if (message.id !== 0) {
+ writer.uint32(8).uint32(message.id);
+ }
+ if (message.slot !== 0) {
+ writer.uint32(16).uint32(message.slot);
+ }
+ return writer;
+ },
+
+ decode(input: _m0.Reader | Uint8Array, length?: number): Attachment {
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
+ let end = length === undefined ? reader.len : reader.pos + length;
+ const message = createBaseAttachment();
+ while (reader.pos < end) {
+ const tag = reader.uint32();
+ switch (tag >>> 3) {
+ case 1:
+ if (tag != 8) {
+ break;
+ }
+
+ message.id = reader.uint32();
+ continue;
+ case 2:
+ if (tag != 16) {
+ break;
+ }
+
+ message.slot = reader.uint32();
+ continue;
+ }
+ if ((tag & 7) == 4 || tag == 0) {
+ break;
+ }
+ reader.skipType(tag & 7);
+ }
+ return message;
+ },
+
+ fromJSON(object: any): Attachment {
+ return { id: isSet(object.id) ? Number(object.id) : 0, slot: isSet(object.slot) ? Number(object.slot) : 0 };
+ },
+
+ toJSON(message: Attachment): unknown {
+ const obj: any = {};
+ message.id !== undefined && (obj.id = Math.round(message.id));
+ message.slot !== undefined && (obj.slot = Math.round(message.slot));
+ return obj;
+ },
+
+ create<I extends Exact<DeepPartial<Attachment>, I>>(base?: I): Attachment {
+ return Attachment.fromPartial(base ?? {});
+ },
+
+ fromPartial<I extends Exact<DeepPartial<Attachment>, I>>(object: I): Attachment {
+ const message = createBaseAttachment();
+ message.id = object.id ?? 0;
+ message.slot = object.slot ?? 0;
return message;
},
};
M protocol/src/lib.rs => protocol/src/lib.rs +59 -2
@@ 1,9 1,10 @@
use crate::message_c2s::{
MessageC2SAuthenticateAndBeamOut, MessageC2SChat, MessageC2SGoodbye, MessageC2SHello,
- MessageC2SInput, MessageC2SMouseInput, MessageC2SPing,
+ MessageC2SInput, MessageC2SModuleGrabBegin, MessageC2SModuleGrabEnd, MessageC2SMouseInput, MessageC2SPing,
};
use crate::message_s2c::{
MessageS2CChat, MessageS2CGoodbye, MessageS2CHello, MessageS2CModulesUpdate,
+ MessageS2CModuleAdd, MessageS2CModuleRemove, MessageS2CModuleTreeUpdate,
MessageS2CPlanetData, MessageS2CPlayersUpdate, MessageS2CPong,
};
use crate::planet::PlanetType;
@@ 12,7 13,7 @@ use protobuf::{Enum, Message};
use std::error::Error;
include!(concat!(env!("OUT_DIR"), "/protos/mod.rs"));
-pub const PROTOCOL_VERSION: u32 = 4;
+pub const PROTOCOL_VERSION: u32 = 5;
pub mod api;
@@ 25,6 26,8 @@ pub enum MessageC2S {
Input(MessageC2SInput),
AuthenticateAndBeamOut(MessageC2SAuthenticateAndBeamOut),
MouseInput(MessageC2SMouseInput),
+ ModuleGrabBegin(MessageC2SModuleGrabBegin),
+ ModuleGrabEnd(MessageC2SModuleGrabEnd),
}
#[derive(Debug)]
@@ 36,6 39,9 @@ pub enum MessageS2C {
PlayersUpdate(MessageS2CPlayersUpdate),
PlanetData(MessageS2CPlanetData),
ModulesUpdate(MessageS2CModulesUpdate),
+ ModuleTreeUpdate(MessageS2CModuleTreeUpdate),
+ ModuleAdd(MessageS2CModuleAdd),
+ ModuleRemove(MessageS2CModuleRemove),
}
impl TryFrom<&[u8]> for MessageC2S {
@@ 73,6 79,16 @@ impl TryFrom<&[u8]> for MessageC2S {
{
MessageC2S::MouseInput(MessageC2SMouseInput::parse_from_bytes(&pkt.packet_data)?)
}
+ _id if _id
+ == message_c2s::message_c2smodule_grab_begin::Packet_info::type_.value() as i64 =>
+ {
+ MessageC2S::ModuleGrabBegin(MessageC2SModuleGrabBegin::parse_from_bytes(&pkt.packet_data)?)
+ }
+ _id if _id
+ == message_c2s::message_c2smodule_grab_end::Packet_info::type_.value() as i64 =>
+ {
+ MessageC2S::ModuleGrabEnd(MessageC2SModuleGrabEnd::parse_from_bytes(&pkt.packet_data)?)
+ }
_id => {
return Err(format!("Unrecognized C2S packet {}", _id).into());
}
@@ 115,6 131,14 @@ impl TryInto<Vec<u8>> for MessageC2S {
message_c2s::message_c2smouse_input::Packet_info::type_.value(),
p.write_to_bytes()?,
),
+ MessageC2S::ModuleGrabBegin(p) => (
+ message_c2s::message_c2smodule_grab_begin::Packet_info::type_.value(),
+ p.write_to_bytes()?,
+ ),
+ MessageC2S::ModuleGrabEnd(p) => (
+ message_c2s::message_c2smodule_grab_end::Packet_info::type_.value(),
+ p.write_to_bytes()?,
+ ),
};
let pkt = PacketWrapper {
@@ 165,6 189,27 @@ impl TryFrom<&[u8]> for MessageS2C {
&pkt.packet_data,
)?)
}
+ _id if _id
+ == message_s2c::message_s2cmodule_tree_update::Packet_info::type_.value() as i64 =>
+ {
+ MessageS2C::ModuleTreeUpdate(MessageS2CModuleTreeUpdate::parse_from_bytes(
+ &pkt.packet_data,
+ )?)
+ }
+ _id if _id
+ == message_s2c::message_s2cmodule_add::Packet_info::type_.value() as i64 =>
+ {
+ MessageS2C::ModuleAdd(MessageS2CModuleAdd::parse_from_bytes(
+ &pkt.packet_data,
+ )?)
+ }
+ _id if _id
+ == message_s2c::message_s2cmodule_remove::Packet_info::type_.value() as i64 =>
+ {
+ MessageS2C::ModuleRemove(MessageS2CModuleRemove::parse_from_bytes(
+ &pkt.packet_data,
+ )?)
+ }
_ => {
return Err("Not a S2C packet".into());
}
@@ 207,6 252,18 @@ impl TryInto<Vec<u8>> for MessageS2C {
message_s2c::message_s2cmodules_update::Packet_info::type_.value(),
p.write_to_bytes()?,
),
+ MessageS2C::ModuleTreeUpdate(p) => (
+ message_s2c::message_s2cmodule_tree_update::Packet_info::type_.value(),
+ p.write_to_bytes()?,
+ ),
+ MessageS2C::ModuleAdd(p) => (
+ message_s2c::message_s2cmodule_add::Packet_info::type_.value(),
+ p.write_to_bytes()?,
+ ),
+ MessageS2C::ModuleRemove(p) => (
+ message_s2c::message_s2cmodule_remove::Packet_info::type_.value(),
+ p.write_to_bytes()?,
+ ),
};
let pkt = PacketWrapper {
M protocol/src/pbuf/message_s2c.proto => protocol/src/pbuf/message_s2c.proto +14 -2
@@ 50,8 50,20 @@ message MessageS2CModulesUpdate {
repeated protocol.module.Module modules = 1;
}
-message MessageS2CUpdateModuleTree {
+message MessageS2CModuleTreeUpdate {
enum packet_info { unknown = 0; type = 0x0c; }
- // tree
+ repeated protocol.module.AttachedModule tree = 1;
+}
+
+message MessageS2CModuleAdd {
+ enum packet_info { unknown = 0; type = 0x0d; }
+
+ protocol.module.AttachedModule module = 1;
+}
+
+message MessageS2CModuleRemove {
+ enum packet_info { unknown = 0; type = 0x0e; }
+
+ protocol.module.AttachedModule module = 1;
}
M protocol/src/pbuf/module.proto => protocol/src/pbuf/module.proto +2 -1
@@ 6,6 6,7 @@ message Module {
double rotation = 2;
double x = 3;
double y = 4;
+ bool is_on = 5;
}
message AttachedModule {
ModuleType module_type = 1;
@@ 13,7 14,7 @@ message AttachedModule {
double x = 3;
double y = 4;
uint32 id = 5;
- repeated Attachment children
+ repeated Attachment children = 6;
}
message Attachment {
uint32 id = 1;