<!DOCTYPE html> <html lang="en"> <head> <title>PokéRogue</title> <meta name="description" content="A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible." /> <meta name="theme-color" content="#da3838" /> <meta property="og:title" content="PokéRogue" /> <meta property="og:type" content="website" /> <meta property="og:description" content="A Pokémon fangame heavily inspired by the roguelite genre. Battle endlessly while gathering stacking items, exploring many different biomes, and reaching Pokémon stats you never thought possible." /> <meta property="og:image" content="https://pokerogue.net/logo512.png" /> <link rel="apple-touch-icon" href="./logo512.png" /> <link rel="shortcut icon" type="image/png" href="./logo512.png" /> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> <style type="text/css"> @font-face { font-family: 'emerald'; src: url('./fonts/pokemon-emerald-pro.ttf') format('truetype'); } @font-face { font-family: 'pkmnems'; src: url('./fonts/pkmnems.ttf') format('truetype'); } </style> <link rel="stylesheet" type="text/css" href="./index.css" /> <link rel="manifest" href="./manifest.webmanifest"> <script> if ("serviceWorker" in navigator) { window.addEventListener("load", function () { navigator.serviceWorker.register("./service-worker.js").then( function (registration) { console.log("ServiceWorker registration successful"); }, function (err) { console.log("ServiceWorker registration failed: ", err); }, ); }); } window.addEventListener('beforeinstallprompt', e => { // Prevent invasive install prompt (users are still able to install as an app) e.preventDefault(); }); </script> </head> <body> <div id="app"></div> <div id="touchControls"> <div id="dpad" class="unselectable"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 72 72"> <path id="dpadUp" data-key="UP" d="M48,5.8C48,2.5,45.4,0,42,0H29.9C26.6,0,24,2.4,24,5.8V24h24V5.8z" /> <path id="dpadRight" data-key="RIGHT" d="M66.2,24H48v24h18.2c3.3,0,5.8-2.7,5.8-6V29.9C72,26.5,69.5,24,66.2,24z" /> <path id="dpadDown" data-key="DOWN" d="M24,66.3c0,3.3,2.6,5.7,5.9,5.7H42c3.3,0,6-2.4,6-5.7V48H24V66.3z" /> <path id="dpadLeft" data-key="LEFT" d="M5.7,24C2.4,24,0,26.5,0,29.9V42c0,3.3,2.3,6,5.7,6H24V24H5.7z" /> <rect id="dpadCenter" x="24" y="24" width="24" height="24" /> </svg> </div> <div id="apad" class="unselectable"> <div id="apadAction" class="apadCircBtn apadBtn" data-key="ACTION"> <text id="apadLabelAction" class="apadLabel">A</text> </div> <div id="apadCancel" class="apadCircBtn apadBtn" data-key="CANCEL"> <text id="apadLabelCancel" class="apadLabel">B</text> </div> <div class="apadBtnContainer apadRectBtnContainer"> <div id="apadCycleShiny" class="apadSqBtn apadBtn" data-key="CYCLE_SHINY"> <text class="apadLabel apadLabelSmall">R</text> </div> <div id="apadCycleVariant" class="apadSqBtn apadBtn" data-key="CYCLE_VARIANT"> <text class="apadLabel apadLabelSmall">V</text> </div> <div id="apadStats" class="apadRectBtn apadBtn" data-key="STATS"> <text class="apadLabel apadLabelSmall">C</text> </div> <div id="apadMenu" class="apadRectBtn apadBtn" data-key="MENU"> <text class="apadLabel apadLabelSmall">Menu</text> </div> </div> <div class="apadBtnContainer apadSqBtnContainer"> <div id="apadCycleForm" class="apadSqBtn apadBtn" data-key="CYCLE_FORM"> <text class="apadLabel apadLabelSmall">F</text> </div> <div id="apadCycleGender" class="apadSqBtn apadBtn" data-key="CYCLE_GENDER"> <text class="apadLabel apadLabelSmall">G</text> </div> <div id="apadCycleAbility" class="apadSqBtn apadBtn" data-key="CYCLE_ABILITY"> <text class="apadLabel apadLabelSmall">E</text> </div> <div id="apadCycleNature" class="apadSqBtn apadBtn" data-key="CYCLE_NATURE"> <text class="apadLabel apadLabelSmall">N</text> </div> </div> </div> </div> <script type="module" src="./src/main.ts"></script> <script src="./src/touch-controls.js" type="module"></script> <script src="./src/debug.js" type="module"></script> </body> </html>