const assetRoot = '../assets/external/yumi-static/other/'; const img = (name) => `${assetRoot}${name}`; const modeData = { classic: { background: 'lucky_box_bg_new.png', prices: [500, 5000, 25000], drawAmount: 500, board: 'grid', prizes: [ ['Coral Crown', 99, 'lucky_box_reward.png'], ['Aurora Wing', 500, 'christmasCheckIn_lottery_go.png'], ['Moon Card', 520, 'lucky_box_select.png'], ['Snow Pet', 777, 'christmasCheckIn_lottery_select.png'], ['Love Banner', 1314, 'lucky_box_title_top.png'], ['Emerald Ring', 1777, 'lucky_box_reward_bg.png'], ['Royal Chest', 3999, 'lucky_box_go.png'], ['Crystal Castle', 199999, 'lucky_box_bg_new.png'] ] }, luxury: { background: 'lucky_box_tow_bg_new.png', prices: [2000, 20000, 100000], drawAmount: 2000, board: 'wheel', prizes: [ ['Pink Meteor', 2000, 'lucky_box_tow_reward.png'], ['Cupid Wand', 2999, 'lucky_box_tow_pointer.png'], ['Love Ring', 5200, 'lucky_box_tow_reward_yuan.png'], ['Lucky Palace', 6666, 'lucky_box_tow_reward_bg.png'], ['Starlight', 10000, 'lucky_box_tow_reward_desc.png'], ['Rose Horse', 15000, 'lucky_box_tow_reward_top.png'], ['Neon Gift', 50000, 'lucky_box_tow_reward_bottom.png'], ['Galaxy Badge', 299999, 'lucky_box_tow_bg_new.png'] ] }, advanced: { background: 'lucky_box_three_bg_new.png', prices: [10000, 100000, 500000], drawAmount: 10000, board: 'grid', prizes: [ ['Cyber Cat', 2000, 'lucky_box_three_notice.png'], ['Golden Ride', 4500, 'lucky_box_three_gold.png'], ['Black Rose', 6000, 'lucky_box_three_reward_bg.png'], ['Holy Trophy', 10000, 'lucky_box_three_select.png'], ['Silver Cup', 20000, 'lucky_box_three_history.png'], ['Royal Cake', 50000, 'lucky_box_three_go.png'], ['Night Throne', 100000, 'lucky_box_three_rule.png'], ['Ice Castle', 200000, 'lucky_box_three_unbtn.png'], ['Gold Palace', 300000, 'lucky_box_three_unselect.png'], ['Star Couple', 400000, 'lucky_box_three_default.png'], ['Dragon Ride', 500000, 'lucky_box_three_bg_new.png'], ['Blue Flame', 1000000, 'lucky_box_three_btn.png'] ] } }; const state = { mode: 'classic', activeButton: 0, activeIndex: null, spinning: false, rotateDeg: 0, balance: 230610000, history: [] }; const winners = [ ['ZAYAN', 'Cyber Cat'], ['Looma', 'Love Ring'], ['Rima', 'Crystal Castle'], ['M7MD', 'Golden Ride'], ['Yara', 'Pink Meteor'] ]; const page = document.querySelector('#page'); const stage = document.querySelector('#stage'); const buyRow = document.querySelector('#buyRow'); const balanceTop = document.querySelector('#balanceTop'); const balanceBottom = document.querySelector('#balanceBottom'); const tickerTrack = document.querySelector('#tickerTrack'); const rewardDialog = document.querySelector('#rewardDialog'); const rewardList = document.querySelector('#rewardList'); const rewardText = document.querySelector('#rewardText'); const historyDialog = document.querySelector('#historyDialog'); const historyList = document.querySelector('#historyList'); function money(value) { return Number(value).toLocaleString('en-US'); } function prizeObjects() { return modeData[state.mode].prizes.map(([name, value, cover]) => ({ name, value, coverUrl: img(cover) })); } function setMode(mode) { state.mode = mode; state.activeButton = 0; state.activeIndex = null; render(); } function render() { const mode = modeData[state.mode]; page.className = `wheel-page mode-${state.mode}`; page.style.backgroundImage = `url("${img(mode.background)}")`; balanceTop.textContent = money(state.balance); balanceBottom.textContent = money(state.balance); document.querySelectorAll('.tabs button').forEach((button) => { button.classList.toggle('active', button.dataset.mode === state.mode); }); tickerTrack.innerHTML = winners.concat(winners).map(([name, reward]) => ( `Congratulations to ${name} for receiving the ${reward} award` )).join(''); renderStage(); renderBuyRow(); } function renderStage() { const mode = modeData[state.mode]; if (mode.board === 'wheel') { renderWheel(); return; } const prizes = prizeObjects(); const cells = [ prizeCard(prizes[0], 0), prizeCard(prizes[1], 1), prizeCard(prizes[2], 2), prizeCard(prizes[3], 3), ``, prizeCard(prizes[4], 4), prizeCard(prizes[5], 5), prizeCard(prizes[6], 6), prizeCard(prizes[7], 7) ]; stage.innerHTML = `