phaser3-rex-plugins
Version:
529 lines (490 loc) • 13.4 kB
TypeScript
// import * as Phaser from 'phaser';
import BaseSizer from '../basesizer/BaseSizer.js';
import GetBoundsConfig from '../../../plugins/utils/bounds/GetBoundsConfig.js';
export default GridSizer;
declare namespace GridSizer {
/**
* Alignment values for grid cells.
*/
type AlignTypes = number | 'center' | 'left' | 'right' | 'top' | 'bottom' |
'left-top' | 'left-center' | 'left-bottom' |
'center-top' | 'center-center' | 'center-bottom' |
'right-top' | 'right-center' | 'right-bottom';
/**
* Padding types used for children.
*/
type PaddingTypes = GetBoundsConfig.PaddingConfigType;
/**
* Callback to create a container for a grid cell.
* @param scene - The Scene to which this object belongs.
* @param x - Cell x position.
* @param y - Cell y position.
* @param config - Cell configuration.
*/
type CreateCellContainerCallbackType = (
scene: Phaser.Scene,
x: number, y: number,
config: {
/**
* Column index.
*/
column?: number,
/**
* Row index.
*/
row?: number,
/**
* Alignment for the cell.
*/
align?: GridSizer.AlignTypes,
/**
* Padding for the cell.
*/
padding?: GridSizer.PaddingTypes,
/**
* True to expand the cell.
*/
expand?: boolean,
/**
* Optional key to register the cell.
*/
key?: string
}
) => Phaser.GameObjects.GameObject;
interface IConfig extends BaseSizer.IConfig {
/**
* Initial x position.
*/
x?: number,
/**
* Initial y position.
*/
y?: number,
/**
* Initial width.
*/
width?: number,
/**
* Initial height.
*/
height?: number,
/**
* Column count.
*/
column?: number,
/**
* Row count.
*/
row?: number,
/**
* Column proportions.
*/
columnProportions?: number | number[],
/**
* Row proportions.
*/
rowProportions?: number | number[],
/**
* Spacing configuration.
*/
space?: {
/**
* Left space.
*/
left?: number,
/**
* Right space.
*/
right?: number,
/**
* Top space.
*/
top?: number,
/**
* Bottom space.
*/
bottom?: number,
/**
* Column spacing.
*/
column?: number | number[],
/**
* Row spacing.
*/
row?: number | number[],
/**
* Indent left for odd rows.
*/
indentLeftOdd?: number,
/**
* Indent left for even rows.
*/
indentLeftEven?: number,
/**
* Indent top for odd rows.
*/
indentTopOdd?: number,
/**
* Indent top for even rows.
*/
indentTopEven?: number,
},
/**
* Callback to create a container for each cell.
*/
createCellContainerCallback?: CreateCellContainerCallbackType
}
interface IAddConfig {
/**
* Column index.
*/
column?: number | undefined,
/**
* Row index or true to auto-place.
*/
row?: number | undefined | true,
/**
* Alignment for the child.
*/
align?: GridSizer.AlignTypes,
/**
* Padding around the child.
*/
padding?: GridSizer.PaddingTypes,
/**
* Expand settings.
*/
expand?: boolean |
{
/**
* Expand width.
*/
width?: boolean,
/**
* Expand height.
*/
height?: boolean,
},
/**
* Optional key to register the child.
*/
key?: string,
/**
* Local x offset.
*/
offsetX?: number,
/**
* Local y offset.
*/
offsetY?: number,
/**
* Origin x offset.
*/
offsetOriginX?: number,
/**
* Origin y offset.
*/
offsetOriginY?: number,
}
}
/**
* Grid-based sizer with fixed rows and columns.
*/
declare class GridSizer extends BaseSizer {
/**
* Children stored by grid index.
*/
sizerChildren: (Phaser.GameObjects.GameObject | null)[];
/**
* Create a grid sizer with config only.
* @param scene - The Scene to which this object belongs.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
config?: GridSizer.IConfig
);
/**
* Create a grid sizer at a position.
* @param scene - The Scene to which this object belongs.
* @param x - The x position of the sizer.
* @param y - The y position of the sizer.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
x: number, y: number,
config?: GridSizer.IConfig
);
/**
* Create a sized grid sizer at a position.
* @param scene - The Scene to which this object belongs.
* @param x - The x position of the sizer.
* @param y - The y position of the sizer.
* @param width - The width of the sizer.
* @param height - The height of the sizer.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
x: number, y: number,
width: number, height: number,
config?: GridSizer.IConfig
);
/**
* Create a sized grid sizer at a position with rows and columns.
* @param scene - The Scene to which this object belongs.
* @param x - The x position of the sizer.
* @param y - The y position of the sizer.
* @param width - The width of the sizer.
* @param height - The height of the sizer.
* @param column - Column count.
* @param row - Row count.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
x: number, y: number,
width: number, height: number,
column: number, row: number,
config?: GridSizer.IConfig
);
/**
* Set the proportion for a column.
* @param columnIndex - Column index.
* @param proportion - Proportion value.
* @returns This instance.
*/
setColumnProportion(columnIndex: number, proportion: number): this;
/**
* Set the proportion for a row.
* @param rowIndex - Row index.
* @param proportion - Proportion value.
* @returns This instance.
*/
setRowProportion(rowIndex: number, proportion: number): this;
/**
* Add a child with config.
* @param gameObject - The child to add.
* @param config - Add configuration.
* @returns This instance.
*/
add(
gameObject: Phaser.GameObjects.GameObject,
config?: GridSizer.IAddConfig
): this;
/**
* Add a child with individual settings.
* @param gameObject - The child to add.
* @param columnIndex - Column index.
* @param rowIndex - Row index or true to auto-place.
* @param align - Alignment for the child.
* @param padding - Padding around the child.
* @param expand - Expand settings.
* @param key - Optional key to register the child.
* @returns This instance.
*/
add(
gameObject: Phaser.GameObjects.GameObject,
columnIndex?: number | undefined,
rowIndex?: number | undefined | true,
align?: GridSizer.AlignTypes,
padding?: GridSizer.PaddingTypes,
expand?: boolean |
{
/**
* Expand width.
*/
width?: boolean,
/**
* Expand height.
*/
height?: boolean,
},
key?: string
): this;
/**
* Add multiple children with shared config.
* @param gameObject - Children to add.
* @param config - Add configuration.
* @returns This instance.
*/
addMultiple(
gameObject: Phaser.GameObjects.GameObject[],
config?: GridSizer.IAddConfig
): this;
/**
* Add an empty row.
* @param proportion - Proportion value.
* @param space - Row spacing.
* @returns This instance.
*/
addEmptyRow(proportion?: number, space?: number): this;
/**
* Add an empty column.
* @param proportion - Proportion value.
* @param space - Column spacing.
* @returns This instance.
*/
addEmptyColumn(proportion?: number, space?: number): this;
/**
* Insert an empty row.
* @param rowIndex - Row index.
* @param proportion - Proportion value.
* @param space - Row spacing.
* @returns This instance.
*/
insertEmptyRow(
rowIndex: number,
proportion?: number, space?: number
): this;
/**
* Insert an empty column.
* @param colIndex - Column index.
* @param proportion - Proportion value.
* @param space - Column spacing.
* @returns This instance.
*/
insertEmptyColumn(
colIndex: number,
proportion?: number, space?: number
): this;
/**
* Remove a child.
* @param gameObject - The child to remove.
* @param destroyChild - True to destroy the child.
* @returns This instance.
*/
remove(
gameObject: Phaser.GameObjects.GameObject,
destroyChild?: boolean
): this;
/**
* Remove a child at a grid position.
* @param columnIndex - Column index.
* @param rowIndex - Row index.
* @param destroyChild - True to destroy the child.
* @returns This instance.
*/
removeAt(
columnIndex: number,
rowIndex: number,
destroyChild?: boolean
): this;
/**
* Remove all children.
* @param destroyChild - True to destroy removed children.
* @returns This instance.
*/
removeAll(
destroyChild?: boolean
): this;
/**
* Clear all children.
* @param destroyChild - True to destroy cleared children.
* @returns This instance.
*/
clear(
destroyChild?: boolean
): this;
/**
* Column count.
*/
columnCount: number;
/**
* Row count.
*/
rowCount: number;
/**
* Reset grid size and proportions.
* @param column - Column count.
* @param row - Row count.
* @param columnProportions - Column proportions.
* @param rowProportions - Row proportions.
* @param space - Row and column spacing.
* @returns This instance.
*/
resetGrid(
column: number, row: number,
columnProportions?: number | number[],
rowProportions?: number | number[],
space?: {
/**
* Column spacing.
*/
column?: number | number[],
/**
* Row spacing.
*/
row?: number | number[],
}
): this;
/**
* Sort children using a compare callback.
* @param callback - Compare callback.
* @returns This instance.
*/
sortChildren(
callback: (
childA: Phaser.GameObjects.GameObject,
childB: Phaser.GameObjects.GameObject
) => number
): this;
/**
* Sort children by a data value.
* @param key - Data key.
* @param descending - True to sort descending.
* @returns This instance.
*/
sortChildrenByData(
key: string,
descending?: boolean
): this;
/**
* Sort children by a property value.
* @param key - Property name.
* @param descending - True to sort descending.
* @returns This instance.
*/
sortChildrenByProperty(
key: string,
descending?: boolean
): this;
/**
* Get a child at a grid position.
* @param columnIndex - Column index.
* @param rowIndex - Row index.
* @returns The child at the position.
*/
getChildAt(
columnIndex: number,
rowIndex: number
): Phaser.GameObjects.GameObject;
/**
* Convert a child to grid indices.
* @param child - The child to query.
* @param out - Output object to write indices.
* @returns The output object.
*/
childToGridIndex(
child: Phaser.GameObjects.GameObject,
out: {
/**
* Column index.
*/
x: number,
/**
* Row index.
*/
y: number
}
): { x: number, y: number };
/**
* Convert a child to grid indices.
* @param child - The child to query.
* @returns The grid indices.
*/
childToGridIndex(
child: Phaser.GameObjects.GameObject
): { x: number, y: number };
}