tower babel done
This commit is contained in:
@@ -43,15 +43,15 @@
|
||||
const STACK_TOWER_ROPE_DRAW_T1 = 1.0;
|
||||
/** ปลายบนเชือก (จอ): ยืดเหนือขอบบนแคนวาสเป็นเศษส่วนของความสูง (เช่น 0.25 = 25% นอกจอด้านบน) */
|
||||
const STACK_TOWER_ROPE_TOP_ABOVE_CANVAS_FRAC = 0.25;
|
||||
/** progress ≥ นี้: แอนิเมตซูม + เลื่อนแมป (ครั้งเดียวต่อรอบ stack) */
|
||||
const STACK_TOWER_POST50_PROGRESS_THRESH = 50;
|
||||
/** progress ≥ นี้ (ฉาก Tower mnn93hpi): รูป heavy + ความกว้าง heavy = เท่าเดียวกับปกติ × ค่าด้านล่าง + แอนิเมตซูม/เลื่อน */
|
||||
const STACK_TOWER_POST50_PROGRESS_THRESH = 60;
|
||||
const STACK_TOWER_POST50_ZOOM_MUL = 1.1;
|
||||
/** เลื่อน BG แนวตั้งเท่าเศษส่วนของความสูงแคนวาส (จอ) */
|
||||
const STACK_TOWER_POST50_MAP_SHIFT_SCREEN_FRAC = 0.1;
|
||||
const STACK_TOWER_POST50_ANIM_MS = 680;
|
||||
/** แมป mnn93hpi: สเกลความกว้าง/ความสูงชั้นของบล็อกในโลก (1 = ขนาดเดิม) */
|
||||
const STACK_TOWER_BLOCK_WORLD_SCALE = 1.5;
|
||||
/** หลัง 50%: เลื่อนกล้องลงในมุมมองจอเท่าเศษส่วนของความสูงแคนวาส (เช่น 0.25 = 25% ของความสูงจอ) */
|
||||
/** หลังเกณฑ์ progress (Tower): เลื่อนกล้องลงในมุมมองจอเท่าเศษส่วนของความสูงแคนวาส (เช่น 0.25 = 25% ของความสูงจอ) */
|
||||
const STACK_TOWER_POST50_VIEW_SHIFT_SCREEN_FRAC = 0.25;
|
||||
/** Mega Virus — balloon_boss ฉากภารกิจ (flow เดียวกับ crown / mno9kb07) รูปใน `/Game/img/MegaVirus` */
|
||||
const BALLOON_BOSS_MISSION_MAP_ID = 'mnq1eml7';
|
||||
@@ -70,20 +70,20 @@
|
||||
const STACK_STABLE_SUPPORT_RATIO_MIN = 0.62;
|
||||
/** Stack ทั่วไป (ไม่ใช่ Tower post-50%): บล็อก heavy กว้างกว่าปกติ (~382×72 vs 314×103) */
|
||||
const STACK_BLOCK_HEAVY_WIDTH_MULT = 382 / 314;
|
||||
/** Tower live + progress ≥50%: ลดความกว้างบล็อก 40% (เหลือ 60%) — ความสูงชั้น `layerWorldH` เท่าเดิม */
|
||||
/** Tower live + progress ≥เกณฑ์ + heavy: ความกว้างบล็อก = ปกติ × ค่านี้ (เช่น 0.6 = 60% ของช่องปกติ — รูปใหญ่วาดในกรอบเดียวกัน) */
|
||||
const STACK_TOWER_POST50_WIDTH_MULT = 0.6;
|
||||
|
||||
function stackBlockWidthTilesForPlay(baseTiles, heavy) {
|
||||
const b = Number(baseTiles);
|
||||
const base = Number.isFinite(b) ? Math.max(0.85, Math.min(3.2, b)) : 2;
|
||||
const towerPost50 =
|
||||
const towerHeavyNarrow =
|
||||
!!heavy &&
|
||||
isStackTowerMissionUiMapPlay() &&
|
||||
getStackTowerCameraFollowPlayConfig().enabled &&
|
||||
stackTowerMissionPhase === 'live' &&
|
||||
stackMini &&
|
||||
Number.isFinite(Number(stackMini.progressPct)) &&
|
||||
Number(stackMini.progressPct) >= 50;
|
||||
if (towerPost50) {
|
||||
Number(stackMini.progressPct) >= STACK_TOWER_POST50_PROGRESS_THRESH;
|
||||
if (towerHeavyNarrow) {
|
||||
const w = base * STACK_TOWER_POST50_WIDTH_MULT;
|
||||
return Math.max(0.85, Math.min(3.2, Math.round(w * 200) / 200));
|
||||
}
|
||||
@@ -282,11 +282,11 @@
|
||||
function pickStackBlockHeavyVisual(seat) {
|
||||
const slot = Math.max(0, Math.min(5, (Math.floor(Number(seat)) || 1) - 1));
|
||||
const hU = normalizeGauntletAssetUrlForPlay(playStackBlockHeavyUrls[slot] || '');
|
||||
/** Tower mnn93hpi: ตั้งแต่ 50% ของ Progress 100% (ตาม stackTowerProgressBlocks) → ใช้รูป heavy จาก admin — นอก live ไม่สุ่ม heavy */
|
||||
/** Tower mnn93hpi: ตั้งแต่เกณฑ์ progress (ตาม stackTowerProgressBlocks) → ใช้รูป heavy จาก admin — นอก live ไม่สุ่ม heavy */
|
||||
if (isStackTowerMissionUiMapPlay()) {
|
||||
if (!(stackTowerMissionPhase === 'live' && stackMini)) return false;
|
||||
const p = Number(stackMini.progressPct);
|
||||
if (!Number.isFinite(p) || p < 50) return false;
|
||||
if (!Number.isFinite(p) || p < STACK_TOWER_POST50_PROGRESS_THRESH) return false;
|
||||
return !!hU;
|
||||
}
|
||||
const pct = Math.max(0, Math.min(100, Math.floor(Number(playStackHeavyBlockPercent) || 0)));
|
||||
@@ -2270,7 +2270,7 @@
|
||||
let stackTowerMissionDeferredPhase = null;
|
||||
let stackTowerSessionStartAt = 0;
|
||||
let stackTowerMissionEndedOnce = false;
|
||||
/** progress ข้าม 50%: เริ่มแอนิเมตซูม+เลื่อนแมป — null ยังไม่ข้าม, ตัวเลข = performance.now() ตอนเริ่ม */
|
||||
/** progress ข้ามเกณฑ์ Tower: เริ่มแอนิเมตซูม+เลื่อนแมป — null ยังไม่ข้าม, ตัวเลข = performance.now() ตอนเริ่ม */
|
||||
let stackTowerPost50AnimStartMs = null;
|
||||
/** แฟลชรูปผล Tower (timeup / gameover / complete) ก่อน GCM 5 วิ */
|
||||
let stackTowerResultFlashTimer = null;
|
||||
@@ -4380,7 +4380,7 @@
|
||||
return x * x * (3 - 2 * x);
|
||||
}
|
||||
|
||||
/** Tower live + progress ≥50%: 0→1 ระหว่าง STACK_TOWER_POST50_ANIM_MS — ใช้เฉพาะเมื่อเปิดกล้องตามหอ (ไม่งั้นฉากธรรมดาไม่เลื่อน/ซูมหลัง 50%) */
|
||||
/** Tower live + progress ≥เกณฑ์: 0→1 ระหว่าง STACK_TOWER_POST50_ANIM_MS — ใช้เฉพาะเมื่อเปิดกล้องตามหอ (ไม่งั้นฉากธรรมดาไม่เลื่อน/ซูมหลังเกณฑ์) */
|
||||
function getStackTowerPost50AnimEasePlay() {
|
||||
if (!getStackTowerCameraFollowPlayConfig().enabled) {
|
||||
stackTowerPost50AnimStartMs = null;
|
||||
@@ -8813,7 +8813,7 @@
|
||||
}
|
||||
|
||||
/**
|
||||
* progress ≥50% + ชั้นพอ: ไม่วาดชั้นล่าง (ข้าม draw) — ตำแหน่ง Y ยังใช้ชั้นจริง (floorY-(i+1)*h)
|
||||
* progress ≥เกณฑ์ Tower + ชั้นพอ: ไม่วาดชั้นล่าง (ข้าม draw) — ตำแหน่ง Y ยังใช้ชั้นจริง (floorY-(i+1)*h)
|
||||
* เพื่อไม่ให้กองลอยหลุดจากฐานแมปเมื่อเทียบกริด
|
||||
*/
|
||||
function getStackTowerVisualHiddenLayerCountPlay() {
|
||||
|
||||
@@ -3203,7 +3203,7 @@
|
||||
</div>
|
||||
<script src="/Game/socket.io/socket.io.js"></script>
|
||||
<script src="js/version.js?v=0.0306"></script>
|
||||
<script src="js/play.js?v=0.0408"></script>
|
||||
<script src="js/play.js?v=0.0409"></script>
|
||||
<div class="version-tag">v —</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user