Initial commit
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
@Packet name GuildDataMemberChanged
|
||||
@Packet identifier 193
|
||||
@Description Holds data about a single guild member's changed properties
|
||||
@Data -
|
||||
@Structure -
|
||||
*/
|
||||
|
||||
const encoder = new TextEncoder();
|
||||
|
||||
module.exports = function (data) {
|
||||
const packetLength = 5 + 1 + 1 +
|
||||
("isOnline" in data ? 1 : 0) +
|
||||
("permission" in data ? 4 : 0) +
|
||||
("level" in data ? 2 : 0) +
|
||||
("name" in data ? 1 + data.name.length : 0);
|
||||
const buffer = new ArrayBuffer(packetLength);
|
||||
const view = new DataView(buffer);
|
||||
|
||||
let offset = 6;
|
||||
let mask = 0;
|
||||
console.info(packetLength, "isOnline" in data, "permission" in data, "level" in data, "name" in data)
|
||||
if ("isOnline" in data) {
|
||||
mask |= (1 << 0);
|
||||
view.setUint8(offset + 1, data.isOnline);
|
||||
|
||||
offset += 1;
|
||||
};
|
||||
|
||||
if ("permission" in data) {
|
||||
mask |= (1 << 1);
|
||||
view.setUint32(offset + 1, data.permission);
|
||||
|
||||
offset += 4;
|
||||
};
|
||||
|
||||
if ("level" in data) {
|
||||
mask |= (1 << 2);
|
||||
view.setUint16(offset + 1, data.level);
|
||||
|
||||
offset += 2;
|
||||
};
|
||||
|
||||
if ("name" in data) {
|
||||
mask |= (1 << 3);
|
||||
|
||||
const nameBuffer = encoder.encode(data.name);
|
||||
view.setUint8(offset + 1, nameBuffer.byteLength);
|
||||
new Uint8Array(buffer, offset + 2).set(nameBuffer);
|
||||
|
||||
offset += 1 + nameBuffer.byteLength;
|
||||
};
|
||||
|
||||
view.setUint8(0, 193);
|
||||
view.setUint8(1, packetLength);
|
||||
view.setUint8(2, mask);
|
||||
view.setUint32(3, data.id);
|
||||
|
||||
return buffer;
|
||||
};
|
||||
Reference in New Issue
Block a user