phaser3-rex-plugins
Version:
508 lines (471 loc) • 12.8 kB
TypeScript
import ContainerLite from '../../container/containerlite/ContainerLite';
import { AlignType } from '../../../utils/actions/AlignType';
export default GridTable;
declare namespace GridTable {
/**
* Scroll orientation values.
*/
type ScrollModeType = 0 | 1 | 'v' | 'vertical' | 'h' | 'horizontal';
interface Cell {
/**
* Scene that owns the cell.
*/
scene: Phaser.Scene,
/**
* Cell width.
*/
width: number,
/**
* Cell height.
*/
height: number,
/**
* Extra width offset.
*/
deltaWidth: number,
/**
* Extra height offset.
*/
deltaHeight: number,
/**
* Current item data.
*/
item: unknown,
/**
* Collection of items in this cell.
*/
items: unknown[],
/**
* Cell index.
*/
index: number,
/**
* Set cell height.
* @param value - Height value.
* @returns This cell.
*/
setHeight(value: number): Cell,
/**
* Set cell delta height.
* @param value - Delta height value.
* @returns This cell.
*/
setDeltaHeight(value: number): Cell,
/**
* Set cell width.
* @param value - Width value.
* @returns This cell.
*/
setWidth(value: number): Cell,
/**
* Set cell delta width.
* @param value - Delta width value.
* @returns This cell.
*/
setDeltaWidth(value: number): Cell,
/**
* Set alignment for the cell container.
* @param align - Alignment value.
* @returns This cell.
*/
setCellContainerAlign(align: AlignType): Cell
/**
* Assign the cell container.
* @param cellContainer - The container to assign.
*/
setContainer(cellContainer?: Phaser.GameObjects.GameObject | null): void,
/**
* Get the cell container.
* @returns The container or null.
*/
getContainer(): Phaser.GameObjects.GameObject | null,
/**
* Pop and return the container.
* @returns The container or null.
*/
popContainer(): Phaser.GameObjects.GameObject | null,
/**
* Destroy the container if present.
* @returns This cell.
*/
destroyContainer(): this,
}
/**
* Callback fired when a cell becomes visible.
*/
type CellVisibleCallbackType = (
cell: Cell,
cellContainer: Phaser.GameObjects.GameObject | null,
table: GridTable
) => void;
/**
* Callback fired when a cell becomes invisible.
*/
type CellInvisibleCallbackType = (
cell: Cell
) => void;
/**
* Mask update modes.
*/
type MaskUpdateModeType = 0 | 1 | 'update' | 'everyTick';
type MaskConfig = {
/**
* Mask padding.
*/
padding?: number | {
/**
* Left padding.
*/
left?: number,
/**
* Right padding.
*/
right?: number,
/**
* Top padding.
*/
top?: number,
/**
* Bottom padding.
*/
bottom?: number,
},
/**
* Mask update mode.
*/
updateMode?: MaskUpdateModeType,
/**
* Callback when a child becomes visible.
*/
onVisible?: (
child: Phaser.GameObjects.GameObject,
parent: ContainerLite
) => void;
/**
* Callback when a child becomes invisible.
*/
onInvisible?: (
child: Phaser.GameObjects.GameObject,
parent: ContainerLite
) => void;
/**
* Callback scope.
*/
scope?: Object
} |
boolean;
interface IConfig {
/**
* Total number of cells.
*/
cellsCount?: number,
/**
* Column count.
*/
columns?: number,
/**
* Default cell height.
*/
cellHeight?: number,
/**
* Default cell width.
*/
cellWidth?: number,
/**
* True to lock cell size.
*/
fixedCellSize?: boolean,
/**
* Callback when a cell becomes visible.
*/
cellVisibleCallback: CellVisibleCallbackType,
/**
* Scope for cellVisibleCallback.
*/
cellVisibleCallbackScope?: Object,
/**
* True to reuse cell containers.
*/
reuseCellContainer?: boolean,
/**
* Callback when a cell becomes invisible.
*/
cellInvisibleCallback: CellInvisibleCallbackType,
/**
* Scope for cellInvisibleCallback.
*/
cellInvisibleCallbackScope: undefined,
/**
* True to clamp table offset within bounds.
*/
clampTableOXY?: boolean,
/**
* True to start from the bottom.
*/
startFromBottom?: boolean,
/**
* Scroll orientation.
*/
scrollMode?: ScrollModeType,
/**
* Mask configuration.
*/
mask?: MaskConfig,
/**
* True to enable layer support.
*/
enableLayer?: boolean,
}
namespace Events {
/**
* Fired when a cell becomes visible.
*/
type CellvisibleCallbackType = (
cell: Cell,
cellContainer: Phaser.GameObjects.GameObject | null,
table: GridTable
) => void;
/**
* Fired when a cell becomes invisible.
*/
type CellInvisibleCallbackType = (cell: Cell) => void;
/**
* Fired when a cell height changes.
*/
type CellHeightchange = (
cell: Cell,
cellContainer: Phaser.GameObjects.GameObject | null,
table: GridTable
) => void;
/**
* Fired when a cell width changes.
*/
type CellWidthchange = (
cell: Cell,
cellContainer: Phaser.GameObjects.GameObject | null,
table: GridTable
) => void;
}
}
/**
* Scrollable grid table container with cell recycling.
*/
declare class GridTable extends ContainerLite {
/**
* Create a grid table.
* @param scene - The Scene to which this object belongs.
* @param x - The x position of the table.
* @param y - The y position of the table.
* @param width - The width of the table.
* @param height - The height of the table.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
x: number, y: number,
width: number, height: number,
config: GridTable.IConfig
);
/**
* Resize the table viewport.
* @param width - New width.
* @param height - New height.
* @returns This instance.
*/
resize(width: number, height: number): this;
/**
* Set table offset Y.
* @param oy - Offset Y value.
* @returns This instance.
*/
setTableOY(oy: number): this;
/**
* Add to table offset Y.
* @param dy - Delta Y value.
* @returns This instance.
*/
addTableOY(dy: number): this;
/**
* Set table offset X.
* @param ox - Offset X value.
* @returns This instance.
*/
setTableOX(ox: number): this;
/**
* Add to table offset X.
* @param dx - Delta X value.
* @returns This instance.
*/
addTableOX(dx: number): this;
/**
* Set table offsets.
* @param ox - Offset X value.
* @param oy - Offset Y value.
* @returns This instance.
*/
setTableOXY(ox: number, oy: number): this;
/**
* Add to table offsets.
* @param dx - Delta X value.
* @param dy - Delta Y value.
* @returns This instance.
*/
addTableOXY(dx: number, dy: number): this;
/**
* Current table offset Y.
*/
tableOY: number;
/**
* Current table offset X.
*/
tableOX: number;
/**
* Set table offset Y by percentage.
* @param t - Percentage from 0 to 1.
* @returns This instance.
*/
setTableOYByPercentage(t: number): this;
/**
* Current table offset percentage.
*/
t: number;
/**
* Get table offset Y percentage.
* @returns Percentage from 0 to 1.
*/
getTableOYPercentage(): number;
/**
* Scroll to the bottom.
* @returns This instance.
*/
scrollToBottom(): this;
/**
* Scroll to a row.
* @param rowIndex - Row index.
* @returns This instance.
*/
scrollToRow(rowIndex: number): this;
/**
* Scroll to the next row.
* @param rowCount - Row count to move.
* @returns This instance.
*/
scrollToNextRow(rowCount?: number): this;
/**
* Current start row index.
*/
startRowIndex: number;
/**
* Update the table.
* @param refresh - True to refresh visible cells.
* @returns This instance.
*/
updateTable(refresh?: boolean): this;
/**
* Update a visible cell by index.
* @param cellIdx - Cell index.
* @returns This instance.
*/
updateVisibleCell(cellIdx: number): this;
/**
* Set grid size.
* @param colCount - Column count.
* @param rowCount - Row count.
* @returns This instance.
*/
setGridSize(colCount: number, rowCount: number): this;
/**
* Set total cell count.
* @param count - Cell count.
* @returns This instance.
*/
setCellsCount(count: number): this;
/**
* Total cell count.
*/
readonly cellsCount: number;
/**
* Column count.
*/
readonly columnCount: number;
/**
* Total table height.
*/
readonly tableHeight: number;
/**
* Total table width.
*/
readonly tableWidth: number;
/**
* Top offset limit.
*/
readonly topTableOY: number;
/**
* Bottom offset limit.
*/
readonly bottomTableOY: number;
/**
* Left offset limit.
*/
readonly leftTableOX: number;
/**
* Right offset limit.
*/
readonly rightTableOX: number;
/**
* Get a cell by index.
* @param cellIndex - Cell index.
* @returns The cell.
*/
getCell(cellIndex: number): GridTable.Cell;
/**
* Convert a point to cell index.
* @param x - World x.
* @param y - World y.
* @returns Cell index.
*/
pointToCellIndex(x: number, y: number): number;
/**
* Set a cell height.
* @param cellIndex - Cell index.
* @param cellHeight - Height value.
* @returns This instance.
*/
setCellHeight(cellIndex: number, cellHeight: number): this;
/**
* Set a cell width.
* @param cellIndex - Cell index.
* @param cellWidth - Width value.
* @returns This instance.
*/
setCellWidth(cellIndex: number, cellWidth: number): this;
/**
* Reset all cell sizes.
* @param width - Width value.
* @param height - Height value.
* @returns This instance.
*/
resetAllCellsSize(width: number, height: number): this;
/**
* Measure a reference cell container from a cell, then reset all cell sizes.
* @param cellIndex - Cell index used to build the reference container.
* @returns This instance.
*/
resetCellSizeFromCell(cellIndex?: number): this;
/**
* Iterate visible cells with a callback.
* @param callback - Callback per visible cell.
* @returns This instance.
*/
iterateVisibleCell(
callback: (cell: GridTable.Cell) => void
): this;
/**
* Iterate visible cells with a callback.
* @param callback - Callback per visible cell.
* @returns This instance.
*/
eachVisibleCell(
callback: (cell: GridTable.Cell) => void
): this;
}