62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
export interface Settings {
|
||
port: number;
|
||
password: string;
|
||
minimum_players: number;
|
||
maximum_players: number;
|
||
waiting_time: number;
|
||
port_range_min: number;
|
||
port_range_max: number;
|
||
games: {
|
||
name: string;
|
||
exe: string;
|
||
}[];
|
||
log_level: number;
|
||
/** Supabase project URL (Settings → API) */
|
||
supabase_url?: string;
|
||
/** Service role key — server only; never ship to Unity or clients */
|
||
supabase_service_role_key?: string;
|
||
/** Secret used to sign session tokens returned to Unity */
|
||
auth_jwt_secret?: string;
|
||
/**
|
||
* When true, POST /auth/purchase-rc adds RC from a named pack without validating a store receipt.
|
||
* Set false when real in-app purchase verification is wired up.
|
||
*/
|
||
iap_dummy_mode?: boolean;
|
||
/** Secret for dedicated game server only: PATCH /internal/match/:matchId and .../winner */
|
||
dedicated_server_secret?: string;
|
||
/** Directory for matchmaker.log, history.log (default: "logs" under cwd) */
|
||
log_directory?: string;
|
||
}
|
||
|
||
export interface Player {
|
||
Name: string;
|
||
LastSeen: number;
|
||
/** Authenticated user id (matches public.users.id); first in room = red, second = blue */
|
||
UserId: number;
|
||
/** From latest 10 `matches` rows where user is red or blue; win if winner_id === UserId */
|
||
l10_wins: number;
|
||
l10_losses: number;
|
||
}
|
||
|
||
export interface Room {
|
||
Players: Player[];
|
||
GameName: string;
|
||
Port: number;
|
||
InitTime: number;
|
||
/** Internal runtime flag: whether the dedicated process has already been started. */
|
||
instance_started?: boolean;
|
||
/** Row id in public.matches; game server uses this with X-Dedicated-Server-Secret */
|
||
match_id?: number;
|
||
/** RC entry fee for this match (matches `public.matches.entry_fee`). */
|
||
entry_fee?: number;
|
||
/** Net RC to the winner after per-entry bet fee (derived from `entry_fee` and settings `bet_fee`). */
|
||
rc_prize?: number;
|
||
/** Only on GET / responses: authenticated user’s team (Players[0]=red, Players[1]=blue) */
|
||
your_team?: 'red' | 'blue' | null;
|
||
}
|
||
|
||
export interface QueueEntry {
|
||
Name: string;
|
||
LastSeen: number;
|
||
UserId: number;
|
||
}
|