// import * as Phaser from 'phaser'; import OverlapSizer from '../overlapsizer/OverlapSizer'; export default Knob; declare namespace Knob { /** * Input modes supported by the knob control. */ type InputTypes = 0 | 1 | -1 | 'drag' | 'pan' | 'click' | 'none'; /** * Callback used to format knob value text. */ type TextFormatCallbackType = ( /** * Current knob value. */ value: number ) => string; /** * Callback invoked when knob value changes. */ type ValueChangeCallbackType = ( /** * New knob value. */ newValue: number, /** * Previous knob value. */ oldValue: number, /** * Knob instance. */ knob: Knob ) => void; /** * Configuration options for creating a knob component. */ interface IConfig extends OverlapSizer.IConfig { /** * Optional background game object. */ background?: Phaser.GameObjects.GameObject, /** * Bar color. */ barColor?: number | string, /** * Track color. */ trackColor?: number | string, /** * Center color. */ centerColor?: number | string, /** * Thickness of bar/track. */ thickness?: number, /** * Start angle in radians. */ startAngle?: number, /** * Set to true to draw anticlockwise. */ anticlockwise?: boolean, /** * Display depth of internal knob graphics. */ knobDepth?: number, /** * Optional text game object. */ text?: Phaser.GameObjects.GameObject, /** * Callback used to format displayed value text. */ textFormatCallback?: TextFormatCallbackType, /** * Scope used when invoking text format callback. */ textFormatCallbackScope?: object, /** * Input mode. */ input?: InputTypes, /** * Initial value. */ value?: number, /** * Gap between track and center. */ gap?: number, easeValue?: { /** * Ease duration in milliseconds. */ duration?: number, /** * Ease function name. */ ease?: string }, /** * Callback fired when value changes. */ valuechangeCallback: ValueChangeCallbackType, /** * Set to true to enable input interaction. */ enable?: boolean, } } /** * Circular knob UI component with drag/click value input. */ declare class Knob extends OverlapSizer { /** * Create a knob component. * * @param scene - Scene that owns this component. * @param config - Optional knob configuration. */ constructor( scene: Phaser.Scene, config?: Knob.IConfig ); /** * Current knob value. */ value: number; /** * Get value, optionally mapped to a custom range. * * @param min - Optional minimum of output range. * @param max - Optional maximum of output range. * @returns Current value. */ getValue( min?: number, max?: number ): number; /** * Set value, optionally by mapping from a custom range. * * @param value - Value to set. * @param min - Optional minimum of input range. * @param max - Optional maximum of input range. * @returns This component instance. */ setValue( value?: number, min?: number, max?: number ): this; /** * Add delta to current value. * * @param inc - Increment value. * @param min - Optional minimum of input range. * @param max - Optional maximum of input range. * @returns This component instance. */ addValue( inc?: number, min?: number, max?: number ): this; /** * Ease value to target. * * @param value - Target value. * @param min - Optional minimum of input range. * @param max - Optional maximum of input range. * @returns This component instance. */ easeValueTo( value?: number, min?: number, max?: number ): this; /** * Stop current value easing. * * @returns This component instance. */ stopEaseValue(): this; /** * Set ease duration. * * @param duration - Duration in milliseconds. * @returns This component instance. */ setEaseValueDuration(duration: number): this; /** * Set ease function. * * @param ease - Ease function name. * @returns This component instance. */ setEaseValueFunction(ease: string): this; /** * Enable or disable knob interaction. * * @param enable - True to enable interaction. * @returns This component instance. */ setEnable(enable?: boolean): this; /** * Current enabled state. */ enable: boolean; }