Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | 1x 33x 33x 33x 3x 33x 5x 33x 3x 33x 5x 33x 4x 33x 2x 2x 2x 33x | /**
* usePauseMenu Hook - State management for pause menu
*
* Manages:
* - Pause menu visibility
* - Active submenu (controls, settings)
* - Confirmation dialog state
*/
import { useCallback, useState } from "react";
export type PauseSubmenu = "main" | "controls" | "settings" | null;
export interface ConfirmDialogState {
readonly isOpen: boolean;
readonly title: string;
readonly titleKorean: string;
readonly message: string;
readonly messageKorean: string;
readonly onConfirm: () => void;
}
export interface UsePauseMenuResult {
readonly activeSubmenu: PauseSubmenu;
readonly confirmDialog: ConfirmDialogState;
readonly showControls: () => void;
readonly showSettings: () => void;
readonly closeSubmenu: () => void;
readonly openConfirmDialog: (config: Omit<ConfirmDialogState, "isOpen">) => void;
readonly closeConfirmDialog: () => void;
readonly confirmAndClose: () => void;
}
const defaultConfirmDialog: ConfirmDialogState = {
isOpen: false,
title: "",
titleKorean: "",
message: "",
messageKorean: "",
onConfirm: () => {},
};
/**
* Hook for managing pause menu state
*/
export function usePauseMenu(): UsePauseMenuResult {
const [activeSubmenu, setActiveSubmenu] = useState<PauseSubmenu>("main");
const [confirmDialog, setConfirmDialog] = useState<ConfirmDialogState>(defaultConfirmDialog);
const showControls = useCallback(() => {
setActiveSubmenu("controls");
}, []);
const showSettings = useCallback(() => {
setActiveSubmenu("settings");
}, []);
const closeSubmenu = useCallback(() => {
setActiveSubmenu("main");
}, []);
const openConfirmDialog = useCallback(
(config: Omit<ConfirmDialogState, "isOpen">) => {
setConfirmDialog({
...config,
isOpen: true,
});
},
[]
);
const closeConfirmDialog = useCallback(() => {
setConfirmDialog(defaultConfirmDialog);
}, []);
const confirmAndClose = useCallback(() => {
Eif (confirmDialog.onConfirm) {
confirmDialog.onConfirm();
}
closeConfirmDialog();
}, [confirmDialog, closeConfirmDialog]);
return {
activeSubmenu,
confirmDialog,
showControls,
showSettings,
closeSubmenu,
openConfirmDialog,
closeConfirmDialog,
confirmAndClose,
};
}
|