import EventEmitter from '../../utils/eventemitter/EventEmitter'; export default GroupNavigator; declare namespace GroupNavigator { /** * Callback that determines whether a target can receive focus. * * @param gameOject - Target game object. * @returns True if focus is enabled. */ type FocusEnableCallbackType = (gameOject: Phaser.GameObjects.GameObject) => boolean; /** * Configuration options for creating a GroupNavigator. */ interface IConfig { /** * Enable group navigation. */ enable?: boolean, /** * Initial target list. */ targets?: Phaser.GameObjects.GameObject[], /** * Column count for grid navigation. */ columns?: number, /** * Callback that controls target focusability. */ getFocusEnableCallback?: FocusEnableCallbackType, /** * Data key used to determine focusability. */ focusEnableDataKey?: string, /** * Property key used to determine focusability. */ focusEnableKey?: string, /** * Event emitter instance or false to disable. */ eventEmitter?: EventEmitter | false, } } /** * Navigator for moving focus across a group of game objects. */ declare class GroupNavigator extends EventEmitter { /** * Create a GroupNavigator with scene and config. * * @param scene - Scene instance. * @param config - Configuration options. */ constructor(scene?: any, config?: GroupNavigator.IConfig); /** * Create a GroupNavigator with config only. * * @param config - Configuration options. */ constructor(config: GroupNavigator.IConfig); /** * Currently focused target. */ readonly focusedTarget: Phaser.GameObjects.GameObject | null; /** * Current focus index in grid form. */ readonly focusIndex: { x: number, y: number }; /** * Target collection in list or grid form. */ targets: Phaser.GameObjects.GameObject[] | Phaser.GameObjects.GameObject[][]; /** * Enable or disable navigation. * * @param enable - Enable state. * @returns This GroupNavigator instance. */ setEnable(enable?: boolean): this; /** * Navigation enable state. */ enable: boolean; /** * Set navigation targets. * * @param targets - Target list. * @param columns - Column count for grid layout. * @returns This GroupNavigator instance. */ setTargets( targets?: Phaser.GameObjects.GameObject[], columns?: number ): this; /** * Set focus-enable data key. * * @param dataKey - Data key name. * @returns This GroupNavigator instance. */ setFocusEnableDataKey(dataKey?: string): this; /** * Set focus-enable property key. * * @param key - Property key name. * @returns This GroupNavigator instance. */ setFocusEnableKey(key?: string): this; /** * Set custom focus-enable callback. * * @param callback - Focus-enable callback. * @returns This GroupNavigator instance. */ setGetFocusEnableCallback( callback?: GroupNavigator.FocusEnableCallbackType ): this; /** * Get currently focused target. * * @returns Focused game object or null. */ getFocusedTarget(): Phaser.GameObjects.GameObject | null; /** * Focus the first available target. * * @returns This GroupNavigator instance. */ first(): this; /** * Focus the last available target. * * @returns This GroupNavigator instance. */ last(): this; /** * Focus the next target. * * @returns This GroupNavigator instance. */ next(): this; /** * Focus the previous target. * * @returns This GroupNavigator instance. */ previous(): this; /** * Focus the target in next row. * * @returns This GroupNavigator instance. */ nextRow(): this; /** * Focus the target in previous row. * * @returns This GroupNavigator instance. */ previousRow(): this; /** * Focus a specific target. * * @param gameObject - Target game object. * @returns This GroupNavigator instance. */ focus(gameObject?: Phaser.GameObjects.GameObject): this; /** * Clear current focus. * * @returns This GroupNavigator instance. */ blur(): this; /** * Add a target. * * @param gameObject - Target game object. * @returns This GroupNavigator instance. */ addTarget(gameObject: Phaser.GameObjects.GameObject): this; /** * Insert a target at index. * * @param gameObject - Target game object. * @param index - Insert index. * @returns This GroupNavigator instance. */ insertTarget( gameObject: Phaser.GameObjects.GameObject, index: number ): this; /** * Remove a target. * * @param gameObject - Target game object. * @returns This GroupNavigator instance. */ removeTarget(gameObject: Phaser.GameObjects.GameObject): this; }