Merge pull request #1 from DayKev/pr/5978-review

Add all active challenges to default challenge session name if possible
This commit is contained in:
Matheus Rabello Noya Alves 2025-08-11 19:23:20 +01:00 committed by GitHub
commit eef6818970
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 34 additions and 12 deletions

View File

@ -3,7 +3,7 @@ import type { InputFieldConfig } from "./form-modal-ui-handler";
import { FormModalUiHandler } from "./form-modal-ui-handler"; import { FormModalUiHandler } from "./form-modal-ui-handler";
import type { ModalConfig } from "./modal-ui-handler"; import type { ModalConfig } from "./modal-ui-handler";
export default class RenameRunFormUiHandler extends FormModalUiHandler { export class RenameRunFormUiHandler extends FormModalUiHandler {
getModalTitle(_config?: ModalConfig): string { getModalTitle(_config?: ModalConfig): string {
return i18next.t("menu:renamerun"); return i18next.t("menu:renamerun");
} }

View File

@ -499,27 +499,49 @@ class SessionSlot extends Phaser.GameObjects.Container {
this.add(this.loadingLabel); this.add(this.loadingLabel);
} }
decideFallback(data: SessionSaveData) { /**
let fallbackName; * Generates a name for sessions that don't have a name yet.
* @param data - The {@linkcode SessionSaveData} being checked
* @returns The default name for the given data.
*/
decideFallback(data: SessionSaveData): string {
let fallbackName = `${GameMode.getModeName(data.gameMode)}`;
switch (data.gameMode) { switch (data.gameMode) {
case GameModes.CLASSIC: case GameModes.CLASSIC:
fallbackName = `${GameMode.getModeName(data.gameMode)} (${globalScene.gameData.gameStats.classicSessionsPlayed + 1})`; fallbackName += ` (${globalScene.gameData.gameStats.classicSessionsPlayed + 1})`;
break; break;
case GameModes.ENDLESS: case GameModes.ENDLESS:
case GameModes.SPLICED_ENDLESS: case GameModes.SPLICED_ENDLESS:
fallbackName = `${GameMode.getModeName(data.gameMode)} (${globalScene.gameData.gameStats.endlessSessionsPlayed + 1})`; fallbackName += ` (${globalScene.gameData.gameStats.endlessSessionsPlayed + 1})`;
break; break;
case GameModes.DAILY: { case GameModes.DAILY: {
const runDay = new Date(data.timestamp).toLocaleDateString(); const runDay = new Date(data.timestamp).toLocaleDateString();
fallbackName = `${GameMode.getModeName(data.gameMode)} (${runDay})`; fallbackName += ` (${runDay})`;
break; break;
} }
case GameModes.CHALLENGE: case GameModes.CHALLENGE: {
fallbackName = data.challenges const activeChallenges = data.challenges.filter(c => c.value !== 0);
.find(c => c.value !== 0) if (activeChallenges.length === 0) {
?.toChallenge() break;
.getName(); }
fallbackName = "";
for (const challenge of activeChallenges.slice(0, 3)) {
if (fallbackName !== "") {
fallbackName += ", ";
}
fallbackName += challenge.toChallenge().getName();
}
if (activeChallenges.length > 3) {
fallbackName += ", ...";
} else if (fallbackName === "") {
// Something went wrong when retrieving the names of the active challenges,
// so fall back to just naming the run "Challenge"
fallbackName = `${GameMode.getModeName(data.gameMode)}`;
}
break; break;
}
} }
return fallbackName; return fallbackName;
} }

View File

@ -60,7 +60,7 @@ import { addWindow } from "#ui/ui-theme";
import { UnavailableModalUiHandler } from "#ui/unavailable-modal-ui-handler"; import { UnavailableModalUiHandler } from "#ui/unavailable-modal-ui-handler";
import { executeIf } from "#utils/common"; import { executeIf } from "#utils/common";
import i18next from "i18next"; import i18next from "i18next";
import RenameRunFormUiHandler from "./rename-run-ui-handler"; import { RenameRunFormUiHandler } from "./rename-run-ui-handler";
const transitionModes = [ const transitionModes = [
UiMode.SAVE_SLOT, UiMode.SAVE_SLOT,