feat(ui): Minimalist top navigation bar with Drawer slider, Pause & Speed controls
This commit is contained in:
1 parent
2cd343e8ef
commit
5f3abba27c
5 files changed
+98
-53
No files matched your search
+37
-2
@@ -726,9 +726,10 @@ window.GameEngine = class GameEngine {
|
||||
}
|
||||
|
||||
bindUI() {
|
||||
// Mobile Drawer Handlers
|
||||
// Mobile / Main Drawer Handlers
|
||||
const mobileDrawer = document.getElementById('mobile-drawer');
|
||||
const drawerBackdrop = document.getElementById('drawer-backdrop');
|
||||
const btnMainMenuDrawer = document.getElementById('btn-main-menu-drawer');
|
||||
const btnDrawerOpen = document.getElementById('btn-mobile-drawer');
|
||||
const btnDrawerClose = document.getElementById('btn-drawer-close');
|
||||
|
||||
@@ -743,11 +744,45 @@ window.GameEngine = class GameEngine {
|
||||
if (drawerBackdrop) drawerBackdrop.classList.add('hidden');
|
||||
};
|
||||
|
||||
if (btnMainMenuDrawer) btnMainMenuDrawer.addEventListener('click', openDrawer);
|
||||
if (btnDrawerOpen) btnDrawerOpen.addEventListener('click', openDrawer);
|
||||
if (btnDrawerClose) btnDrawerClose.addEventListener('click', closeDrawer);
|
||||
if (drawerBackdrop) drawerBackdrop.addEventListener('click', closeDrawer);
|
||||
|
||||
// Mobile Drawer Items delegation to corresponding modal open triggers
|
||||
// Main Screen action from Drawer
|
||||
const btnDrawerMain = document.getElementById('btn-drawer-main-screen');
|
||||
if (btnDrawerMain) {
|
||||
btnDrawerMain.addEventListener('click', () => {
|
||||
closeDrawer();
|
||||
this.openMainMenu();
|
||||
});
|
||||
}
|
||||
|
||||
// Theme & Music actions from Drawer
|
||||
const btnDrawerTheme = document.getElementById('btn-drawer-theme');
|
||||
const drawerThemeLabel = document.getElementById('drawer-theme-label');
|
||||
if (btnDrawerTheme) {
|
||||
btnDrawerTheme.addEventListener('click', () => {
|
||||
const themeNames = { classic: 'Классика', cyberpunk: 'Киберпанк', retro8bit: 'Ретро 8-bit', winter: 'Зима' };
|
||||
const keys = Object.keys(themeNames);
|
||||
const nextIndex = (keys.indexOf(this.currentTheme) + 1) % keys.length;
|
||||
this.applyTheme(keys[nextIndex]);
|
||||
if (drawerThemeLabel) drawerThemeLabel.textContent = themeNames[this.currentTheme];
|
||||
this.triggerHaptic(15);
|
||||
});
|
||||
}
|
||||
|
||||
const btnDrawerMusic = document.getElementById('btn-drawer-music');
|
||||
const drawerMusicLabel = document.getElementById('drawer-music-label');
|
||||
if (btnDrawerMusic) {
|
||||
btnDrawerMusic.addEventListener('click', () => {
|
||||
const isPlaying = window.PvZAudio ? window.PvZAudio.toggleMusic() : false;
|
||||
if (drawerMusicLabel) drawerMusicLabel.textContent = isPlaying ? 'Вкл' : 'Выкл';
|
||||
this.triggerHaptic(15);
|
||||
});
|
||||
}
|
||||
|
||||
// Drawer Items delegation to corresponding modal open triggers
|
||||
const drawerActions = [
|
||||
{ id: 'btn-drawer-campaign', target: 'btn-campaign-open' },
|
||||
{ id: 'btn-drawer-workshop', target: 'btn-workshop' },
|
||||
|
||||
Reference in new issue
Block a user