diff --git a/www/html/Game/public/js/play.js b/www/html/Game/public/js/play.js index 8ba511d..7227cea 100644 --- a/www/html/Game/public/js/play.js +++ b/www/html/Game/public/js/play.js @@ -3944,7 +3944,9 @@ function isFrogger() { return mapData && mapData.gameType === 'frogger'; } function isGauntlet() { return mapData && mapData.gameType === 'gauntlet'; } function isGauntletFaceRightMapMno9kb07() { - return !!(isGauntlet() && playSessionMapId === GAUNTLET_FACE_RIGHT_MAP_ID); + if (!isGauntlet()) return false; + /** ใช้ currentPlayMapId (session → mapData.id → ?map=) ให้สอดคล้อง runway / timing — กัน HUD crown หลุดค้างเป็นแผงเก่าแนวตั้งทับ TIME */ + return (currentPlayMapId() || '').trim() === GAUNTLET_FACE_RIGHT_MAP_ID; } /** Crown heist rules + UI (เดียวกับหันขวา — ฉาก mno9kb07) */ function isGauntletCrownHeistMapPlay() { @@ -14171,8 +14173,6 @@ function drawGauntletLaserColumnScreen(rx, ry, rw, rh) { ctx.save(); - ctx.fillStyle = gauntletLaserFillColor; - ctx.fillRect(rx, ry, rw, rh); const topRec = gauntletLaserTopUrl ? ensureGauntletAssetImage(gauntletLaserTopUrl) : null; const botRec = gauntletLaserBottomUrl ? ensureGauntletAssetImage(gauntletLaserBottomUrl) : null; const lineRec = gauntletLaserLineUrl ? ensureGauntletAssetImage(gauntletLaserLineUrl) : null; @@ -14184,8 +14184,14 @@ if (botRec && botRec.img.complete && botRec.img.naturalWidth > 0) { botH = Math.min(rh * 0.4, rw * botRec.img.naturalHeight / botRec.img.naturalWidth); } + const lineReady = !!(lineRec && lineRec.img.complete && lineRec.img.naturalWidth > 0 && rh > 1); + /* ไม่เติมสีคอลัมน์ทึบเมื่อมีรูปเส้นแล้ว — กันทึบโปร่งซ้าย/ขวาเลเซอร์ดูเหมือนแถบ UI/scrollbar */ + if (!lineReady) { + ctx.fillStyle = gauntletLaserFillColor; + ctx.fillRect(rx, ry, rw, rh); + } /* เส้นกลาง tile ทั้งความสูงคอลัมน์ แล้วค่อยวาดหัว/ท้ายทับ — ให้ลำแสงต่อเนื่องแบบสินทรัพย์รวม (รูปอ้างอิง) */ - if (lineRec && lineRec.img.complete && lineRec.img.naturalWidth > 0 && rh > 1) { + if (lineReady) { const iw = lineRec.img.naturalWidth; const ih = lineRec.img.naturalHeight; const scale = rw / iw; diff --git a/www/html/Game/public/js/version.js b/www/html/Game/public/js/version.js index 5cc330f..35c9bb1 100644 --- a/www/html/Game/public/js/version.js +++ b/www/html/Game/public/js/version.js @@ -1,6 +1,6 @@ // ทุกครั้งที่มีการเพิ่มหรือเปลี่ยน ให้เพิ่ม v +0.0001 // หลังแก้ค่าแล้วต้อง copy ไป path ที่ Nginx ชี้ (หรือรัน copy-frogger-files-only.sh) ถึงจะเห็นบนเว็บ -window.APP_VERSION = '0.0258'; +window.APP_VERSION = '0.0260'; document.addEventListener('DOMContentLoaded', function () { var t = document.querySelector('.version-tag'); if (t) t.textContent = 'v ' + window.APP_VERSION; diff --git a/www/html/Game/public/play.html b/www/html/Game/public/play.html index 819004c..f83677d 100644 --- a/www/html/Game/public/play.html +++ b/www/html/Game/public/play.html @@ -1836,6 +1836,41 @@ align-items: flex-start; gap: 0.32rem; } + /* Last Light / quiz_carry crown: บังคับแผง SCORE เข้า grid แนวนอน แม้คลาส --crown-strip ยังไม่ติด — กันแผงเก่า position:absolute ซ้อนแนวตั้งทับ TIME ซ้าย */ + #play-cyber-hud.play-cyber-hud--gauntlet-crown-strip > .play-cyber-scoreboard { + position: static; + top: auto; + left: auto; + right: auto; + grid-area: crownScore; + width: 100%; + min-width: 0; + max-width: none; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + gap: 0.55rem; + box-sizing: border-box; + background: transparent; + border: none; + box-shadow: none; + padding: 0.28rem 0.2rem 0.32rem 0; + } + #play-cyber-hud.play-cyber-hud--gauntlet-crown-strip > .play-cyber-scoreboard .play-cyber-score-list { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-items: stretch; + gap: clamp(6px, 1vw, 12px); + flex: 1 1 auto; + min-width: 0; + max-height: none; + overflow-x: auto; + overflow-y: hidden; + width: 100%; + box-sizing: border-box; + } #play-cyber-hud.play-cyber-hud--gauntlet-crown-strip .play-cyber-scoreboard.play-cyber-scoreboard--crown-strip { grid-area: crownScore; width: 100%; @@ -2112,10 +2147,9 @@ justify-content: flex-start; gap: 0.25rem; } + /* ไมค์ + กล่อง LINK (O) เป็นของตกแต่ง mock — ซ่อนไม่ให้ซ้ำ/สับสนกับคะแนนจริง (ผู้ใช้เห็นเป็นกล่อง 0 + สี่เหลี่ยม) */ #play-cyber-hud.play-cyber-hud--gauntlet-crown-strip .play-cyber-op-widgets { - display: flex; - align-self: center; - margin-top: 0.06rem; + display: none !important; } .play-cyber-link-status { display: flex; @@ -2845,7 +2879,7 @@ - +