diff --git a/index.html b/index.html index 0a2f7cb..41d061c 100644 --- a/index.html +++ b/index.html @@ -6,31 +6,31 @@ MEATSLICER - +
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/js/hud.js b/js/hud.js index 4ae0558..444f84c 100644 --- a/js/hud.js +++ b/js/hud.js @@ -198,7 +198,7 @@ function drawHUD(ctx) { ctx.textAlign = 'center'; for (let i = 0; i < G.toasts.length; i++) { const t = G.toasts[i]; - const a = clamp(2.5 - t.t, 0, 1); + const a = clamp((t.dur || 2.5) - t.t, 0, 1); const y = 22 + i * 48; ctx.globalAlpha = a; ctx.font = 'bold 13px monospace'; @@ -271,5 +271,5 @@ function drawMinimap(ctx) { function drawToastsUpdate(dt) { for (const t of G.toasts) t.t += dt; - while (G.toasts.length && G.toasts[0].t > 2.5) G.toasts.shift(); + while (G.toasts.length && G.toasts[0].t > (G.toasts[0].dur || 2.5)) G.toasts.shift(); } diff --git a/js/items.js b/js/items.js index 3fd9aa9..ba9a758 100644 --- a/js/items.js +++ b/js/items.js @@ -172,10 +172,10 @@ function giveItem(iid) { item.apply(p.stats, p); p.items[iid] = lvl + 1; if (lvl > 0) { - addToast(item.name + ' ' + romanNum(lvl + 1), 'UPGRADED — ' + item.desc); + addToast(item.name + ' ' + romanNum(lvl + 1), 'UPGRADED — ' + item.desc, 5.5); spawnText(p.x, p.y - 14, 'UPGRADED!', '#ffd060'); } else { - addToast(item.name, item.desc); + addToast(item.name, item.desc, 5.5); spawnText(p.x, p.y - 14, item.name.toUpperCase(), ITEM_RARITY[item.rarity].color); } if (item.rarity === 'legendary') Sfx.curse(); else Sfx.item(); diff --git a/js/pickups.js b/js/pickups.js index 9843365..e0e3424 100644 --- a/js/pickups.js +++ b/js/pickups.js @@ -130,7 +130,7 @@ function collectPickup(k) { } const def = ACTIVES[k.aid]; p.active = { iid: k.aid, charges: k.charges !== undefined ? k.charges : def.cost }; - addToast(def.name, def.desc + ' — [SPACE] when charged'); + addToast(def.name, def.desc + ' — [SPACE] when charged', 5.5); spawnText(p.x, p.y - 14, def.name.toUpperCase(), '#55f5dc'); Sfx.item(); for (const q of G.pickups) if (q.type === 'itemspot') q.dead = true; // remove pedestal base diff --git a/js/sfxbank.js b/js/sfxbank.js index d3f1852..10ae324 100644 --- a/js/sfxbank.js +++ b/js/sfxbank.js @@ -111,7 +111,7 @@ const SfxBank = { if (this.buffers.has(name) || this.pending.has(name) || this.failed.has(name)) return; const file = this.FILES[name]; if (!file || !this.ctx || typeof fetch !== 'function') return; - const job = fetch('/assets/sfx/' + encodeURIComponent(file) + '?v=42') + const job = fetch('/assets/sfx/' + encodeURIComponent(file) + '?v=43') .then(r => { if (!r.ok) throw new Error('HTTP ' + r.status); return r.arrayBuffer(); }) .then(bytes => this.ctx.decodeAudioData(bytes)) .then(buffer => this.buffers.set(name, this.trim(buffer))) diff --git a/js/sprites.js b/js/sprites.js index 3482d18..b668c1d 100644 --- a/js/sprites.js +++ b/js/sprites.js @@ -84,7 +84,7 @@ const Sprites = { const img = new Image(); img.onload = () => { this.imgs[name] = img; if (--pending === 0) G.imagesLoaded = true; }; img.onerror = () => { if (--pending === 0) G.imagesLoaded = true; }; - img.src = 'assets/' + name + '.png?v=42'; + img.src = 'assets/' + name + '.png?v=43'; } }, diff --git a/js/state.js b/js/state.js index 4d7bcb7..a33b027 100644 --- a/js/state.js +++ b/js/state.js @@ -73,8 +73,8 @@ function powerScore() { } function addShake(n) { G.shake = Math.min(G.shake + n, 18); } -function addToast(text, sub) { - G.toasts.push({ text, sub: sub || '', t: 0 }); +function addToast(text, sub, dur) { + G.toasts.push({ text, sub: sub || '', t: 0, dur: dur || 2.5 }); if (G.toasts.length > 3) G.toasts.shift(); } function addScore(n) { diff --git a/package.json b/package.json index 12062b9..c6256af 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "meatslicer", "productName": "MeatSlicer", - "version": "0.1.0", + "version": "0.2.0", "private": true, "description": "A Butcher's Descent - clear, harvest, descend.", "main": "desktop/main.js",