UNPKG

@colyseus/core

Version:

Multiplayer Framework for Node.js.

97 lines (95 loc) 2.88 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // packages/core/src/matchmaker/LocalDriver/LocalDriver.ts var LocalDriver_exports = {}; __export(LocalDriver_exports, { LocalDriver: () => LocalDriver }); module.exports = __toCommonJS(LocalDriver_exports); var import_Debug = require("../../Debug.cjs"); var import_Query = require("./Query.cjs"); var LocalDriver = class { constructor() { this.rooms = []; } has(roomId) { return this.rooms.some((room) => room.roomId === roomId); } query(conditions, sortOptions) { const query = new import_Query.Query(this.rooms, conditions); if (sortOptions) { query.sort(sortOptions); } return query.filter(conditions); } cleanup(processId) { const cachedRooms = this.query({ processId }); (0, import_Debug.debugMatchMaking)("removing stale rooms by processId %s (%s rooms found)", processId, cachedRooms.length); cachedRooms.forEach((room) => this.remove(room.roomId)); return Promise.resolve(); } findOne(conditions, sortOptions) { const query = new import_Query.Query(this.rooms, conditions); if (sortOptions) { query.sort(sortOptions); } return query; } update(room, operations) { if (operations.$set) { for (const field in operations.$set) { if (operations.$set.hasOwnProperty(field)) { room[field] = operations.$set[field]; } } } if (operations.$inc) { for (const field in operations.$inc) { if (operations.$inc.hasOwnProperty(field)) { room[field] += operations.$inc[field]; } } } return true; } persist(room, create = false) { if (!create) { return false; } this.rooms.push(room); return true; } remove(roomId) { const roomIndex = this.rooms.findIndex((room) => room.roomId === roomId); if (roomIndex !== -1) { this.rooms.splice(roomIndex, 1); return true; } return false; } clear() { this.rooms = []; } shutdown() { } }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { LocalDriver });