phaser3-rex-plugins
Version:
105 lines (85 loc) • 3.27 kB
JavaScript
import CreateArrayTable from '../builders/createarraytable/CreateArrayTable.js';
var SetArrayTableReadOnly = function (gameObject, readOnly) {
if (readOnly === undefined) {
readOnly = true;
}
var arrayTable = gameObject.childrenMap.arrayTable;
arrayTable.setReadOnly(readOnly);
}
var CreateDefaultNumberItem = function () { return 0; }
var CreateDefaultStringItem = function () { return ''; }
var CreateDefaultBooleanItem = function () { return false; }
export default {
name: 'ArrayInput',
accept(config) {
if (config.hasOwnProperty('view')) {
var view = config.view;
return (view === 'numbers') || (view === 'strings') || (view === 'booleans') || (view === 'array');
}
var value = config.value;
if (Array.isArray(value)) {
var arrayType = typeof (value[0]);
switch (arrayType) {
case 'number':
config.view = 'numbers';
break;
case 'strig':
config.view = 'strings';
break;
case 'boolean':
config.view = 'booleans';
break;
default:
config.view = 'array';
break;
}
return true;
} else {
return false;
};
},
// Callback after `constructor()`
build(gameObject, config, inputRowStyle, styles) {
this.type = 'rexTweaker.ArrayInput';
var arrayTableConfig = inputRowStyle.arrayTable || styles.arrayTable || {};
if (!config.hasOwnProperty('createDefaultItem')) {
var view = config.view;
if (view === 'numbers') {
config.createDefaultItem = CreateDefaultNumberItem;
} else if (view === 'numbers') {
config.createDefaultItem = CreateDefaultStringItem;
} else if (view === 'booleans') {
config.createDefaultItem = CreateDefaultBooleanItem;
}
}
var arrayTable = CreateArrayTable(gameObject.tweaker, config, arrayTableConfig)
.setTitle(); // Hide title
gameObject.add(
arrayTable,
{ proportion: 1, expand: true, key: 'arrayTable' }
)
// Set layout to vertical by default
if (!arrayTableConfig.hasOwnProperty('orientation') && !config.hasOwnProperty('orientation')) {
config.orientation = 1;
}
},
// Callback inside `setup()`
setup(gameObject, config, setDefaults) {
},
// Callback inside `setValue()`
displayValue(gameObject, value) {
var arrayTable = gameObject.childrenMap.arrayTable;
arrayTable.setItems(value, true);
},
// Callback inside `setBindingTarget()`
onBindTarget(gameObject) {
var arrayTable = gameObject.childrenMap.arrayTable;
arrayTable.scrollToTop();
},
setReadOnly(gameObject, readOnly) {
if (readOnly === undefined) {
readOnly = true;
}
SetArrayTableReadOnly(gameObject, readOnly);
}
}