From 6e1e42618f1f8648a9df740d0d5daf7a54f43b2f Mon Sep 17 00:00:00 2001 From: Ethan O'Brien <77750390+ethanaobrien@users.noreply.github.com> Date: Wed, 28 Jun 2023 12:57:02 -0500 Subject: [PATCH] Settings menu transitions! --- src/GameManager.js | 14 ++++++++++++ src/css/main.css | 26 ++++++++++++++++------ src/emulator.js | 54 ++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 81 insertions(+), 13 deletions(-) diff --git a/src/GameManager.js b/src/GameManager.js index 35f1b48..0598f6f 100644 --- a/src/GameManager.js +++ b/src/GameManager.js @@ -12,6 +12,20 @@ class EJS_GameManager { toggleMainLoop: this.Module.cwrap('toggleMainLoop', 'null', ['number']), getCoreOptions: this.Module.cwrap('get_core_options', 'string', []) } + this.mkdir("/home"); + this.mkdir("/home/web_user"); + this.mkdir("/home/web_user/retroarch"); + this.mkdir("/home/web_user/retroarch/userdata"); + + this.FS.writeFile("/home/web_user/retroarch/userdata/retroarch.cfg", this.getRetroArchCfg()); + } + mkdir(path) { + try { + this.FS.mkdir(path); + } catch(e) {} + } + getRetroArchCfg() { + return "\naudio_latency: 256\n"; } restart() { this.functions.restart(); diff --git a/src/css/main.css b/src/css/main.css index 1e39e9f..4cf6bc4 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -475,7 +475,19 @@ border-top-color:#fff } +@keyframes ejs_settings_parent_animation{ + 0%{ + opacity:0.5; + transform:translateY(10px) + } + to{ + opacity:1; + transform:translateY(0) + } +} + .ejs_settings_parent { + animation: ejs_settings_parent_animation .2s ease; background: rgba(16,16,16,0.9); border-radius: 4px; bottom: 100%; @@ -499,7 +511,7 @@ top: 100%; width: 0; } -.ejs_settings_parent>div { +.ejs_settings_transition { overflow: hidden; transition: height .35s cubic-bezier(0.4,0,0.2,1),width .35s cubic-bezier(0.4,0,0.2,1); } @@ -635,11 +647,6 @@ border-radius: 100%; } .ejs_option_row::after { - /* - once selected - opacity: 1; - transform: translateY(-50%) scale(1); - */ background: #fff; border: 0; height: 6px; @@ -653,6 +660,13 @@ content: ''; position: absolute; } +.ejs_option_row_selected::before { + background: rgba(var(--ejs-primary-color),1); +} +.ejs_option_row_selected::after { + opacity: 1; + transform: translateY(-50%) scale(1); +} .ejs_option_row>span { align-items: center; display: flex; diff --git a/src/emulator.js b/src/emulator.js index 492c7ae..ac1d3c2 100644 --- a/src/emulator.js +++ b/src/emulator.js @@ -4,9 +4,18 @@ class EmulatorJS { } addEventListener(element, listener, callback) { const listeners = listener.split(" "); + let rv = []; for (let i=0; i { - menu.removeAttribute("hidden", ""); + const targetSize = this.getElementSize(menu); + nested.style.width = targetSize.width + "px"; + nested.style.height = targetSize.height + "px"; + menu.removeAttribute("hidden"); home.setAttribute("hidden", ""); }) this.addEventListener(button, "click", (e) => { + const homeSize = this.getElementSize(home); + + nested.style.width = homeSize.width + "px"; + nested.style.height = homeSize.height + "px"; menu.setAttribute("hidden", ""); - home.removeAttribute("hidden", ""); + home.removeAttribute("hidden"); }) button.type = "button"; @@ -1488,8 +1516,10 @@ class EmulatorJS { optionsMenu.style["max-height"] = "385px"; optionsMenu.style.overflow = "auto"; + let buttons = []; for (let i=0; i { this.settings[title] = options[i]; - + for (let j=0; j