/* ------------------------ 1. GAME STATE & VARIABLES ------------------------ */ let board = []; let currentScore = 0; // Ambil username dari sessionStorage const currentUser = sessionStorage.getItem("loggedInUser") || "guest"; // Buat nama kunci unik const storageKey = 'highScore2048_' + currentUser; // Ambil skor milik user tersebut let highScore = parseInt(localStorage.getItem(storageKey)) || 0; let lastMoveDir = null; let isMoving = false; let mergesInCurrentMove = 0; // Sound State (baca dari localStorage atau default ON) let soundState = { bg: localStorage.getItem('sound_bg') !== 'false', pop: localStorage.getItem('sound_pop') !== 'false', merge: localStorage.getItem('sound_merge') !== 'false' }; // Volume State (0-100 for each sound) let volumeState = { music: parseInt(localStorage.getItem('vol_music')) || 25, pop: parseInt(localStorage.getItem('vol_pop')) || 90, merge: parseInt(localStorage.getItem('vol_merge')) || 100 };