Still figuring out initial matchmaking hang (FROSTBITE). Lots of other changes.

- Added missing room images
- Removed internal rooms and disallow cloning some rooms
- License fixes
- Switched target to 20200306
- Socket header fixes
- Sockets are closed upon shutdown
    * Sockets persist after being destroyed, fix
- Config changes for 20200306
- Settings initialized
- Name generation words cannot be longer than 9 characters
- Dorm generation changes and fixes
- Added some settings keys
- Matchmaking additions
    * Instances are not yet updated to be or not to be in-progress
- Instance fixes and logging
- Image operation fixes
- DisplayName route start
- Challenge route start
- Default Amplitude key (i can see althe Amplitude requests are ignored
- Rate limiting ease
- GameConfigs properly queried and sent
- Many 'bulk' endpoints were added in or around 20200306
- Objective routes started
- DormRoom redirection in v2/name
- Client doesn't care if it gets 200 when setting prefs
- Balance/storefronts started
- Matchmaking goto/room timer and fixes
- Selfhosted Photon addition on the client sends matchmaking /photonregionpings, ignore since Photon is only one server in one region
This commit is contained in:
2025-04-13 01:06:23 -04:00
parent 1cfd0426dd
commit 3b6d905180
89 changed files with 990 additions and 421 deletions

View File

@@ -1,5 +1,5 @@
/* Galvanic Corrosion - Rec Room custom server for communities.
<https://gitea.proxnet.dev/zombieb-galvanic-corrosion>
<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
@@ -17,6 +17,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */
import { APIUtils } from "../../apiutils.ts";
import express from "express";
import { AuthType } from "../../data/users.ts";
import { CurrencyType, StorefrontBalanceType } from "../../data/content/storefronts.ts";
export const route = APIUtils.createRouter('/storefronts');
@@ -26,6 +28,7 @@ interface StorefrontFetchParams {
route.router.get('/v3/giftdropstore/:id',
APIUtils.Authentication,
APIUtils.AuthenticationType(AuthType.Game),
(rq: express.Request<StorefrontFetchParams>, rs: express.Response) => {
if (!rq.params.id) {
@@ -39,4 +42,28 @@ route.router.get('/v3/giftdropstore/:id',
});
},
);
interface BalanceParams {
currencyType?: string
}
route.router.get('/v4/balance/:currencyType',
APIUtils.Authentication,
APIUtils.AuthenticationType(AuthType.Game),
(rq: express.Request<BalanceParams>, rs: express.Response) => {
const parsedCurrencyType = parseInt(rq.params.currencyType ? rq.params.currencyType : "2");
if (isNaN(parsedCurrencyType)) {
rs.sendStatus(400);
} else {
rs.json([{
Balance: 0,
BalanceType: StorefrontBalanceType.NonPurchasedNonP2P,
CurrencyType: parsedCurrencyType
}]);
}
},
);