* Dorm is not properly cloned (fix this) * Basic matchmaking implementation * Goto route * Goto DormRoom
62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
/* Galvanic Corrosion - Rec Room custom server for communities.
|
|
<https://gitea.proxnet.dev/zombieb-galvanic-corrosion>
|
|
Copyright (C) 2025 @zombieb (Discord / proxnet Gitea)
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU Affero General Public License as published
|
|
by the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU Affero General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Affero General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
|
|
|
import { APIUtils } from "../../apiutils.ts";
|
|
import Matchmaking from "../../data/live/base.ts";
|
|
import { MatchmakingErrorCode } from "../../data/live/types.ts";
|
|
import { AuthType } from "../../data/users.ts";
|
|
import express from "express";
|
|
|
|
export const route = APIUtils.createRouter('/goto');
|
|
|
|
interface MatchmakingParams {
|
|
roomName?: string,
|
|
subRoomName?: string
|
|
}
|
|
|
|
route.router.post('/room/:roomName',
|
|
|
|
APIUtils.Authentication,
|
|
APIUtils.AuthenticationType(AuthType.Game),
|
|
|
|
async (rq: express.Request<MatchmakingParams>, rs: express.Response) => {
|
|
if (!rq.params.roomName) {
|
|
rs.json({
|
|
errorCode: MatchmakingErrorCode.NoSuchRoom
|
|
});
|
|
return;
|
|
}
|
|
rs.json(await Matchmaking.matchmake({ profile: rs.locals.profile, roomName: rq.params.roomName }));
|
|
},
|
|
|
|
);
|
|
route.router.post('/room/:roomName/:subRoomName',
|
|
|
|
APIUtils.Authentication,
|
|
APIUtils.AuthenticationType(AuthType.Game),
|
|
|
|
async (rq: express.Request<MatchmakingParams>, rs: express.Response) => {
|
|
if (!rq.params.roomName) {
|
|
rs.json({
|
|
errorCode: MatchmakingErrorCode.NoSuchRoom
|
|
});
|
|
return;
|
|
}
|
|
rs.json(await Matchmaking.matchmake({ profile: rs.locals.profile, roomName: rq.params.roomName, subRoomName: rq.params.subRoomName }));
|
|
},
|
|
|
|
) |