From d51b40457f434280f65e0eef589b0830e07c3409 Mon Sep 17 00:00:00 2001 From: Zutatensuppe Date: Sun, 18 Jul 2021 15:26:47 +0200 Subject: [PATCH] shader fun --- src/assets/lantern.png | Bin 0 -> 843 bytes src/main.js | 225 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 211 insertions(+), 14 deletions(-) create mode 100644 src/assets/lantern.png diff --git a/src/assets/lantern.png b/src/assets/lantern.png new file mode 100644 index 0000000000000000000000000000000000000000..ad910d20452f901d3a5a7947ec98a2c6769a43f8 GIT binary patch literal 843 zcmV-R1GM~!P)<@?8h)D?1+1YwsWzDDv zY4QnLFo1w2{+IFoJJH9^jQe%BFjhaTw_AzuCP^E~17hX+296AqKX&ue#O_K%Rbh-3KWySh!HK7V=r z(LYmbUB%l=lt%03^H5B#kZbQ_ z;?+`Og-kce6%vimY-eY?pv<6a$1^qJxG9ZrH4<^^Na8DHKY*B!vVA|FVQN|jG8LiK zVxxJR47^+v^N~d}+xR$(tLBn1uW+tfh^>!^KC?u`(~4F` zGy<^wIBz3>sy{|=dk7FizuH*0uSW`Sw~D gameLoop(delta)); } @@ -207,18 +339,17 @@ function gameLoop(delta){ function end(delta) { hud.visible = false endC.visible = true - if (player.scale.x < 250) { + if (player.scale.x < 290) { player.scale.x += 5 player.scale.y += 5 } else { - END_TXT.anchor.x = .5 - END_TXT.anchor.y = .5 - END_TXT.x = player.x - END_TXT.y = player.y + quad.visible = false + END_TXT.x = WIDTH / 2 - END_TXT.width / 2 + END_TXT.y = HEIGHT / 2 - END_TXT.height / 2 END_TXT.visible = true } } - +var time = 0 var blinkStart const BLINK_DUR = 250 @@ -332,6 +463,56 @@ function play(delta) { } } + for (const c of objects) { + if (c.type === 'cow') { + if (c.vrot > 0 && c.ticks > 0) { + if (c.lastmoo === 0 || (now - c.lastmoo > 500)) { + c.lastmoo = now + const moo = new PIXI.Text('!moooo', {fontFamily : 'Arial', fontSize: 14, fill : 0xff0000, align : 'center'}) + moo.x = c.x + moo.y = c.y + moo.anchor.set(.5, .5) + + let r = Math.random() + if (r < 1/3) { + moo.vx = 0 + } else if (r < 2/3) { + moo.vx = 1 + } else { + moo.vx = -1 + } + if (moo.vx === 0) { + r = Math.random() + moo.vy = r < .5 ? 1 : -1 + } else { + r = Math.random() + if (r < 1/3) { + moo.vy = 0 + } else if (r < 2/3) { + moo.vy = 1 + } else { + moo.vy = -1 + } + } + moo.rotation = Math.atan2(moo.vx, moo.vy) + + moo.alpha = 1 + moos.push(moo); + container.addChild(moo) + } + } + } + } + for (const obj of moos) { + obj.x += obj.vx + obj.y += obj.vy + obj.alpha -= .01 + if (obj.alpha <= 0) { + container.removeChild(obj) + } + } + moos = moos.filter(moo => moo.alpha > 0) + let ptsWater = 0 let ptsCows = 0 for (const obj of objects) { @@ -387,6 +568,22 @@ function play(delta) { if (ptsWater >= 20 && ptsCows >= 20) { state = end } + + time += 1 / 60; + quad.shader.uniforms.time = time; + quad.shader.uniforms.playerPos = [ + player.x + container.x, + HEIGHT - player.y + ]; + const lanternPositions = [] + lanterns.forEach(l => { + lanternPositions.push(l.x + container.x) + lanternPositions.push(HEIGHT - l.y) + }) + quad.shader.uniforms.lanternPositions = lanternPositions + + /// FFFFUFFUUUUUUUUU + // quad.scale.set(Math.cos(time) * 1 + 2, Math.sin(time * 0.7) * 1 + 2); } //The `keyboard` helper function