diff --git a/config.jsonc b/config.jsonc new file mode 100644 index 00000000..ecaa6a06 --- /dev/null +++ b/config.jsonc @@ -0,0 +1,818 @@ +/* + This file will contain all of the configuration for MonkeyGG2: + Games Info, Enable Proxy, Themes (coming soon) +*/ +{ + "games": { + /* + Data for all games + + "name-of-game": { + "path": "path/to/game", + "aliases": ["game", "emag"], + "categories": ["category1", "category2"] + } + + Path will be path to game index from the games directory. + Aliases will be factored into search results. + Categories will display a little icon inside of the game's list item. + + The list does not have to be ordered in any way but for the + sake of simplicity we will order this list alphanumerically. + */ + "1v1.LOL": { + "path": "1v1-lol", + "aliases": [], + "categories": [ + "online", + "battle" + ] + }, + "2048": { + "path": "2048", + "aliases": [], + "categories": [] + }, + "Achievement Unlocked": { + "path": "flash/?game=achievement-unlocked", + "aliases": [], + "categories": [] + }, + "Achievement Unlocked 2": { + "path": "w-flash/?game=achievement-unlocked-2", + "aliases": [], + "categories": [] + }, + "Achievement Unlocked 3": { + "path": "w-flash/?game=achievement-unlocked-3", + "aliases": [], + "categories": [] + }, + "A Dark Room": { + "path": "a-dark-room", + "aliases": [], + "categories": [] + }, + "Abandoned": { + "path": "abandoned", + "aliases": [], + "categories": [] + }, + "Ages of Conflict": { + "path": "ages-of-conflict", + "aliases": [], + "categories": [] + }, + "Age of War": { + "path": "flash/?game=age-of-war", + "aliases": [], + "categories": [] + }, + "Age of War Hacked": { + "path": "flash/?game=age-of-war-hacked", + "aliases": [], + "categories": [] + }, + "Amidst The Sky": { + "path": "amidst-the-sky", + "aliases": [], + "categories": [] + }, + "Another Gentlemans Adventure": { + "path": "another-gentlemans-adventure", + "aliases": [], + "categories": [] + }, + "Awesome Tanks": { + "path": "awesome-tanks", + "aliases": [], + "categories": [] + }, + "Awesome Tanks 2": { + "path": "awesome-tanks-2", + "aliases": [], + "categories": [] + }, + "Babel Tower": { + "path": "babel-tower", + "aliases": [], + "categories": [] + }, + "Basketball Stars": { + "path": "basketball-stars", + "aliases": [], + "categories": [] + }, + "Bloons": { + "path": "flash/?game=bloons", + "aliases": [], + "categories": [] + }, + "Bloons TD 1": { + "path": "flash/?game=bloons-td-1", + "aliases": [], + "categories": [] + }, + "Bloons TD 2": { + "path": "flash/?game=bloons-td-2", + "aliases": [], + "categories": [] + }, + "Bloons TD 3": { + "path": "w-flash/?game=bloons-tower-defense-3", + "aliases": [], + "categories": [] + }, + "Bloons TD 4": { + "path": "w-flash/?game=bloons-tower-defense-4", + "aliases": [], + "categories": [] + }, + "Bloons TD 5": { + "path": "w-flash/?game=bloons-tower-defense-5", + "aliases": [], + "categories": [] + }, + "Bloxorz": { + "path": "flash/?game=bloxorz", + "aliases": [], + "categories": [] + }, + "Brawl Stars Project Laser": { + "path": "brawl-stars-project-laser", + "aliases": [], + "categories": [] + }, + "Breaklock": { + "path": "breaklock", + "aliases": [], + "categories": [] + }, + "Cat Ninja": { + "path": "w-flash/?game=cat-ninja", + "aliases": [], + "categories": [] + }, + "Curveball": { + "path": "flash/?game=curveball", + "aliases": [], + "categories": [] + }, + "Chrome Dino": { + "path": "chrome-dino", + "aliases": [], + "categories": [] + }, + "Clicker Heroes": { + "path": "clicker-heroes", + "aliases": [], + "categories": [] + }, + "Clicker Heroes Updated": { + "path": "clicker-heroes-updated", + "aliases": [], + "categories": [] + }, + "Cookie Clicker": { + "path": "cookie-clicker", + "aliases": [], + "categories": [] + }, + "Core Ball": { + "path": "core-ball", + "aliases": [], + "categories": [] + }, + "Crossy Road": { + "path": "crossy-road", + "aliases": [], + "categories": [] + }, + "Conway's Game of Life": { + "path": "conways-game-of-life", + "aliases": [], + "categories": [] + }, + "Creative Kill Chamber": { + "path": "flash/?game=creative-kill-chamber", + "aliases": [], + "categories": [] + }, + "Cut The Rope": { + "path": "cut-the-rope", + "aliases": [], + "categories": [] + }, + "Dadish": { + "path": "dadish", + "aliases": [], + "categories": [] + }, + "Dadish 2": { + "path": "dadish-2", + "aliases": [], + "categories": [] + }, + "Don't Escape": { + "path": "w-flash/?game=dont-escape", + "aliases": [], + "categories": [] + }, + "Don't Escape 2": { + "path": "w-flash/?game=dont-escape-2", + "aliases": [], + "categories": [] + }, + "Don't Escape 3": { + "path": "w-flash/?game=dont-escape-3", + "aliases": [], + "categories": [] + }, + "Doodle Jump": { + "path": "doodle-jump", + "aliases": [], + "categories": [] + }, + "Drift Boss": { + "path": "drift-boss", + "aliases": [], + "categories": [] + }, + "Drift Hunters": { + "path": "drift-hunters", + "aliases": [], + "categories": [] + }, + "Drive Mad": { + "path": "drive-mad", + "aliases": [], + "categories": [] + }, + "Duck Life": { + "path": "flash/?game=duck-life", + "aliases": [], + "categories": [] + }, + "Duck Life 2": { + "path": "flash/?game=duck-life-2", + "aliases": [], + "categories": [] + }, + "Duck Life 3": { + "path": "flash/?game=duck-life-3", + "aliases": [], + "categories": [] + }, + "Duck Life 4": { + "path": "duck-life-4", + "aliases": [], + "categories": [] + }, + "Duck Life Treasure Hunt": { + "path": "w-flash/?game=duck-life-treasure-hunt", + "aliases": [], + "categories": [] + }, + "Dune!": { + "path": "dune", + "aliases": [], + "categories": [] + }, + "Eaglercraft 1.5.2": { + "path": "eaglercraft", + "aliases": [], + "categories": [] + }, + "Eaglercraft 1.8.8 (Multiplayer Only)": { + "path": "eaglercraftx/", + "aliases": [], + "categories": [] + }, + "EvoWars": { + "path": "evowars", + "aliases": [], + "categories": [] + }, + "Escape The Car": { + "path": "flash/?game=escape-the-car", + "aliases": [], + "categories": [] + }, + "Escape The Closet": { + "path": "flash/?game=escape-the-closet", + "aliases": [], + "categories": [] + }, + "Escape The Phonebooth": { + "path": "flash/?game=escape-the-phonebooth", + "aliases": [], + "categories": [] + }, + "Escape The Bathroom": { + "path": "flash/?game=escape-the-bathroom", + "aliases": [], + "categories": [] + }, + "Escape The Freezer": { + "path": "w-flash/?game=escape-the-freezer", + "aliases": [], + "categories": [] + }, + "Escape The Shack": { + "path": "w-flash/?game=escape-the-shack", + "aliases": [], + "categories": [] + }, + "Fireboy and Watergirl": { + "path": "fireboy-and-watergirl", + "aliases": [], + "categories": [] + }, + "Fireboy and Watergirl 2": { + "path": "fireboy-and-watergirl-2", + "aliases": [], + "categories": [] + }, + "Fireboy and Watergirl 3": { + "path": "fireboy-and-watergirl-3", + "aliases": [], + "categories": [] + }, + "Fireboy and Watergirl 4": { + "path": "fireboy-and-watergirl-4", + "aliases": [], + "categories": [] + }, + "Flash Chess": { + "path": "flash/?game=flash-chess", + "aliases": [], + "categories": [] + }, + "Friday Night Funkin": { + "path": "friday-night-funkin", + "aliases": [], + "categories": [] + }, + "Factory Balls": { + "path": "flash/?game=factory-balls", + "aliases": [], + "categories": [] + }, + "Flappy Bird": { + "path": "flappy-bird", + "aliases": [], + "categories": [] + }, + "Getaway Shootout": { + "path": "getaway-shootout", + "aliases": [], + "categories": [] + }, + "Gons io": { + "path": "gons-io", + "aliases": [], + "categories": [] + }, + "Gun Mayhem": { + "path": "flash/?game=gun-mayhem", + "aliases": [], + "categories": [] + }, + "Gun Mayhem 2": { + "path": "flash/?game=gun-mayhem-2", + "aliases": [], + "categories": [] + }, + "Gun Spin": { + "path": "gunspin", + "aliases": [], + "categories": [] + }, + "Henry Stickmin 0: Breaking The Bank": { + "path": "flash/?game=breaking-the-bank", + "aliases": [], + "categories": [] + }, + "Henry Stickmin 1: Escaping The Prison": { + "path": "flash/?game=escaping-the-prison", + "aliases": [], + "categories": [] + }, + "Henry Stickmin 2: Stealing The Diamond": { + "path": "flash/?game=stealing-the-diamond", + "aliases": [], + "categories": [] + }, + "Henry Stickmin 3: Infiltrating The Airship": { + "path": "flash/?game=infiltrating-the-airship", + "aliases": [], + "categories": [] + }, + "Henry Stickmin 4: Fleeing the Complex": { + "path": "flash/?game=fleeing-the-complex", + "aliases": [], + "categories": [] + }, + "Hextris": { + "path": "hextris", + "aliases": [], + "categories": [] + }, + "Incremancer": { + "path": "incremancer", + "aliases": [], + "categories": [] + }, + "Learn To Fly": { + "path": "flash/?game=learn-to-fly", + "aliases": [], + "categories": [] + }, + "Learn To Fly 2": { + "path": "w-flash/?game=learn-to-fly-2", + "aliases": [], + "categories": [] + }, + "Idle Breakout": { + "path": "idle-breakout", + "aliases": [], + "categories": [] + }, + "Maptroid": { + "path": "maptroid", + "aliases": [], + "categories": [] + }, + "Mario": { + "path": "mario-game", + "aliases": [], + "categories": [] + }, + "Monkey Mart": { + "path": "monkey-mart", + "aliases": [], + "categories": [] + }, + "MotoX3M": { + "path": "motox3m", + "aliases": [], + "categories": [] + }, + "N-gon": { + "path": "n-gon", + "aliases": [], + "categories": [] + }, + "Papas Pizzeria": { + "path": "flash/?game=papas-pizzaria", + "aliases": [], + "categories": [] + }, + "Papas Freezeria": { + "path": "w-flash/?game=papas-freezeria", + "aliases": [], + "categories": [] + }, + "Particle Clicker": { + "path": "particle-clicker", + "aliases": [], + "categories": [] + }, + "Planet Life": { + "path": "planet-life", + "aliases": [], + "categories": [] + }, + "P.craft": { + "path": "pcraft", + "aliases": [], + "categories": [] + }, + "Precision Client (Eaglercraft 1.5.2)": { + "path": "precision-client/", + "aliases": [], + "categories": [] + }, + "Progress Knight": { + "path": "progress-knight", + "aliases": [], + "categories": [] + }, + "Pull Of War": { + "path": "pull-of-war", + "aliases": [], + "categories": [] + }, + "Reach The Core": { + "path": "reach-the-core", + "aliases": [], + "categories": [] + }, + "Raft Wars": { + "path": "flash/?game=raft-wars", + "aliases": [], + "categories": [] + }, + "Raft Wars 2": { + "path": "flash/?game=raft-wars-2", + "aliases": [], + "categories": [] + }, + "Retro Bowl": { + "path": "retro-bowl", + "aliases": [], + "categories": [] + }, + "Retro Bowl Old": { + "path": "retro-bowl-old", + "aliases": [], + "categories": [] + }, + "Rogue Soul": { + "path": "w-flash/?game=rogue-soul", + "aliases": [], + "categories": [] + }, + "Rogue Soul 2": { + "path": "w-flash/?game=rogue-soul-2", + "aliases": [], + "categories": [] + }, + "Riddle School": { + "path": "flash/?game=riddle-school", + "aliases": [], + "categories": [] + }, + "Riddle School 2": { + "path": "flash/?game=riddle-school-2", + "aliases": [], + "categories": [] + }, + "Riddle School 3": { + "path": "flash/?game=riddle-school-3", + "aliases": [], + "categories": [] + }, + "Riddle School 4": { + "path": "flash/?game=riddle-school-4", + "aliases": [], + "categories": [] + }, + "Riddle School 5": { + "path": "flash/?game=riddle-school-5", + "aliases": [], + "categories": [] + }, + "Riddle Transfer": { + "path": "flash/?game=riddle-transfer", + "aliases": [], + "categories": [] + }, + "Riddle Transfer 2": { + "path": "flash/?game=riddle-transfer-2", + "aliases": [], + "categories": [] + }, + "Rooftop Snipers": { + "path": "rooftop-snipers", + "aliases": [], + "categories": [] + }, + "Rookie Bowman": { + "path": "rookie-bowman", + "aliases": [], + "categories": [] + }, + "Run 3": { + "path": "run-3", + "aliases": [], + "categories": [] + }, + "Sandspiel": { + "path": "sandspiel", + "aliases": [], + "categories": [] + }, + "Scuba Bear": { + "path": "scuba-bear", + "aliases": [], + "categories": [] + }, + "Slope": { + "path": "slope", + "aliases": [], + "categories": [] + }, + "Smash Karts": { + "path": "smash-karts", + "aliases": [], + "categories": [] + }, + "Stickman Hook": { + "path": "stickman-hook", + "aliases": [], + "categories": [] + }, + "Subway Surfers": { + "path": "subway-surfers", + "aliases": [], + "categories": [] + }, + "Subway Surfers New York": { + "path": "subway-surfers-ny", + "aliases": [], + "categories": [] + }, + "Stick War": { + "path": "flash/?game=stick-war", + "aliases": [], + "categories": [] + }, + "Submachine": { + "path": "flash/?game=submachine", + "aliases": [], + "categories": [] + }, + "Submachine 2": { + "path": "flash/?game=submachine-2", + "aliases": [], + "categories": [] + }, + "Submachine 3": { + "path": "flash/?game=submachine-3", + "aliases": [], + "categories": [] + }, + "Submachine 4": { + "path": "flash/?game=submachine-4", + "aliases": [], + "categories": [] + }, + "Submachine 5": { + "path": "flash/?game=submachine-5", + "aliases": [], + "categories": [] + }, + "Submachine 6": { + "path": "flash/?game=submachine-6", + "aliases": [], + "categories": [] + }, + "Submachine 7": { + "path": "flash/?game=submachine-7", + "aliases": [], + "categories": [] + }, + "Submachine 8": { + "path": "flash/?game=submachine-8", + "aliases": [], + "categories": [] + }, + "Submachine 9": { + "path": "flash/?game=submachine-9", + "aliases": [], + "categories": [] + }, + "Submachine 10": { + "path": "flash/?game=submachine-10", + "aliases": [], + "categories": [] + }, + "Submachine 0": { + "path": "flash/?game=submachine-0", + "aliases": [], + "categories": [] + }, + "Submachine 32 Chambers": { + "path": "flash/?game=submachine-32-chambers", + "aliases": [], + "categories": [] + }, + "Submachine FLF": { + "path": "flash/?game=submachine-flf", + "aliases": [], + "categories": [] + }, + "Sugar Sugar": { + "path": "w-flash/?game=sugar-sugar", + "aliases": [], + "categories": [] + }, + "The Final Earth": { + "path": "the-final-earth", + "aliases": [], + "categories": [] + }, + "There Is No Game": { + "path": "there-is-no-game", + "aliases": [], + "categories": [] + }, + "Time Shooter": { + "path": "time-shooter", + "aliases": [], + "categories": [] + }, + "Time Shooter 3": { + "path": "time-shooter-3", + "aliases": [], + "categories": [] + }, + "Tiny Fishing": { + "path": "tiny-fishing", + "aliases": [], + "categories": [] + }, + "Trace": { + "path": "trace", + "aliases": [], + "categories": [] + }, + "Tanuki Sunset": { + "path": "tanuki-sunset", + "aliases": [], + "categories": [] + }, + "Temple Run 2": { + "path": "temple-run-2", + "aliases": [], + "categories": [] + }, + "The Impossible Quiz": { + "path": "flash/?game=the-impossible-quiz", + "aliases": [], + "categories": [] + }, + "This Is The Only Level": { + "path": "flash/?game=this-is-the-only-level", + "aliases": [], + "categories": [] + }, + "This Is The Only Level 2": { + "path": "w-flash/?game=this-is-the-only-level-2", + "aliases": [], + "categories": [] + }, + "Tunnel Rush": { + "path": "tunnel-rush", + "aliases": [], + "categories": [] + }, + "Two Ball 3d": { + "path": "two-ball-3d", + "aliases": [], + "categories": [] + }, + "Vex 3": { + "path": "vex-3", + "aliases": [], + "categories": [] + }, + "Vex 4": { + "path": "vex-4", + "aliases": [], + "categories": [] + }, + "Vex 5": { + "path": "vex-5", + "aliases": [], + "categories": [] + }, + "Vex 6": { + "path": "vex-6", + "aliases": [], + "categories": [] + }, + "Vex 7": { + "path": "vex-7", + "aliases": [], + "categories": [] + }, + "Web OSU": { + "path": "web-osu", + "aliases": [], + "categories": [] + }, + "Ultimate Chess": { + "path": "w-flash/?game=ultimate-chess", + "aliases": [], + "categories": [] + }, + "X Trench Run": { + "path": "x-trench-run", + "aliases": [], + "categories": [] + }, + "Yohoho": { + "path": "yohoho", + "aliases": [], + "categories": [] + } + }, + "themes": { + // coming soon + }, + "config": { + "proxy": true // proxy only works when self-hosted + } +} \ No newline at end of file diff --git a/css/style.css b/css/style.css index 3317a503..1cf45195 100644 --- a/css/style.css +++ b/css/style.css @@ -175,6 +175,13 @@ logo img { top: -2.5%; left: -1%; scale: 0.45; + pointer-events: painted; + transition: all 0.2s ease-in-out; +} + +logo img:hover { + filter: brightness(80%); + transform: scale(0.95); } img[alt="MonkeyGG2 Icon"] { @@ -255,4 +262,113 @@ img[alt="Proxy Icon"] { margin: 0; padding: 0; border: 0; +} + +button.in-game-button { + cursor: pointer; + position: absolute; + z-index: 9999; + top: 61px; + left: 0; + width: 75px; + height: 50px; + background: var(--hover-color); + border-radius: 0 290486px 290486px 0; + color: #000; + padding: 0 10px; + line-height: 50px; + min-height: 50px; + border: none; + border-bottom: 3px solid var(--font-color); + will-change: transform; + animation: bounceY 2s .5s; + transition: transform .5s cubic-bezier(.55,0,.1,1); + display: flex; + align-items: center; + justify-content: center +} + +button.in-game-button svg { + pointer-events: none; + color: var(--font-color); + margin-right: .625rem; + display: inline-block +} + +button.in-game-button img { + pointer-events: none; + width: 33px +} + +button.in-game-button:active { + background: #aaa +} + +button.in-game-button[attr-active=true] { + transform: translateX(0) +} + +button.in-game-button:not(hover) { + transform: translateX(-32px) +} + +button.in-game-button:hover, button.in-game-button:active { + transform: translateX(0px) +} + +@media(max-height: 350px) and (orientation:landscape) { + button.in-game-button[attr-active=true] { + transform:translateX(-75px) + } +} + +button.in-game-button[attr-snapped=true] svg { + display: none +} + +button.in-game-button[attr-snapped=true] img { + transform: translate(-5px) +} + +#refresh{right:0;border-radius: 290486px 0 0 290486px;left:auto} + +#refresh:not(hover) { + transform: translateX(32px); +} + +#refresh:hover { + transform: translateX(0px); +} + +#disabled { + background: var(--button-color); + filter: brightness(80%); + padding: 0; + font-family: var(--font-family); + font-size: 1.5rem; + max-width: 20vw; + text-align: center; + color: red; +} + +#disabled[open] { + animation: fade 0.2s ease-in-out forwards; +} + +#disabled div { + padding: 3rem; +} + +#disabled::backdrop { + pointer-events: disabled; + backdrop-filter: blur(5px); +} + +@keyframes fade { + 0% { + opacity: 0; + } + 100% { + opacity: 0.9; + } } \ No newline at end of file diff --git a/favicon.ico b/favicon.ico index 819d1ba5..91da962d 100644 Binary files a/favicon.ico and b/favicon.ico differ diff --git a/game-info.jsonc b/game-info.jsonc deleted file mode 100644 index 066ab812..00000000 --- a/game-info.jsonc +++ /dev/null @@ -1,169 +0,0 @@ -/* - Data for all games - - "name-of-game": "path/to/game" - - The path should be from the games directory. - - The list does not have to be ordered in any way but for the - sake of simplicity we will order this list alphanumerically. -*/ -{ - "1v1.LOL": "1v1-lol", - "2048": "2048", - "Achievement Unlocked": "flash/?game=achievement-unlocked", - "Achievement Unlocked 2": "w-flash/?game=achievement-unlocked-2", - "Achievement Unlocked 3": "w-flash/?game=achievement-unlocked-3", - "A Dark Room": "a-dark-room", - "Abandoned": "abandoned", - "Ages of Conflict": "ages-of-conflict", - "Age of War": "flash/?game=age-of-war", - "Age of War Hacked": "flash/?game=age-of-war-hacked", - "Amidst The Sky": "amidst-the-sky", - "Another Gentlemans Adventure": "another-gentlemans-adventure", - "Awesome Tanks": "awesome-tanks", - "Awesome Tanks 2": "awesome-tanks-2", - "Babel Tower": "babel-tower", - "Basketball Stars": "basketball-stars", - "Bloons": "flash/?game=bloons", - "Bloons TD 1": "flash/?game=bloons-td-1", - "Bloons TD 2": "flash/?game=bloons-td-2", - "Bloons TD 3": "w-flash/?game=bloons-tower-defense-3", - "Bloons TD 4": "w-flash/?game=bloons-tower-defense-4", - "Bloons TD 5": "w-flash/?game=bloons-tower-defense-5", - "Bloxorz": "flash/?game=bloxorz", - "Brawl Stars Project Laser": "brawl-stars-project-laser", - "Breaklock": "breaklock", - "Cat Ninja": "w-flash/?game=cat-ninja", - "Curveball": "flash/?game=curveball", - "Chrome Dino": "chrome-dino", - "Clicker Heroes": "clicker-heroes", - "Clicker Heroes Updated": "clicker-heroes-updated", - "Cookie Clicker": "cookie-clicker", - "Core Ball": "core-ball", - "Crossy Road": "crossy-road", - "Conway's Game of Life": "conways-game-of-life", - "Creative Kill Chamber": "flash/?game=creative-kill-chamber", - "Cut The Rope": "cut-the-rope", - "Dadish": "dadish", - "Dadish 2": "dadish-2", - "Don't Escape": "w-flash/?game=dont-escape", - "Don't Escape 2": "w-flash/?game=dont-escape-2", - "Don't Escape 3": "w-flash/?game=dont-escape-3", - "Doodle Jump": "doodle-jump", - "Drift Boss": "drift-boss", - "Drift Hunters": "drift-hunters", - "Drive Mad": "drive-mad", - "Duck Life": "flash/?game=duck-life", - "Duck Life 2": "flash/?game=duck-life-2", - "Duck Life 3": "flash/?game=duck-life-3", - "Duck Life 4": "duck-life-4", - "Duck Life Treasure Hunt": "w-flash/?game=duck-life-treasure-hunt", - "Dune!": "dune", - "Eaglercraft 1.5.2": "eaglercraft", - "Eaglercraft 1.8.8 (Multiplayer Only)": "eaglercraftx/", - "EvoWars": "evowars", - "Escape The Car": "flash/?game=escape-the-car", - "Escape The Closet": "flash/?game=escape-the-closet", - "Escape The Phonebooth": "flash/?game=escape-the-phonebooth", - "Escape The Bathroom": "flash/?game=escape-the-bathroom", - "Escape The Freezer": "w-flash/?game=escape-the-freezer", - "Escape The Shack": "w-flash/?game=escape-the-shack", - "Fireboy and Watergirl": "fireboy-and-watergirl", - "Fireboy and Watergirl 2": "fireboy-and-watergirl-2", - "Fireboy and Watergirl 3": "fireboy-and-watergirl-3", - "Fireboy and Watergirl 4": "fireboy-and-watergirl-4", - "Flash Chess": "flash/?game=flash-chess", - "Friday Night Funkin": "friday-night-funkin", - "Factory Balls": "flash/?game=factory-balls", - "Flappy Bird": "flappy-bird", - "Getaway Shootout": "getaway-shootout", - "Gons io": "gons-io", - "Gun Mayhem": "flash/?game=gun-mayhem", - "Gun Mayhem 2": "flash/?game=gun-mayhem-2", - "Gun Spin": "gunspin", - "Henry Stickmin 0: Breaking The Bank": "flash/?game=breaking-the-bank", - "Henry Stickmin 1: Escaping The Prison": "flash/?game=escaping-the-prison", - "Henry Stickmin 2: Stealing The Diamond": "flash/?game=stealing-the-diamond", - "Henry Stickmin 3: Infiltrating The Airship": "flash/?game=infiltrating-the-airship", - "Henry Stickmin 4: Fleeing the Complex": "flash/?game=fleeing-the-complex", - "Hextris": "hextris", - "Incremancer": "incremancer", - "Learn To Fly": "flash/?game=learn-to-fly", - "Learn To Fly 2": "w-flash/?game=learn-to-fly-2", - "Idle Breakout": "idle-breakout", - "Maptroid": "maptroid", - "Mario": "mario-game", - "Monkey Mart": "monkey-mart", - "MotoX3M": "motox3m", - "N-gon": "n-gon", - "Papas Pizzeria": "flash/?game=papas-pizzaria", - "Papas Freezeria": "w-flash/?game=papas-freezeria", - "Particle Clicker": "particle-clicker", - "Planet Life": "planet-life", - "P.craft": "pcraft", - "Precision Client (Eaglercraft 1.5.2)": "precision-client/", - "Progress Knight": "progress-knight", - "Pull Of War": "pull-of-war", - "Reach The Core": "reach-the-core", - "Raft Wars": "flash/?game=raft-wars", - "Raft Wars 2": "flash/?game=raft-wars-2", - "Retro Bowl": "retro-bowl", - "Retro Bowl Old": "retro-bowl-old", - "Rogue Soul": "w-flash/?game=rogue-soul", - "Rogue Soul 2": "w-flash/?game=rogue-soul-2", - "Riddle School": "flash/?game=riddle-school", - "Riddle School 2": "flash/?game=riddle-school-2", - "Riddle School 3": "flash/?game=riddle-school-3", - "Riddle School 4": "flash/?game=riddle-school-4", - "Riddle School 5": "flash/?game=riddle-school-5", - "Riddle Transfer": "flash/?game=riddle-transfer", - "Riddle Transfer 2": "flash/?game=riddle-transfer-2", - "Rooftop Snipers": "rooftop-snipers", - "Rookie Bowman": "rookie-bowman", - "Run 3": "run-3", - "Sandspiel": "sandspiel", - "Scuba Bear": "scuba-bear", - "Slope": "slope", - "Smash Karts": "smash-karts", - "Stickman Hook": "stickman-hook", - "Subway Surfers": "subway-surfers", - "Subway Surfers New York": "subway-surfers-ny", - "Stick War": "flash/?game=stick-war", - "Submachine": "flash/?game=submachine", - "Submachine 2": "flash/?game=submachine-2", - "Submachine 3": "flash/?game=submachine-3", - "Submachine 4": "flash/?game=submachine-4", - "Submachine 5": "flash/?game=submachine-5", - "Submachine 6": "flash/?game=submachine-6", - "Submachine 7": "flash/?game=submachine-7", - "Submachine 8": "flash/?game=submachine-8", - "Submachine 9": "flash/?game=submachine-9", - "Submachine 10": "flash/?game=submachine-10", - "Submachine 0": "flash/?game=submachine-0", - "Submachine 32 Chambers": "flash/?game=submachine-32-chambers", - "Submachine FLF": "flash/?game=submachine-flf", - "Sugar Sugar": "w-flash/?game=sugar-sugar", - "The Final Earth": "the-final-earth", - "There Is No Game": "there-is-no-game", - "Time Shooter": "time-shooter", - "Time Shooter 3": "time-shooter-3", - "Tiny Fishing": "tiny-fishing", - "Trace": "trace", - "Tanuki Sunset": "tanuki-sunset", - "Temple Run 2": "temple-run-2", - "The Impossible Quiz": "flash/?game=the-impossible-quiz", - "This Is The Only Level": "flash/?game=this-is-the-only-level", - "This Is The Only Level 2": "w-flash/?game=this-is-the-only-level-2", - "Tunnel Rush": "tunnel-rush", - "Two Ball 3d": "two-ball-3d", - "Vex 3": "vex-3", - "Vex 4": "vex-4", - "Vex 5": "vex-5", - "Vex 6": "vex-6", - "Vex 7": "vex-7", - "Web OSU": "web-osu", - "Ultimate Chess": "w-flash/?game=ultimate-chess", - "X Trench Run": "x-trench-run", - "Yohoho": "yohoho" -} \ No newline at end of file diff --git a/imgs/refresh.png b/imgs/refresh.png new file mode 100644 index 00000000..643edfa5 Binary files /dev/null and b/imgs/refresh.png differ diff --git a/index.html b/index.html index 947df5aa..9aa651f6 100644 --- a/index.html +++ b/index.html @@ -12,6 +12,11 @@ + + + + + @@ -72,6 +77,11 @@ MonkeyGG2 Icon
+ +
+ This feature has been disabled by whoever is hosting this MonkeyGG2 instance. +
+
@@ -232,10 +242,21 @@
+
+ +
+ +
diff --git a/js/bg.js b/js/bg.js index 627f9f7a..d5d5f41a 100644 --- a/js/bg.js +++ b/js/bg.js @@ -4,7 +4,7 @@ Vars const deg = a => Math.PI / 180 * a; const rand = (v1, v2) => Math.floor(v1 + Math.random() * (v2 - v1)); const opt = { - particles: window.width / 500 ? 1000 : 500, + particles: window.width / 500 ? 250 : 125, noiseScale: 0.005, angle: Math.PI / 180 * -90, h1: rand(0, 360), diff --git a/js/index.js b/js/index.js index a9998dae..f7639cc7 100644 --- a/js/index.js +++ b/js/index.js @@ -2,17 +2,32 @@ let currentMenu = $(".homepage"); $(".column button .card").on("click", function () { let nextMenu = this.getAttribute("data"); - if (nextMenu == "homepage") { - $(".side-buttons").fadeOut(300); + + if (nextMenu === "proxy") { + if (!config["proxy"]) { + $("#disabled").showModal(); + return; + } + $("#everything-else").fadeOut(300, () => { + $("#page-loader").fadeIn(200); + $("#page-loader").attr("src", "/proxy"); + }); + currentMenu = $("#page-loader"); + return; } currentMenu.fadeOut(300, () => { $("." + nextMenu).fadeIn(200); }); - currentMenu = $(nextMenu); + currentMenu = $("." + nextMenu); +}); - if (currentMenu != $(".homepage")) { - $(".side-buttons").fadeIn(200); +$("logo img").on("click", returnHome); +$("#gameButton").on("click", returnHome); + +$("dialog").on("click", function (e) { + if (!e.originalEvent.target.closest("div")) { + e.originalEvent.target.close(); } }); @@ -123,21 +138,11 @@ function jaroWinklerSimilarity(s1, s2) { return jaro_dist.toFixed(6); } - -function searchGamesList() { - const input = $("#search"); - const filter = input.val().toLowerCase(); - const elems = Array.from(document.querySelectorAll("#gamesList li")); - - for (i = 0; i < elems.length; i++) { - if (jaroWinklerSimilarity(filter, elems[i].innerHTML.toLowerCase().slice(0, filter.length - 1)) >= 0.9 && elems[i].innerHTML.length > 3 || elems[i].innerHTML.toLowerCase().indexOf(filter) > -1) { - elems[i].style.display = ""; - } else { - elems[i].style.display = "none"; - } - } -} - +/** + * Updates the list of games based on the current search filter and sort type. + * + * @return {void} + */ function updateList() { const filter = $("#search").val().toLowerCase(); const elems = Array.from(document.querySelectorAll("#gamesList li")); @@ -154,7 +159,20 @@ function updateList() { // then filter items with the search input elems.forEach(function (item) { - if (jaroWinklerSimilarity(filter, item.innerHTML.toLowerCase().slice(0, filter.length - 1)) >= 0.9 && item.innerHTML.length > 3 || item.innerHTML.toLowerCase().indexOf(filter) > -1) { + let similarity = jaroWinklerSimilarity(filter, item.innerHTML.toLowerCase().slice(0, filter.length - 1)); + if (item.getAttribute("aliases")) { + for (alias in item.getAttribute("aliases").split(',')) { + if (alias.length > 1) { + console.log("alias"); + console.log(alias); + console.log(typeof alias); + console.log(alias.length); + similarity += jaroWinklerSimilarity(filter, alias.toLowerCase().slice(0, filter.length - 1)); + } + } + } + + if (similarity >= 0.7 && item.innerHTML.length > 2 || item.innerHTML.toLowerCase().indexOf(filter) > -1) { item.style.display = ""; } else { item.style.display = "none"; @@ -163,11 +181,21 @@ function updateList() { // now sort by jaro winkler distance elems.sort(function (a, b) { - const distanceA = jaroWinklerSimilarity(filter, a.textContent.toLowerCase()); - const distanceB = jaroWinklerSimilarity(filter, b.textContent.toLowerCase()); + let distanceA = jaroWinklerSimilarity(filter, a.textContent.toLowerCase()); + if (a.getAttribute("aliases")) { + for (alias in a.getAttribute("aliases").split(',')) { + distanceA += jaroWinklerSimilarity(filter, alias.toLowerCase()); + } + } + let distanceB = jaroWinklerSimilarity(filter, b.textContent.toLowerCase()); + if (b.getAttribute("aliases")) { + for (alias in b.getAttribute("aliases").split(',')) { + distanceB += jaroWinklerSimilarity(filter, alias.toLowerCase()); + } + } return distanceA - distanceB; - }) + }); // then fill it with the sorted and filtered list for (const item of elems) { @@ -177,6 +205,11 @@ function updateList() { $("#search").on("input", updateList); $("#sort").on("change", updateList); +/** + * Generates a clone of the current window in an about:blank. + * + * @return {void} + */ function makeclone() { if ((window.top.location.href != "about:blank")) { var url = window.location.href; @@ -199,3 +232,76 @@ function makeclone() { } } } + +dragElement(document.getElementById("gameButton")); +dragElement(document.getElementById("refresh")); + +/** + * Adds drag functionality to an HTML element. + * + * @param {HTMLElement} elmnt - The element to be dragged. + * @return {void} + */ +function dragElement(elmnt) { + var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; + if (document.getElementById(elmnt.id)) { + document.getElementById(elmnt.id).onmousedown = dragMouseDown; + } else { + elmnt.onmousedown = dragMouseDown; + } + + function dragMouseDown(e) { + e = e || window.event; + e.preventDefault(); + pos3 = e.clientX; + pos4 = e.clientY; + document.onmouseup = closeDragElement; + document.onmousemove = elementDrag; + } + + function elementDrag(e) { + e = e || window.event; + e.preventDefault(); + + pos1 = pos3 - e.clientX; + pos2 = pos4 - e.clientY; + pos3 = e.clientX; + pos4 = e.clientY; + window.click = 1; + elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; + + } + + function closeDragElement() { + + document.onmouseup = null; + document.onmousemove = null; + + if (window.click == 1) { + window.hold = true; + window.click = 0; + } + setTimeout(function () { window.hold = false; }, 100); + } +} + +/** + * Returns the user to the home page. + * + * @return {void} + */ +function returnHome() { + currentMenu.fadeOut(300, () => { + $("#everything-else").fadeIn(200); + }); + currentMenu = $(".homepage"); +} + +/** + * Refreshes the current page by reloading it. + * + * @return {void} + */ +function refreshPage() { + location.reload(); +} \ No newline at end of file diff --git a/js/loading.js b/js/loading.js index 2a5cbd57..ce4daba3 100644 --- a/js/loading.js +++ b/js/loading.js @@ -1,3 +1,7 @@ +let config; +let games; +let themes; + function changeLoadingTip() { const tips = ["Press CTRL+C to cloak your current tab", "Press CTRL+M to mask your current tab", "Press CTRL+B to go back to the home page", "Join our discord server!", "Make sure to enable popups for automatic cloak", "Why are you here?"] const element = document.getElementsByClassName("loading-tip")[0]; @@ -12,13 +16,16 @@ let changeTip = setInterval(() => { changeLoadingTip(); }, 3000); -fetch("./game-info.jsonc").then((e) => e.text()).then((jsonc) => { +fetch("./config.jsonc").then((e) => e.text()).then((jsonc) => { // removing all the comments from the jsonc file let json = JSON.parse(jsonc.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*|\/\*[\s\S]*?\*\/)/g, (m, g) => g ? "" : m)); + games = json["games"]; + themes = json["themes"]; + config = json["config"]; let gamesList = $("#gamesList"); - for (game in json) { - gamesList.append(`
  • ${game}
  • `); + for (game in games) { + gamesList.append(`
  • ${game}
  • `); } $("#gamesList li").on("click", function() { @@ -50,6 +57,14 @@ $(window).on("load", () => { }); }); +jQuery.fn.extend({showModal: function() { + return this.each(function() { + if(this.tagName=== "DIALOG"){ + this.showModal(); + } + }); +}}); + (function () { let previousTime = Date.now(); let frames = 0;