phaser4-rex-plugins
Version:
66 lines (52 loc) • 1.9 kB
JavaScript
import ConfirmDialog from './ConfirmDialog.js';
const GetValue = Phaser.Utils.Objects.GetValue;
var ConfirmAction = function (scene, config) {
var dialog = config.dialog;
var newDialogMode = !dialog;
if (newDialogMode) {
var dialogStyle = config.style;
if (dialogStyle.buttonMode === undefined) {
dialogStyle.buttonMode = 2;
}
dialog = new ConfirmDialog(scene, dialogStyle, config.creators);
scene.add.existing(dialog);
}
dialog
.setConfirmButtonIndex(GetValue(config, 'confirmButtonIndex', 0))
.setCancelButtonIndex(GetValue(config, 'cancelButtonIndex', 1))
.resetDisplayContent(config.content)
.layout()
if (newDialogMode && config.onCreateDialog) {
config.onCreateDialog(dialog);
}
var modalConfig = config.modal;
if (modalConfig && !modalConfig.hasOwnProperty('destroy')) {
modalConfig.destroy = newDialogMode;
}
var confirmCallback = config.confirm;
var cancelCallback = config.cancel;
var confirmScope = config.confirmScope;
var cancelScope = config.cancelScope;
var closeCallback = config.close;
var closeScope = config.closeScope;
if (confirmCallback) {
dialog.once('confirm', confirmCallback, confirmScope);
}
if (cancelCallback) {
dialog.once('cancel', cancelCallback, cancelScope);
}
var onClose = function (data) {
if (confirmCallback) {
dialog.off('confirm', confirmCallback, confirmScope);
}
if (cancelCallback) {
dialog.off('cancel', cancelCallback, cancelScope);
}
if (closeCallback) {
closeCallback.call(closeScope, data);
}
}
dialog.modal(modalConfig, onClose);
return dialog;
}
export default ConfirmAction;