From 1bde4043a5657a6c4a594a502511b806307ea3a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mercan=20K=C3=B6m=C3=BCr?= <fpscan@gmail.com> Date: Sat, 17 Aug 2019 19:25:18 +0300 Subject: [PATCH] Steps for web.libretro --- pkg/emscripten/libretro/embed.html | 24 +++- pkg/emscripten/libretro/index.html | 33 ++++- pkg/emscripten/libretro/steps.css | 188 +++++++++++++++++++++++++++++ pkg/emscripten/libretro/steps.js | 68 +++++++++++ 4 files changed, 309 insertions(+), 4 deletions(-) create mode 100644 pkg/emscripten/libretro/steps.css create mode 100644 pkg/emscripten/libretro/steps.js diff --git a/pkg/emscripten/libretro/embed.html b/pkg/emscripten/libretro/embed.html index 77afd33b65..11daaeaebe 100644 --- a/pkg/emscripten/libretro/embed.html +++ b/pkg/emscripten/libretro/embed.html @@ -13,15 +13,13 @@ <link href="//cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.1.1/css/mdb.min.css" rel="stylesheet"> <link href="libretro.css" rel="stylesheet" type="text/css"> + <link rel="stylesheet" href="./steps.css"> <link rel="shortcut icon" href="https://web.libretro.com/media/retroarch.ico" /> </head> <body> <!--Navbar--> <nav class="navbar navbar-dark bg-primary"> <div class="container"> - <!--navbar content--> - <div class="navbar-toggleable-xs"> - <!--Links--> <ul class="nav navbar-nav"> <div class="dropdown"> @@ -73,6 +71,22 @@ </div> </div> </div> + <!--navbar content--> + <div class="navbar-toggleable-xs"> + <div class="how-to-guide js-container"> + <button type="button" class="button-close">×</button> + + <div class="slide-view"> + </div> + + <div class="navigation"> + <button type="button" class="button-nav js-nav disabled" data-nav="prev">Back</button> + <div class="nav-state"> + <span class="current js-slide-no">1</span>/<span class="total">5</span> + </div> + <button type="button" class="button-nav js-nav" data-nav="next">Next</button> + </div> + </div> <script src="//code.jquery.com/jquery-3.1.0.min.js"></script> <script src="//rawgit.com/jeresig/jquery.hotkeys/master/jquery.hotkeys.js"></script> @@ -85,6 +99,10 @@ <div align="center"> <a href="https://www.patreon.com/libretro"> <img src="https://patreon_public_assets.s3.amazonaws.com/sized/becomeAPatronBanner.png" width="350" height="116"></a> +<!-- partial --> + <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script> +<script src='http://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.7.2/mustache.min.js'></script> +<script src="./steps.js"></script> </div> </body> </html> diff --git a/pkg/emscripten/libretro/index.html b/pkg/emscripten/libretro/index.html index ba11aff35b..191f968482 100644 --- a/pkg/emscripten/libretro/index.html +++ b/pkg/emscripten/libretro/index.html @@ -12,6 +12,7 @@ <link href="//cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.1.1/css/mdb.min.css" rel="stylesheet"> <link href="libretro.css" rel="stylesheet" type="text/css"> + <link rel="stylesheet" href="./steps.css"> <link rel="shortcut icon" href="media/retroarch.ico" /> </head> @@ -119,7 +120,33 @@ <img class="webplayer-preview img-fluid" src="media/canvas.png" width="960px" height="720px" alt="RetroArch Logo"> </div> </div> - + <!--/.steps content--> + </div> + </nav> + <div class="bg-inverse webplayer-container"> + <div class="container"> + <div class="webplayer_border text-xs-center" id="canvas_div"> + <canvas class="webplayer" id="canvas" tabindex="1" oncontextmenu="event.preventDefault()" style="display: none"></canvas> + <img class="webplayer-preview img-fluid" src="media/canvas.png" width="960px" height="720px" alt="RetroArch Logo"> + </div> + </div> + </div> + <!--navbar content--> + <div class="navbar-toggleable-xs"> + <div class="how-to-guide js-container"> + <button type="button" class="button-close">×</button> + + <div class="slide-view"> + </div> + + <div class="navigation"> + <button type="button" class="button-nav js-nav disabled" data-nav="prev">Back</button> + <div class="nav-state"> + <span class="current js-slide-no">1</span>/<span class="total">5</span> + </div> + <button type="button" class="button-nav js-nav" data-nav="next">Next</button> + </div> + </div> <script src="//code.jquery.com/jquery-3.1.0.min.js"></script> <script src="//rawgit.com/jeresig/jquery.hotkeys/master/jquery.hotkeys.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/tether/1.3.4/js/tether.min.js"></script> @@ -131,6 +158,10 @@ <div align="center"> <a href="https://www.patreon.com/libretro"> <img src="https://patreon_public_assets.s3.amazonaws.com/sized/becomeAPatronBanner.png" width="350" height="116"></a> + <!-- partial --> + <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script> +<script src='http://cdnjs.cloudflare.com/ajax/libs/mustache.js/0.7.2/mustache.min.js'></script> +<script src="./steps.js"></script> </div> </body> </html> diff --git a/pkg/emscripten/libretro/steps.css b/pkg/emscripten/libretro/steps.css new file mode 100644 index 0000000000..f01c040d7a --- /dev/null +++ b/pkg/emscripten/libretro/steps.css @@ -0,0 +1,188 @@ +*, +*:before, +*:after { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +html, +body { + background: #ecf0f1; + color: #444; + font-family: Tahoma, Geneva, sans-serif; + font-size: 16px; + padding: 10px; +} +.how-to-guide { + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + background: #34495e; + color: #ecf0f1; + margin: 0; + padding: 0 0 40px; + position: relative; + text-align: left; + width: 296px; +} +.how-to-guide:before { + border: 10px solid transparent; + border-right-color: #34495e; + content: ''; + height: 0; + left: -20px; + position: absolute; + top: 20px; + width: 0; +} +.how-to-guide .button-close { + -webkit-transition: color 0.25s ease-out 0.1s; + -moz-transition: color 0.25s ease-out 0.1s; + -o-transition: color 0.25s ease-out 0.1s; + transition: color 0.25s ease-out 0.1s; + background: none; + border: none; + color: #ecf0f1; + font-size: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 99; +} +.how-to-guide .button-close:hover, +.how-to-guide .button-close:focus { + color: #3498db; + cursor: pointer; +} +.how-to-guide .navigation { + background: #2c3e50; + border-top: 1px solid #414141; + bottom: 0; + font-size: 0.8em; + height: 40px; + left: 0; + line-height: 1em; + padding: 13px; + position: absolute; + width: 100%; +} +.how-to-guide .navigation .nav-state { + font-weight: bold; + text-align: center; +} +.how-to-guide .navigation .button-nav { + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + -webkit-transition: background 0.25s ease-out 0.1s; + -moz-transition: background 0.25s ease-out 0.1s; + -o-transition: background 0.25s ease-out 0.1s; + transition: background 0.25s ease-out 0.1s; + background: #34495e; + border: none; + color: #ecf0f1; + font-size: 0.9em; + padding: 5px 20px; + position: absolute; + top: 5px; +} +.how-to-guide .navigation .button-nav:hover, +.how-to-guide .navigation .button-nav:focus { + background: #3498db; + cursor: pointer; +} +.how-to-guide .navigation .button-nav.disabled { + color: #bdc3c7; +} +.how-to-guide .navigation .button-nav.disabled:hover, +.how-to-guide .navigation .button-nav.disabled:focus { + background: #34495e; + cursor: default; +} +.how-to-guide .navigation .button-nav[data-nav="prev"] { + left: 5px; +} +.how-to-guide .navigation .button-nav[data-nav="next"] { + right: 5px; +} +.how-to-guide .slide-view { + overflow: hidden; +} +.how-to-guide .slides { + -webkit-transition: -webkit-transform 0.25s ease-out 0.1s; + -moz-transition: -moz-transform 0.25s ease-out 0.1s; + -o-transition: -o-transform 0.25s ease-out 0.1s; + transition: transform 0.25s ease-out 0.1s; + width: 9999px; +} +.how-to-guide .slides[data-active-slide="1"] { + -webkit-transform: translate(0, 0); + -moz-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.how-to-guide .slides[data-active-slide="1"] .step[data-slide="1"] { + opacity: 1; +} +.how-to-guide .slides[data-active-slide="2"] { + -webkit-transform: translate(-296px, 0); + -moz-transform: translate(-296px, 0); + -ms-transform: translate(-296px, 0); + -o-transform: translate(-296px, 0); + transform: translate(-296px, 0); +} +.how-to-guide .slides[data-active-slide="2"] .step[data-slide="2"] { + opacity: 1; +} +.how-to-guide .slides[data-active-slide="3"] { + -webkit-transform: translate(-592px, 0); + -moz-transform: translate(-592px, 0); + -ms-transform: translate(-592px, 0); + -o-transform: translate(-592px, 0); + transform: translate(-592px, 0); +} +.how-to-guide .slides[data-active-slide="3"] .step[data-slide="3"] { + opacity: 1; +} +.how-to-guide .slides[data-active-slide="4"] { + -webkit-transform: translate(-888px, 0); + -moz-transform: translate(-888px, 0); + -ms-transform: translate(-888px, 0); + -o-transform: translate(-888px, 0); + transform: translate(-888px, 0); +} +.how-to-guide .slides[data-active-slide="4"] .step[data-slide="4"] { + opacity: 1; +} +.how-to-guide .slides[data-active-slide="5"] { + -webkit-transform: translate(-1184px, 0); + -moz-transform: translate(-1184px, 0); + -ms-transform: translate(-1184px, 0); + -o-transform: translate(-1184px, 0); + transform: translate(-1184px, 0); +} +.how-to-guide .slides[data-active-slide="5"] .step[data-slide="5"] { + opacity: 1; +} +.how-to-guide .step { + -webkit-transition: opacity 0.25s ease-out 0.1s; + -moz-transition: opacity 0.25s ease-out 0.1s; + -o-transition: opacity 0.25s ease-out 0.1s; + transition: opacity 0.25s ease-out 0.1s; + display: inline-block; + opacity: 0; + padding: 10px; + width: 296px; + vertical-align: top; +} +.how-to-guide .step header { + cursor: default; + font-size: 1.25em; + margin: 0 0 20px; + padding: 0; +} +.how-to-guide .step .content { + cursor: default; + font-size: 0.85em; +} diff --git a/pkg/emscripten/libretro/steps.js b/pkg/emscripten/libretro/steps.js new file mode 100644 index 0000000000..aa1e39409e --- /dev/null +++ b/pkg/emscripten/libretro/steps.js @@ -0,0 +1,68 @@ +$(function () { + var data = [ + { + idx: 1, + title: 'Load Core', + content: 'Load your core by clicking first tab, scroll down until desired Core. We will use Nestopia for now. Do not forget; Content must be compatible with Core.' + }, + { + idx: 2, + title: 'Load Content', + content: 'After selecting Core, click Run. After RetroArch opens, click Add Content and select your compatible ROM.' + }, + { + idx: 3, + title: 'Load Content', + content: 'Select Load Content from the menu, and then enter Start Directory. You will see your Content, select it then select the Core' + }, + { + idx: 4, + title: 'Cleanup Storage', + content: 'The trash can erases your existing configuration and presets.' + }, + { + idx: 5, + title: 'Quick Menu', + content: 'If you click on the three line icons, the Quick Menu will open here as in RetroArch.' + } + ]; + + var template = + '<div class="slides" data-active-slide="1">' + + '{{#slides}}' + + '<article class="step" data-slide="{{idx}}">' + + '<header>{{title}}</header>' + + '<div class="content">{{content}}</div>' + + '</article>' + + '{{/slides}}' + + '</div>'; + + $('.how-to-guide').append(Mustache.render(template, { slides: data })); + + var slidesCount = data.length; + var currentIdx = 1; + + $('body') + .off('click', '.js-nav:not(.disabled)') + .on('click', '.js-nav:not(.disabled)', function (event) { + var button = $(event.currentTarget).blur(); + var container = button.parents('.js-container'); + + var newIdx = currentIdx + (button.attr('data-nav') === 'prev' ? -1 : 1); + container + .find('.slides').attr('data-active-slide', newIdx).end() + .find('.js-slide-no').html(newIdx); + + /* enable/disable nav buttons */ + container.find('.js-nav').removeClass('disabled'); + if (newIdx <= 1) { + container.find('.js-nav[data-nav="prev"]').addClass('disabled'); + } else if (newIdx >= slidesCount) { + container.find('.js-nav[data-nav="next"]').addClass('disabled'); + } + + currentIdx = newIdx; + + return true; + }); +}); \ No newline at end of file