feat(game): 添加游戏大厅音频控制和用户协议功能

- 实现音频资源配置和音频商店状态管理
- 添加用户协议和游戏规则的多语言支持
- 集成音频播放解锁机制和声音开关功能
- 更新API客户端以支持根路径候选
- 优化游戏历史记录组件的滚动加载逻辑
- 添加桌面端控制按钮的动画效果和交互反馈
- 实现语言切换和音效控制的UI组件
- 增加下注相关的状态管理和错误提示
- 完善应用偏好设置的存储和持久化逻辑
This commit is contained in:
JiaJun
2026-05-16 18:02:59 +08:00
parent 5dd4e31db4
commit 85b4d9481f
46 changed files with 1500 additions and 362 deletions

View File

@@ -124,6 +124,19 @@ export default {
'This area will later load the real event announcement body, rich media, and a longer scrollable message. The current version focuses on shared multilingual modal wiring.',
check: 'View',
},
protocol: {
title: 'User Agreement',
content:
'Welcome to the 36-Character Flower game lobby.\n\nBefore entering the site, please read and confirm the following:\n1. You have reached the legal age required in your region.\n2. You understand the current content is only for use within this account and this site, and must not be copied, redistributed, or used for unlawful purposes.\n3. You agree to follow the site rules regarding account usage, top-up, withdrawal, risk control, and gameplay.\n4. By continuing into the game lobby, you acknowledge and accept the relevant service terms and data handling rules.\n\nPlease check the agreement to continue.',
agreeLabel: 'I have read and agree to the User Agreement',
confirm: 'Agree and Enter',
},
rules: {
title: 'Game Rules',
content:
'1. Basic Gameplay\n1) After each round starts, players may select one or more numbers on the board to place bets.\n2) After betting closes, the system enters the draw phase and settles rewards based on the round result.\n3) Different chip levels correspond to different bet amounts, subject to the current table limits and configuration.\n\n2. Betting Notes\n1) Bets can only be submitted during the betting phase.\n2) Before confirming, please verify your selected numbers, chip amount, and total bet.\n3) If your balance is insufficient, the round is no longer valid, or betting has closed, the request will be rejected.\n\n3. Draw and Settlement\n1) The final displayed draw result is the valid outcome.\n2) Hit rules, odds, payouts, and streak performance are settled in real time according to the current room configuration.\n3) In case of network fluctuation, please refer to the re-synced official data.\n\n4. Additional Notes\n1) Please manage your play time responsibly.\n2) Any abnormal behavior intended to interfere with the system, exploit rewards, or bypass risk control is strictly prohibited.\n3) The platform reserves the right to review orders, payouts, and account status in exceptional situations.',
confirm: 'Understood',
},
procedures: {
title: 'Top Up / Withdraw',
contentPlaceholder: 'Choose the action you want to continue with',
@@ -178,7 +191,7 @@ export default {
implementationBody:
'Next steps are the real API, WebSocket, full UI store, and round lifecycle state machine.',
limitsTitle: 'Table limits',
limitsSubtitle: 'Derived from dashboard mock data',
limitsSubtitle: 'Derived from the current lobby data',
minBet: 'Min bet',
maxBet: 'Max bet',
},
@@ -193,6 +206,15 @@ export default {
loginRequired: 'Please log in before entering the game',
loginSuccess: 'Login successful',
registerSuccess: 'Registration successful',
insufficientBalance: 'Insufficient balance. Please adjust your bet.',
betUnavailable: 'Betting is not available for this round',
betPlaced: 'Bet placed successfully',
noRecentSuccessfulBet:
'No successful bet from the previous round was found',
repeatSelectionsRestored:
'Selections from the last successful round have been restored',
betRejected: 'Bet was not accepted',
betPlaceFailed: 'Failed to place the bet. Please try again.',
},
},
auth: {
@@ -299,6 +321,9 @@ export default {
selected: 'Selected',
totalBet: 'Total Bet',
confirm: 'Confirm',
selectNumbers: 'Select Numbers',
insufficientBalance: 'Insufficient Balance',
submitting: 'Submitting...',
actions: {
clear: 'Clear',
repeat: 'Repeat',

View File

@@ -123,6 +123,19 @@ export default {
'Bagian ini nantinya akan memuat konten pengumuman acara yang sebenarnya, materi visual, dan pesan panjang yang dapat digulir. Versi saat ini fokus pada sambungan modal multibahasa.',
check: 'Lihat',
},
protocol: {
title: 'Perjanjian Pengguna',
content:
'Selamat datang di lobi game 36-Character Flower.\n\nSebelum masuk ke situs, mohon baca dan konfirmasi hal berikut:\n1. Kamu telah mencapai usia legal yang diwajibkan di wilayahmu.\n2. Kamu memahami bahwa konten saat ini hanya untuk penggunaan pada akun dan situs ini, serta tidak boleh disalin, disebarkan, atau digunakan untuk tujuan yang melanggar hukum.\n3. Kamu setuju untuk mematuhi aturan situs terkait akun, isi ulang, penarikan, kontrol risiko, dan permainan.\n4. Dengan melanjutkan ke lobi game, kamu menyatakan telah mengetahui dan menerima ketentuan layanan serta aturan pemrosesan data yang berlaku.\n\nSilakan centang persetujuan untuk melanjutkan.',
agreeLabel: 'Saya telah membaca dan menyetujui Perjanjian Pengguna',
confirm: 'Setuju dan Masuk',
},
rules: {
title: 'Aturan Permainan',
content:
'1. Gameplay Dasar\n1) Setelah setiap ronde dimulai, pemain dapat memilih satu atau beberapa angka di papan untuk memasang taruhan.\n2) Setelah taruhan ditutup, sistem masuk ke fase undian dan menyelesaikan hadiah berdasarkan hasil ronde.\n3) Level chip yang berbeda mewakili jumlah taruhan yang berbeda, mengikuti batas meja dan konfigurasi saat ini.\n\n2. Catatan Taruhan\n1) Taruhan hanya bisa dikirim saat fase taruhan berlangsung.\n2) Sebelum konfirmasi, periksa kembali angka yang dipilih, nominal chip, dan total taruhan.\n3) Jika saldo tidak cukup, ronde tidak lagi valid, atau taruhan sudah ditutup, permintaan akan ditolak.\n\n3. Undian dan Penyelesaian\n1) Hasil undian akhir yang ditampilkan sistem adalah hasil yang berlaku.\n2) Aturan kena, odds, pembayaran, dan performa streak diselesaikan secara real time sesuai konfigurasi room saat ini.\n3) Jika terjadi gangguan jaringan, silakan mengacu pada data resmi setelah sinkronisasi ulang.\n\n4. Catatan Tambahan\n1) Mohon atur waktu bermain secara bertanggung jawab.\n2) Segala tindakan tidak wajar untuk mengganggu sistem, mengeksploitasi hadiah, atau menghindari kontrol risiko dilarang keras.\n3) Platform berhak meninjau pesanan, pembayaran, dan status akun dalam kondisi khusus.',
confirm: 'Saya Mengerti',
},
procedures: {
title: 'Isi Ulang / Tarik Dana',
contentPlaceholder: 'Pilih tindakan yang ingin kamu lanjutkan',
@@ -177,7 +190,7 @@ export default {
implementationBody:
'Langkah berikutnya adalah API nyata, WebSocket, UI store penuh, dan state machine siklus ronde.',
limitsTitle: 'Batas meja',
limitsSubtitle: 'Berasal dari data mock dashboard',
limitsSubtitle: 'Berasal dari data lobby saat ini',
minBet: 'Bet minimum',
maxBet: 'Bet maksimum',
},
@@ -192,6 +205,15 @@ export default {
loginRequired: 'Silakan masuk sebelum memasuki game',
loginSuccess: 'Berhasil masuk',
registerSuccess: 'Pendaftaran berhasil',
insufficientBalance: 'Saldo tidak cukup. Silakan sesuaikan taruhan.',
betUnavailable: 'Taruhan tidak tersedia untuk ronde ini',
betPlaced: 'Taruhan berhasil dikirim',
noRecentSuccessfulBet:
'Tidak ada riwayat taruhan berhasil dari ronde sebelumnya',
repeatSelectionsRestored:
'Pilihan dari ronde berhasil terakhir telah dipulihkan',
betRejected: 'Taruhan tidak diterima',
betPlaceFailed: 'Gagal mengirim taruhan. Silakan coba lagi.',
},
},
auth: {
@@ -298,6 +320,9 @@ export default {
selected: 'Dipilih',
totalBet: 'Total Bet',
confirm: 'Konfirmasi',
selectNumbers: 'Pilih Nombor',
insufficientBalance: 'Saldo Tidak Cukup',
submitting: 'Mengirim...',
actions: {
clear: 'Hapus',
repeat: 'Ulang',

View File

@@ -126,6 +126,20 @@ export default {
'Bahagian ini akan memuatkan kandungan notis acara sebenar, bahan visual, dan mesej boleh skrol yang lebih panjang. Versi semasa memfokuskan sambungan modal pelbagai bahasa.',
check: 'Semak',
},
protocol: {
title: 'Perjanjian Pengguna',
content:
'Selamat datang ke lobi permainan 36-Character Flower.\n\nSebelum memasuki laman ini, sila baca dan sahkan perkara berikut:\n1. Anda telah mencapai umur sah yang ditetapkan di kawasan anda.\n2. Anda memahami bahawa kandungan semasa hanya untuk digunakan dalam akaun dan laman ini, dan tidak boleh disalin, diedarkan semula, atau digunakan untuk tujuan yang menyalahi undang-undang.\n3. Anda bersetuju untuk mematuhi peraturan laman berkaitan akaun, tambah nilai, pengeluaran, kawalan risiko, dan permainan.\n4. Dengan meneruskan ke lobi permainan, anda mengakui dan menerima terma perkhidmatan serta peraturan pemprosesan data yang berkaitan.\n\nSila tandakan persetujuan untuk meneruskan.',
agreeLabel:
'Saya telah membaca dan bersetuju dengan Perjanjian Pengguna',
confirm: 'Setuju dan Masuk',
},
rules: {
title: 'Peraturan Permainan',
content:
'1. Permainan Asas\n1) Selepas setiap pusingan bermula, pemain boleh memilih satu atau beberapa nombor pada papan untuk membuat taruhan.\n2) Selepas taruhan ditutup, sistem memasuki fasa cabutan dan menyelesaikan ganjaran berdasarkan keputusan pusingan.\n3) Tahap cip yang berbeza mewakili jumlah taruhan yang berbeza, tertakluk kepada had meja dan konfigurasi semasa.\n\n2. Nota Taruhan\n1) Taruhan hanya boleh dihantar semasa fasa taruhan.\n2) Sebelum mengesahkan, sila semak nombor yang dipilih, jumlah cip, dan jumlah taruhan keseluruhan.\n3) Jika baki tidak mencukupi, pusingan tidak lagi sah, atau taruhan telah ditutup, permintaan akan ditolak.\n\n3. Cabutan dan Penyelesaian\n1) Keputusan cabutan akhir yang dipaparkan sistem ialah keputusan yang sah.\n2) Peraturan kena, odds, bayaran, dan prestasi streak diselesaikan secara masa nyata mengikut konfigurasi bilik semasa.\n3) Jika berlaku gangguan rangkaian, sila rujuk data rasmi selepas penyegerakan semula.\n\n4. Nota Tambahan\n1) Sila urus masa permainan anda dengan bertanggungjawab.\n2) Sebarang tingkah laku tidak normal untuk mengganggu sistem, mengeksploitasi ganjaran, atau memintas kawalan risiko adalah dilarang sama sekali.\n3) Platform berhak menyemak pesanan, bayaran, dan status akaun dalam keadaan khas.',
confirm: 'Saya Faham',
},
procedures: {
title: 'Tambah Nilai / Pengeluaran',
contentPlaceholder: 'Pilih tindakan yang ingin anda teruskan',
@@ -180,7 +194,7 @@ export default {
implementationBody:
'Langkah seterusnya ialah API sebenar, WebSocket, UI store penuh, dan state machine kitaran pusingan.',
limitsTitle: 'Had meja',
limitsSubtitle: 'Diambil daripada data mock dashboard',
limitsSubtitle: 'Diambil daripada data lobi semasa',
minBet: 'Taruhan minimum',
maxBet: 'Taruhan maksimum',
},
@@ -195,6 +209,15 @@ export default {
loginRequired: 'Sila log masuk sebelum memasuki permainan',
loginSuccess: 'Log masuk berjaya',
registerSuccess: 'Pendaftaran berjaya',
insufficientBalance: 'Baki tidak mencukupi. Sila laraskan taruhan.',
betUnavailable: 'Taruhan tidak tersedia untuk pusingan ini',
betPlaced: 'Taruhan berjaya dihantar',
noRecentSuccessfulBet:
'Tiada rekod taruhan berjaya untuk pusingan sebelumnya',
repeatSelectionsRestored:
'Pilihan dari pusingan berjaya terakhir telah dipulihkan',
betRejected: 'Taruhan tidak diterima',
betPlaceFailed: 'Gagal menghantar taruhan. Sila cuba lagi.',
},
},
auth: {
@@ -301,6 +324,9 @@ export default {
selected: 'Dipilih',
totalBet: 'Jumlah Taruhan',
confirm: 'Sahkan',
selectNumbers: 'Pilih Nombor',
insufficientBalance: 'Baki Tidak Mencukupi',
submitting: 'Menghantar...',
actions: {
clear: 'Kosongkan',
repeat: 'Ulang',

View File

@@ -121,6 +121,19 @@ export default {
'这里后续将接入真实的活动公告内容、图文素材和滚动阅读区域。当前版本先用多语言结构完成桌面端公告弹窗能力。',
check: '查看',
},
protocol: {
title: '用户协议',
content:
'欢迎进入 36 字花游戏大厅。\n\n进入站点前请先阅读并确认以下协议内容\n1. 你已年满所在地区法律要求的法定年龄。\n2. 你理解当前展示内容仅限当前账号与当前站点使用,不得擅自复制、转发或用于非法用途。\n3. 你同意遵守站点的账户、充值、提现、风控与游戏规则说明。\n4. 若你继续进入游戏大厅,即表示你已知悉并接受相关服务条款与数据处理规则。\n\n请勾选同意后继续进入游戏界面。',
agreeLabel: '我已阅读并同意《用户协议》',
confirm: '同意并进入',
},
rules: {
title: '玩法规则',
content:
'一、基础玩法\n1. 每一局开始后,玩家可以在盘面上选择一个或多个号码进行下注。\n2. 系统会在封盘后进入开奖阶段,并根据当期结果结算对应奖金。\n3. 不同下注档位对应不同下注金额,实际以当前系统配置和桌限为准。\n\n二、下注说明\n1. 只有在“下注中”阶段可以提交下注。\n2. 每次提交前,请确认已选号码、下注金额和总下注额。\n3. 若余额不足、期号失效或已封盘,系统将拒绝该次下注请求。\n\n三、开奖与结算\n1. 开奖结果以系统最终展示为准。\n2. 命中规则、赔率、派彩与连中表现按当前房间配置实时结算。\n3. 如遇网络波动,请以重新同步后的官方数据为准。\n\n四、其他说明\n1. 请合理安排游戏时间,理性参与。\n2. 严禁使用任何异常手段干扰系统、刷取奖励或规避风控。\n3. 平台保留在异常情况下对订单、派奖和账户状态进行复核的权利。',
confirm: '我知道了',
},
procedures: {
title: '充值 / 提现',
contentPlaceholder: '请选择你要进行的操作',
@@ -172,7 +185,7 @@ export default {
implementationBody:
'下一步会继续接入真实 API、WebSocket、完整 UI Store 和回合状态机。',
limitsTitle: '桌限信息',
limitsSubtitle: '来自 dashboard mock 数据',
limitsSubtitle: '来自当前大厅数据',
minBet: '最低下注',
maxBet: '最高下注',
},
@@ -187,6 +200,13 @@ export default {
loginRequired: '请先登录后进入游戏',
loginSuccess: '登录成功',
registerSuccess: '注册成功',
insufficientBalance: '余额不足,请调整下注金额',
betUnavailable: '当前期不可下注',
betPlaced: '下注成功',
noRecentSuccessfulBet: '暂无上一局成功下注记录',
repeatSelectionsRestored: '已恢复上一局成功下注的花字',
betRejected: '下注未受理',
betPlaceFailed: '下注失败,请稍后重试',
},
},
auth: {
@@ -291,6 +311,9 @@ export default {
selected: '已选',
totalBet: '总下注',
confirm: '确认',
selectNumbers: '请选择号码',
insufficientBalance: '余额不足',
submitting: '提交中...',
actions: {
clear: '清空',
repeat: '重复',