Allow 1v1/2v2/3v3 tournaments to show on the sidebar for streams
Some checks are pending
E2E Tests / e2e (push) Waiting to run
Tests and checks on push / run-checks-and-tests (push) Waiting to run
Updates translation progress / update-translation-progress-issue (push) Waiting to run

This commit is contained in:
Kalle
2026-04-11 16:34:55 +03:00
parent 824a00bd40
commit 0fbd851b91
3 changed files with 30 additions and 7 deletions

View File

@@ -21,6 +21,7 @@ export type SidebarStream = {
subtitle: string;
startsAt: number;
tier: TournamentTierNumber | null;
membersPerTeam?: number;
tentativeTier?: number;
peakXp?: number;
twitchUsername?: string;
@@ -31,7 +32,6 @@ export function getLiveTournamentStreams(): SidebarStream[] {
for (const tournament of RunningTournaments.all) {
if (tournament.isLeagueDivision) continue;
if (tournament.minMembersPerTeam < 4) continue;
streams.push({
id: `tournament-${tournament.ctx.id}`,
@@ -41,6 +41,7 @@ export function getLiveTournamentStreams(): SidebarStream[] {
subtitle: deriveCurrentRound(tournament),
startsAt: dateToDatabaseTimestamp(tournament.ctx.startTime),
tier: tournament.ctx.tier,
membersPerTeam: tournament.minMembersPerTeam,
});
}

View File

@@ -25,14 +25,28 @@ export function rank(
return [...live, ...upcoming].map((rs) => rs.stream);
}
const SMALL_TOURNAMENT_PENALTY = 4;
export function tournamentTierToScore(
tier: TournamentTierNumber | null,
membersPerTeam?: number,
): number {
return tier ?? 9;
const base = tier ?? 9;
const isSmallTeamSize = (membersPerTeam ?? 4) < 4;
return Math.min(9, base + (isSmallTeamSize ? SMALL_TOURNAMENT_PENALTY : 0));
}
export function upcomingTournamentTierToScore(tier: number): number {
return Math.min(9, tier + 4);
export function upcomingTournamentTierToScore(
tier: number,
membersPerTeam?: number,
): number {
const isSmallTeamSize = (membersPerTeam ?? 4) < 4;
return Math.min(
9,
tier + 4 + (isSmallTeamSize ? SMALL_TOURNAMENT_PENALTY : 0),
);
}
export function sendouQTierToScore(tier: {

View File

@@ -152,7 +152,10 @@ async function combinedStreams(): Promise<SidebarStream[]> {
for (const stream of tournamentStreams) {
ranked.push({
stream,
score: StreamRanking.tournamentTierToScore(stream.tier),
score: StreamRanking.tournamentTierToScore(
stream.tier,
stream.membersPerTeam,
),
});
}
@@ -215,7 +218,8 @@ async function combinedStreams(): Promise<SidebarStream[]> {
if (event.startTime < nowTimestamp) continue;
if (event.startTime > threeDaysFromNow) continue;
if (event.hidden) continue;
if ((event.minMembersPerTeam ?? 4) < 4) continue;
const membersPerTeam = event.minMembersPerTeam ?? 4;
ranked.push({
stream: {
@@ -226,9 +230,13 @@ async function combinedStreams(): Promise<SidebarStream[]> {
subtitle: "",
startsAt: event.startTime,
tier: (event.tier as TournamentTierNumber) ?? null,
membersPerTeam,
tentativeTier: event.tentativeTier ?? undefined,
},
score: StreamRanking.upcomingTournamentTierToScore(effectiveTier),
score: StreamRanking.upcomingTournamentTierToScore(
effectiveTier,
membersPerTeam,
),
});
}