import { sound } from '../managers/SoundManager.js'; const DEFAULTS = { width: 260, height: 48, fontSize: '13px', bgColor: 0x581c87, hoverColor: 0x7e22ce, strokeColor: 0xa855f7, strokeWidth: 2, textColor: '#ffffff', hoverScale: 1.04, playClick: true, }; export function createButton(scene, x, y, text, callback, options = {}) { const opt = { ...DEFAULTS, ...options }; const bg = scene.add.rectangle(x, y, opt.width, opt.height, opt.bgColor) .setStrokeStyle(opt.strokeWidth, opt.strokeColor) .setInteractive({ useHandCursor: true }); const label = scene.add.text(x, y, text, { fontFamily: '"Press Start 2P", monospace', fontSize: opt.fontSize, color: opt.textColor, }).setOrigin(0.5); bg.on('pointerover', () => { bg.setFillStyle(opt.hoverColor); scene.tweens.add({ targets: [bg, label], scaleX: opt.hoverScale, scaleY: opt.hoverScale, duration: 100 }); }); bg.on('pointerout', () => { bg.setFillStyle(opt.bgColor); scene.tweens.add({ targets: [bg, label], scaleX: 1, scaleY: 1, duration: 100 }); }); bg.on('pointerdown', () => { if (opt.playClick) sound.click(); callback(); }); return { bg, label, destroy: () => { bg.destroy(); label.destroy(); } }; } export function pixelText(scene, x, y, text, size = '14px', color = '#ffffff') { return scene.add.text(x, y, text, { fontFamily: '"Press Start 2P", monospace', fontSize: size, color, }).setOrigin(0.5); }