- Introduce requiredDailyKeys to track daily puzzle completion across genres. - Implement logic to show an ExtraPuzzlesPopover when all daily puzzles are completed. - Add localized messages for extra puzzles in both English and German. - Update GenrePage and Home components to pass requiredDailyKeys to the Game component.
48 lines
1.1 KiB
TypeScript
48 lines
1.1 KiB
TypeScript
export type ExternalPuzzle = {
|
|
id: string;
|
|
nameDe: string;
|
|
nameEn: string;
|
|
url: string;
|
|
isActive?: boolean;
|
|
};
|
|
|
|
/**
|
|
* Zentrale Liste externer Rätselangebote.
|
|
*
|
|
* Erweiterung: Einfach neuen Eintrag in dieses Array hinzufügen.
|
|
*/
|
|
export const externalPuzzles: ExternalPuzzle[] = [
|
|
{
|
|
id: 'pastpuzzle',
|
|
nameDe: 'Past Puzzle',
|
|
nameEn: 'Past Puzzle',
|
|
url: 'https://www.pastpuzzle.de/#/',
|
|
isActive: true,
|
|
},
|
|
{
|
|
id: 'woerdle',
|
|
nameDe: 'Wördle',
|
|
nameEn: 'Wördle',
|
|
url: 'https://www.wördle.de',
|
|
isActive: true,
|
|
},
|
|
{
|
|
id: 'ciddle',
|
|
nameDe: 'Ciddle',
|
|
nameEn: 'Ciddle',
|
|
url: 'https://ciddle.winklerweb.net',
|
|
isActive: true,
|
|
},
|
|
];
|
|
|
|
export function getRandomExternalPuzzle(): ExternalPuzzle | null {
|
|
const activePuzzles = externalPuzzles.filter(p => p.isActive !== false);
|
|
if (activePuzzles.length === 0) {
|
|
return null;
|
|
}
|
|
const index = Math.floor(Math.random() * activePuzzles.length);
|
|
return activePuzzles[index] ?? null;
|
|
}
|
|
|
|
|