phaser-jsx
Version:
Use JSX in Phaser.
87 lines • 3.06 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.skipPropKeys = void 0;
exports.setProps = setProps;
var constants_1 = require("../constants");
exports.skipPropKeys = ['input'];
/**
* Sets game object props.
*
* @param gameObject - Phaser game object.
* @param props - Element props.
* @param scene - Phaser scene.
*/
function setProps(gameObject, props, scene) {
var _loop_1 = function (key) {
if (exports.skipPropKeys.includes(key)) {
return "continue";
}
var value = props[key];
if (value && key === 'data') {
gameObject.setData(value);
return "continue";
}
if (constants_1.events[key] && typeof value === 'function') {
gameObject.setInteractive(props.input);
var eventName = key.slice(2).toLowerCase();
var pointerEvents = [
'pointerdown',
'pointerdownoutside',
'pointermove',
'pointerout',
'pointerover',
'pointerup',
'pointerupoutside',
'pointerwheel',
];
if (pointerEvents.includes(eventName)) {
var wrappedHandler = function (pointer) {
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
value.apply(void 0, __spreadArray([pointer, gameObject], rest, false));
};
gameObject.on(eventName, wrappedHandler, scene);
}
else {
gameObject.on(eventName, value, scene);
}
return "continue";
}
if (key === 'style' && value && typeof value === 'object') {
setStyle(gameObject, value);
return "continue";
}
else if (key in gameObject) {
gameObject[key] = value;
return "continue";
}
};
for (var key in props) {
_loop_1(key);
}
if ((typeof props.originX === 'number' || typeof props.originY === 'number') &&
typeof gameObject.setOrigin === 'function') {
gameObject.setOrigin(props.originX, props.originY);
}
}
function setStyle(gameObject, style) {
var _a, _b;
var text = gameObject;
(_a = text.setStyle) === null || _a === void 0 ? void 0 : _a.call(text, style);
var padding = style.padding;
if (padding !== undefined) {
(_b = text.setPadding) === null || _b === void 0 ? void 0 : _b.call(text, padding);
}
}
//# sourceMappingURL=props.js.map