diff -ruN tree/src/helpers/animations.js mod/src/helpers/animations.js --- tree/src/helpers/animations.js 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/helpers/animations.js 2026-11-02 20:20:14.103826317 -0300 @@ -68,22 +68,4 @@ frameRate: 10 }; scene.anims.create(config); - config = { - key: 'splash', - frames: scene.anims.generateFrameNames('splash', { - start: 0, - end: 4 - }), - frameRate: 30 - }; - scene.anims.create(config); - config = { - key: 'break', - frames: scene.anims.generateFrameNames('break', { - start: 0, - end: 4 - }), - frameRate: 30 - }; - scene.anims.create(config); } diff -ruN tree/src/helpers/dialog.js mod/src/helpers/dialog.js --- tree/src/helpers/dialog.js 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/helpers/dialog.js 2026-11-02 20:20:14.105206260 -0300 @@ -15,7 +15,6 @@ // Add child elements this.elements = scene.add.group(); this.elements.add(scene.add.bitmapText(x + 16, y + 16, 'font', title, 8)); - this.elements.add(scene.add.sprite(x + width - 42, y + height - 47, portrait)); buttons.forEach((button, index) => { this.elements.add(new BuyButton(scene, this.elements, x + 16, y + 32 + index * 24, button)); }); diff -ruN tree/src/index.html mod/src/index.html --- tree/src/index.html 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/index.html 2026-11-02 20:20:26.011922004 -0300 @@ -3,6 +3,7 @@ + PepperTown diff -ruN tree/src/scenes/BootScene.js mod/src/scenes/BootScene.js --- tree/src/scenes/BootScene.js 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/scenes/BootScene.js 2026-11-02 20:20:14.103425852 -0300 @@ -58,32 +58,12 @@ frameHeight: 15, spacing: 1 }); - this.load.spritesheet('break', 'assets/images/break01.png', { - frameWidth: 64, - frameHeight: 64 - }); - this.load.spritesheet('splash', 'assets/images/splash04.png', { - frameWidth: 64, - frameHeight: 64 - }); - - this.load.image('title', 'assets/images/title.png'); this.load.image('win', 'assets/images/win.png'); this.load.image('bar-back', 'assets/images/bar-back.png'); this.load.image('bar-front', 'assets/images/bar-front.png'); this.load.image('select-frame', 'assets/images/select-frame.png'); this.load.image('dialog-back', 'assets/images/dialog-back.png'); this.load.image('hand', 'assets/images/hand.png'); - ['magic', 'item', 'armor', 'weapon'].forEach(shop => { - const key = 'portrait-' + shop; - this.load.image(key, 'assets/images/' + key + '.png'); - }) - - // Music to play. It's not properly edited for an continous loop, but game play experience isn't really the aim of this repository either. - this.load.audio('overworld', [ - 'assets/music/overworld.ogg', - 'assets/music/overworld.mp3' - ]); this.load.audio('coins', [ 'assets/audio/coins.ogg', diff -ruN tree/src/scenes/GameScene.js mod/src/scenes/GameScene.js --- tree/src/scenes/GameScene.js 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/scenes/GameScene.js 2026-11-02 20:20:14.104844045 -0300 @@ -21,8 +21,6 @@ this.attractMode = this.registry.get('attractMode'); this.win = null; - // Add and play the music - this.music = this.sound.add('overworld'); this.sounds = { buy: this.sound.add('buy'), close: this.sound.add('close'), @@ -88,13 +86,6 @@ this.createHUD(); this.coinGroup = this.add.group(); - this.music.play({ - loop: true - }); - this.music.volume = 0.25; - if (this.attractMode) { - this.music.volume = 0; - } // If the game ended while physics was disabled this.physics.world.resume(); diff -ruN tree/src/scenes/TitleScene.js mod/src/scenes/TitleScene.js --- tree/src/scenes/TitleScene.js 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/scenes/TitleScene.js 2026-11-02 20:20:14.105504557 -0300 @@ -7,7 +7,7 @@ preload() { } create() { - this.title = this.add.sprite(this.sys.game.config.width / 2, 16 * 7, 'title'); + this.title = this.add.bitmapText(this.sys.game.config.width / 2 - 8 * 8, 16 * 6, 'font', 'PEPPERTOWN', 16); this.attractMode = this.scene.launch('GameScene'); this.scene.bringToTop(); diff -ruN tree/src/sprites/girl.js mod/src/sprites/girl.js --- tree/src/sprites/girl.js 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/sprites/girl.js 2026-11-02 20:20:14.104551206 -0300 @@ -168,7 +168,6 @@ this.health.value -= enemy.damage * this.scene.defenseFactor; this.wasHurt = WAS_HURT; this.scene.playSoundBank('hit', 0.25); - this.scene.coinGroup.add(new Wham(this.scene, this.x, this.y, 'splash', 'splash')); } this.ai.state = 'fighting'; this.ai.target = enemy; diff -ruN tree/src/sprites/slime.js mod/src/sprites/slime.js --- tree/src/sprites/slime.js 2026-10-30 01:06:41.000000000 -0300 +++ mod/src/sprites/slime.js 2026-11-02 20:20:14.104192783 -0300 @@ -86,7 +86,6 @@ die(enemy, damage, soundKey) { this.scene.playSoundBank(soundKey, 0.5); this.health.value -= damage; - this.scene.coinGroup.add(new Wham(this.scene, this.x, this.y, 'break', 'break')); if (this.health.value <= 0) { this.alive = false; enemy.scene.onKill(enemy.health.max, enemy.x, enemy.y); diff -ruN tree/webpack.fredygames.config.js mod/webpack.fredygames.config.js --- tree/webpack.fredygames.config.js 1969-12-31 21:00:00.000000000 -0300 +++ mod/webpack.fredygames.config.js 2026-11-02 20:20:25.980234909 -0300 @@ -0,0 +1,55 @@ +// Config de build do FredyGames. O webpack.production.config.js do autor usa a API antiga do clean-webpack-plugin e do +// copy-webpack-plugin (versoes 4 e 10 instaladas pelo yarn.lock nao a aceitam); este faz o mesmo (bundle em build/js/bundle.js, +// index.html e pasta assets/ copiada) sem limpar a pasta e sem os arquivos de assets/ que ficam de fora (ver o patch). +var path = require('path') +var webpack = require('webpack') +var HtmlWebpackPlugin = require('html-webpack-plugin') +var CopyWebpackPlugin = require('copy-webpack-plugin') + +module.exports = { + mode: 'production', + entry: { app: [path.resolve(__dirname, 'src/main.js')] }, + output: { + path: path.resolve(__dirname, 'build'), + publicPath: './', + filename: 'js/bundle.js' + }, + plugins: [ + new webpack.DefinePlugin({ + __DEV__: JSON.stringify(false), + WEBGL_RENDERER: true, + CANVAS_RENDERER: true + }), + new HtmlWebpackPlugin({ + filename: 'index.html', + template: './src/index.html', + chunks: ['app'], + minify: false, + hash: false + }), + new CopyWebpackPlugin({ + patterns: [{ + from: 'assets', + to: 'assets', + globOptions: { + ignore: [ + '**/music/**', + '**/images/portrait-*.png', + '**/images/title.png', + '**/images/break01.png', + '**/images/splash04.png' + ] + } + }] + }) + ], + module: { + rules: [ + { test: /\.js$/, use: ['babel-loader'], include: path.join(__dirname, 'src') }, + { test: /phaser-split\.js$/, use: 'raw-loader' }, + { test: [/\.vert$/, /\.frag$/], use: 'raw-loader' } + ] + }, + optimization: { minimize: true }, + performance: { hints: false } +}