Add private multiplayer room codes
This commit is contained in:
1 parent
7362ca0f02
commit
19b1a67773
8 files changed
+341
-24
No files matched your search
@@ -12,6 +12,11 @@ const sent = [];
|
||||
const dispatcher = {
|
||||
broadcastMessage(opCode, data) {
|
||||
sent.push({ opCode, data: JSON.parse(data) });
|
||||
},
|
||||
matchLabelUpdate(label) {
|
||||
let data = label;
|
||||
try { data = JSON.parse(label); } catch (error) {}
|
||||
sent.push({ opCode: "label", data });
|
||||
}
|
||||
};
|
||||
const nk = { binaryToString: data => Buffer.from(data).toString("utf8") };
|
||||
@@ -25,6 +30,24 @@ state = context.matchJoin({}, logger, nk, dispatcher, 2, state, [presenceB]).sta
|
||||
assert.strictEqual(state.started, true);
|
||||
assert.strictEqual(state.slots["pilot-a"], 0);
|
||||
assert.strictEqual(state.slots["pilot-b"], 1);
|
||||
assert.ok(sent.some(entry => entry.opCode === "label" && entry.data.open === false));
|
||||
assert.strictEqual(context.normalizeRoomCode(" ab-c12! "), "ABC12");
|
||||
|
||||
const privateMatch = context.matchInit({}, logger, nk, { difficulty: 2, mode: "private", roomCode: "AB23CD", hostUserId: "pilot-a" });
|
||||
assert.strictEqual(privateMatch.label, "AB23CD");
|
||||
assert.strictEqual(privateMatch.state.difficulty, 2);
|
||||
|
||||
const roomStorage = new Map();
|
||||
const nkRooms = {
|
||||
storageRead(ops) { return ops.map(op => roomStorage.get(op.key)).filter(Boolean); },
|
||||
storageWrite(ops) { for (const op of ops) roomStorage.set(op.key, { value: op.value }); },
|
||||
storageDelete(ops) { for (const op of ops) roomStorage.delete(op.key); },
|
||||
matchCreate() { return "private-match-id"; }
|
||||
};
|
||||
const createdRoom = JSON.parse(context.rpcCreatePrivateRoom({ userId: "pilot-a" }, logger, nkRooms, JSON.stringify({ difficulty: 2 })));
|
||||
assert.strictEqual(createdRoom.room_code.length, 6);
|
||||
const joinedRoom = JSON.parse(context.rpcJoinPrivateRoom({ userId: "pilot-b" }, logger, nkRooms, JSON.stringify({ room_code: createdRoom.room_code.toLowerCase() })));
|
||||
assert.strictEqual(joinedRoom.match_id, "private-match-id");
|
||||
|
||||
function message(sender, opCode, payload) {
|
||||
return { sender, opCode, data: Buffer.from(JSON.stringify(payload)) };
|
||||
|
||||
Reference in new issue
Block a user