phaser3-rex-plugins
Version:
120 lines (93 loc) • 3.8 kB
JavaScript
import { GetIndexLabelStyle, GetIndexLabelCallback, CreateIndexLabel } from './IndexLabelMethods.js';
import { GetDisplayNameStyle, GetDisplayNameLabelCallback, CreateDisplayNameLabel } from './DisplayNameLabelMethods.js';
import CreateDeleteButton from '../utils/CreateDeleteButton.js';
import CreateMoveUpButton from '../utils/CreateMoveUpButton.js';
import CreateMoveDownButton from '../utils/CreateMoveDownButton.js';
import CreateBackground from '../utils/CreateBackground.js';
import CellContainer from '../../gameobjects/listdetail/cellcontainer/CellContainer.js';
const GetValue = Phaser.Utils.Objects.GetValue;
var CreateCellContainer = function (parent, cell, config) {
var scene = parent.scene;
// Create elements
var {
space,
gridTable,
indexStyle,
displayNameStyle,
createDeleteButton,
createMoveUpButton,
createMoveDownButton,
backgroundStyle,
} = config;
var background = CreateBackground(scene, {}, backgroundStyle);
var indexLabel = CreateIndexLabel(scene, indexStyle);
var displayNameLabel = CreateDisplayNameLabel(scene, displayNameStyle);
var deleteButton = createDeleteButton(scene);
var moveUpButton = createMoveUpButton(scene);
var moveDownButton = createMoveDownButton(scene);
// Assemble elements
var cellContainer = new CellContainer(scene, {
space,
gridTable,
background,
indexLabel,
displayNameLabel,
deleteButton,
moveUpButton,
moveDownButton,
})
scene.add.existing(cellContainer);
return cellContainer;
}
var GenerateCreateCellContainerCallback = function (parent, config, style) {
// Prepare parameters
var space = GetValue(config, 'space.cell', undefined, style) || {};
var indexStyle = GetIndexLabelStyle(style);
var indexLabelCallback = GetIndexLabelCallback(config);
var displayNameStyle = GetDisplayNameStyle(style);
var displayNameLabelCallback = GetDisplayNameLabelCallback(config);
var createDeleteButton = function (scene) {
return CreateDeleteButton(scene, config, style);
}
var createMoveUpButton = function (scene) {
return CreateMoveUpButton(scene, config, style);
}
var createMoveDownButton = function (scene) {
return CreateMoveDownButton(scene, config, style);
}
var backgroundStyle = GetValue(style, 'cellBackground');
var callback = function (cell, cellContainer, gridTable) {
var width = cell.width;
var height = cell.height;
var item = cell.item;
var items = cell.items;
var index = cell.index;
if (cellContainer === null) {
cellContainer = CreateCellContainer(parent, cell, {
space,
gridTable,
indexStyle,
displayNameStyle,
createDeleteButton,
createMoveUpButton,
createMoveDownButton,
backgroundStyle,
});
}
cell.setCellContainerAlign('center');
cellContainer
.setIndexLabel(indexLabelCallback(index, item, items))
.setDisplayNameLabel(displayNameLabelCallback(index, item, items))
.setItem(items, index) // Also setBindingTarget
.setSelectedState(index === gridTable.selectedIndex)
// layout
.setMinSize(width, 0)
.setOrigin(0.5, 0)
.setDirty(true)
.layout()
.setDirty(false)
return cellContainer;
}
return callback;
}
export default GenerateCreateCellContainerCallback;