phaser-jsx
Version:
Use JSX in Phaser.
82 lines • 2.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.skipPropKeys = void 0;
exports.setProps = setProps;
const 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) {
for (const key in props) {
if (exports.skipPropKeys.includes(key)) {
continue;
}
const value = props[key];
if (value && key === 'data') {
gameObject.setData(value);
continue;
}
if (constants_1.events[key] && typeof value === 'function') {
gameObject.setInteractive(props.input);
const eventName = key.slice(2).toLowerCase();
const pointerEvents = [
'pointerdown',
'pointerdownoutside',
'pointermove',
'pointerout',
'pointerover',
'pointerup',
'pointerupoutside',
'pointerwheel',
];
if (pointerEvents.includes(eventName)) {
const wrappedHandler = (pointer, ...rest) => {
value(pointer, gameObject, ...rest);
};
gameObject.on(eventName, wrappedHandler, scene);
}
else {
gameObject.on(eventName, value, scene);
}
continue;
}
if (key === 'style' && value && typeof value === 'object') {
setStyle(gameObject, value);
continue;
}
else if ((key === 'fillColor' || key === 'fillAlpha') &&
typeof gameObject.setFillStyle ===
'function') {
const rect = gameObject;
const fillColor = key === 'fillColor' ? value : props.fillColor;
const fillAlpha = key === 'fillAlpha'
? value
: props.fillAlpha;
rect.setFillStyle(fillColor, fillAlpha);
continue;
}
else if (key in gameObject) {
gameObject[key] = value;
continue;
}
}
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;
const text = gameObject;
(_a = text.setStyle) === null || _a === void 0 ? void 0 : _a.call(text, style);
const padding = style.padding;
if (padding !== undefined) {
(_b = text.setPadding) === null || _b === void 0 ? void 0 : _b.call(text, padding);
}
}
//# sourceMappingURL=props.js.map