phaser3-rex-plugins
Version:
280 lines (250 loc) • 6.8 kB
TypeScript
import LineProgressCanvas from '../lineprogresscanvas/LineProgressCanvas';
import CircularProgressCanvas from '../circularprogresscanvas/CircularProgressCanvas';
// import * as Phaser from 'phaser';
import Sizer from '../sizer/Sizer';
export default NameValueLabel;
declare namespace NameValueLabel {
/**
* Line progress canvas configuration.
*/
interface ILineProgressCanvasConfig extends LineProgressCanvas.IConfig {
/**
* Fixed shape discriminator.
*/
shape?: 'line',
}
/**
* Circular progress canvas configuration.
*/
interface ICircularProgressCanvasConfig extends CircularProgressCanvas.IConfig {
/**
* Fixed shape discriminator.
*/
shape: 'circle',
}
/**
* Callback used to format value text.
*/
type ValueTextFormatCallbackType = (
/**
* Current value.
*/
value: number,
/**
* Minimum value.
*/
min: number,
/**
* Maximum value.
*/
max: number
) => string | null;
/**
* Configuration options for creating a name-value label.
*/
interface IConfig extends Sizer.IConfig {
space?: {
left?: number,
right?: number,
top?: number,
bottom?: number,
icon?: number,
iconTop?: number,
iconBottom?: number,
iconLeft?: number,
iconRight?: number,
name?: number,
value?: number,
bar?: number,
batTop?: number,
barBottom?: number,
barLeft?: number,
barRight?: number,
action?: number,
actionTop?: number,
actionBottom?: number,
actionLeft?: number,
actionRight?: number,
},
/**
* Optional background game object.
*/
background?: Phaser.GameObjects.GameObject,
/**
* Optional icon game object.
*/
icon?: Phaser.GameObjects.GameObject,
/**
* Set to true to mask icon.
*/
iconMask?: boolean,
/**
* Optional name text game object.
*/
nameText?: Phaser.GameObjects.GameObject,
/**
* Optional value text game object.
*/
valueText?: Phaser.GameObjects.GameObject,
/**
* Progress bar shape type.
*/
barShape?: 'line' | 'circle',
/**
* Progress bar game object or bar configuration.
*/
bar?: Phaser.GameObjects.GameObject | LineProgressCanvas.IConfig | CircularProgressCanvas.IConfig,
/**
* Optional action game object.
*/
action?: Phaser.GameObjects.GameObject,
/**
* Set to true to mask action object.
*/
actionMask?: boolean,
/**
* Callback used to format value text.
*/
valueTextFormatCallback?: ValueTextFormatCallbackType,
align?: {
text?: 'left' | 'right' | 'center' | number,
title?: 'left' | 'right' | 'center' | number,
},
proportion?: {
title?: number,
separator?: number,
text?: number,
},
}
}
/**
* UI label that displays name text, value text, and optional progress bar.
*/
declare class NameValueLabel extends Sizer {
/**
* Create a name-value label.
*
* @param scene - Scene that owns this component.
* @param config - Optional component configuration.
*/
constructor(
scene: Phaser.Scene,
config?: NameValueLabel.IConfig
);
/**
* Current name text.
*/
nameText: string;
/**
* Set name text.
*
* @param value - Name text value.
* @returns This component instance.
*/
setNameText(value?: string): this;
/**
* Current value text.
*/
valueText: string;
/**
* Set value text.
*
* @param value - Value text string.
* @returns This component instance.
*/
setValueText(value?: string): this;
/**
* Current normalized bar value.
*/
barValue: number;
/**
* Set bar value.
*
* @param value - Value to set.
* @param min - Optional minimum range.
* @param max - Optional maximum range.
* @returns This component instance.
*/
setBarValue(
value: number,
min?: number,
max?: number
): this;
/**
* Ease bar value to target.
*
* @param value - Target value.
* @param min - Optional minimum range.
* @param max - Optional maximum range.
* @returns This component instance.
*/
easeBarValueTo(
value: number,
min?: number,
max?: number
): this;
/**
* Set texture on icon/action target.
*
* @param key - Texture key or texture object.
* @param frame - Optional frame name or index.
* @returns This component instance.
*/
setTexture(
key: string | Phaser.Textures.Texture,
frame?: string | number
): this;
/**
* Current texture.
*/
readonly texture: Phaser.Textures.Texture | Phaser.Textures.CanvasTexture;
/**
* Current frame.
*/
readonly frame: Phaser.Textures.Frame;
/**
* Set value and optional range.
*
* @param value - Value to set.
* @param min - Optional minimum range.
* @param max - Optional maximum range.
* @returns This component instance.
*/
setValue(
value: number,
min?: number,
max?: number
): this;
/**
* Current value.
*/
value: number;
/**
* Current minimum range value.
*/
minValue: number;
/**
* Current maximum range value.
*/
maxValue: number;
/**
* Set easing duration for value transitions.
*
* @param duration - Duration in milliseconds.
* @returns This component instance.
*/
setEaseValueDuration(duration: number): this;
/**
* Ease value to target and optional range.
*
* @param value - Target value.
* @param min - Optional minimum range.
* @param max - Optional maximum range.
* @returns This component instance.
*/
easeValueTo(
value: number,
min?: number,
max?: number
): this;
}