Greasy Fork is available in English.

GeoGuessr Hide UI

lets you hide ui in several ways

Installera detta skript?
Upphovsmannens rekommenderade skript

Du kanske också gillar Geoguessr Singleplayer Interface Cleaner.

Installera detta skript
// ==UserScript==
// @name         GeoGuessr Hide UI
// @namespace    https://greasyfork.org/en/users/1501889
// @version      1312161.1312
// @description  lets you hide ui in several ways
// @author       Clemens
// @match        https://www.geoguessr.com/*
// @icon         https://www.google.com/s2/favicons?domain=geoguessr.com
// @run-at       document-idle
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const localStorageKeyViewMode = 'geoguessr_view_mode_v3';
    const localStorageKeyPreviousViewMode = 'geoguessr_previous_view_mode_v3';
    const localStorageKeyMapHidden = 'geoguessr_map_hidden_v3';
    const localStorageKeyHealthbarsHidden = 'geoguessr_healthbars_hidden_v3';

    const mapSelector = 'div[data-qa="guess-map"]';
    const compassSelector = '.panorama-compass_compassContainer__VAYam';
    const timerSelector = '#timernode';
    const scoreAndRoundSelector = '.game_status___YFni .status_inner__eAJp4:not(#timernode)';
    const mainStatusContainerSelector = '.game_status___YFni';
    const healthbarSelector = '.hud-2_healthbar__ut7QO, .health-bar_container__04NhD, .hud_healthbar__dpSHY';
    const bullseyeControlsSelector = '.game-panorama_controls__Bi3lQ';
    const bullseyeOverviewSelector = '.game-panorama_gameOverviewItems__Xf2qP';
    const liveChallengeControlsSelector = 'aside.game-panorama_controls__QiTp0';
    const liveChallengeOverviewSelector1 = 'div.map-status_status__I5Z6p';
    const liveChallengeOverviewSelector2 = 'div.guess-status_guessStatus__AGJUD';
    const gameLogoSelector = 'div.game_logos__XclXP';
    const clockSelector = 'div.clock_clock__pnvie';
    const partyGameDuelsControlsSelector = 'aside.duels-panorama_controls___OEib';
    const keyboardShortcutsSelector = 'div[style*="display: inline-flex; position: absolute; right: 0px; bottom: 0px;"]';

    const nonMapOverlays = [
        '.game_controls__xgq6p',
        '.game_inGameLogos__T9d3L',
        'img[alt="Google Maps Logo"]',
        bullseyeControlsSelector,
        bullseyeOverviewSelector,
        liveChallengeControlsSelector,
        liveChallengeOverviewSelector1,
        liveChallengeOverviewSelector2,
        gameLogoSelector,
        partyGameDuelsControlsSelector,
        scoreAndRoundSelector,
        timerSelector,
        clockSelector,
        keyboardShortcutsSelector
    ];

    const allUIElements = nonMapOverlays.concat([
        mapSelector,
        compassSelector,
        mainStatusContainerSelector
    ]);

    const setViewMode = (mode) => {
        const currentMode = localStorage.getItem(localStorageKeyViewMode) || 'default';
        if (currentMode !== mode) {
            localStorage.setItem(localStorageKeyPreviousViewMode, currentMode);
        }
        localStorage.setItem(localStorageKeyViewMode, mode);
        applySavedPreference();
    };

    const resetToDefault = () => {
        localStorage.setItem(localStorageKeyViewMode, 'default');
        localStorage.setItem(localStorageKeyMapHidden, 'false');
        localStorage.setItem(localStorageKeyHealthbarsHidden, 'false');
        applySavedPreference();
    };

    const applySavedPreference = () => {
        const viewMode = localStorage.getItem(localStorageKeyViewMode) || 'default';
        const isMapHidden = localStorage.getItem(localStorageKeyMapHidden) === 'true';
        const isHealthbarsHidden = localStorage.getItem(localStorageKeyHealthbarsHidden) === 'true';

        const elements = {};
        allUIElements.forEach(selector => {
            const el = document.querySelector(selector);
            if (el) {
                elements[selector] = el;
            }
        });

        Object.values(elements).forEach(el => { el.style.display = 'none'; });
        document.querySelectorAll(healthbarSelector).forEach(el => { el.style.display = 'none'; });

        const selectorsToShow = new Set();
        switch (viewMode) {
            case 'default':
                allUIElements.forEach(selector => selectorsToShow.add(selector));
                break;
            case 'minimal':
                selectorsToShow.add(mapSelector);
                selectorsToShow.add(compassSelector);
                selectorsToShow.add(clockSelector);
                break;
            case 'focused-timer':
                selectorsToShow.add(mapSelector);
                selectorsToShow.add(compassSelector);
                selectorsToShow.add(mainStatusContainerSelector);
                selectorsToShow.add(timerSelector);
                selectorsToShow.add(clockSelector);
                break;
            case 'focused-all-status':
                selectorsToShow.add(mapSelector);
                selectorsToShow.add(compassSelector);
                selectorsToShow.add(mainStatusContainerSelector);
                selectorsToShow.add(scoreAndRoundSelector);
                selectorsToShow.add(timerSelector);
                selectorsToShow.add(bullseyeOverviewSelector);
                selectorsToShow.add(liveChallengeOverviewSelector1);
                selectorsToShow.add(liveChallengeOverviewSelector2);
                selectorsToShow.add(clockSelector);
                break;
            case 'map-only':
                selectorsToShow.add(mapSelector);
                break;
            case 'all-hidden':
                break;
        }

        allUIElements.forEach(selector => {
            if (elements[selector]) {
                elements[selector].style.display = selectorsToShow.has(selector) ? '' : 'none';
            }
        });

        if (isMapHidden && elements[mapSelector]) {
            elements[mapSelector].style.display = 'none';
        }

        if (!isHealthbarsHidden) {
            document.querySelectorAll(healthbarSelector).forEach(el => { el.style.display = ''; });
        }
    };

    const observer = new MutationObserver((mutationsList) => {
        for (const mutation of mutationsList) {
            if (mutation.type === 'childList' && document.querySelector(mapSelector)) {
                applySavedPreference();
                break;
            }
        }
    });

    document.addEventListener('keydown', (event) => {
        const target = event.target;
        const isEditable = target.isContentEditable ||
                           target.tagName === 'INPUT' ||
                           target.tagName === 'TEXTAREA' ||
                           target.tagName === 'SELECT' ||
                           (target.hasAttribute('role') && target.getAttribute('role') === 'textbox');

        if (isEditable) {
            return;
        }

        const currentViewMode = localStorage.getItem(localStorageKeyViewMode);
        const hotkeys = ['z', 'u', 'h', 'j', 'k', 'i', 'o'];

        if (hotkeys.includes(event.key)) {
            event.preventDefault();
        }

        if (event.key === 'z') {
            if (currentViewMode === 'all-hidden') {
                setViewMode('map-only');
            } else if (currentViewMode === 'map-only') {
                setViewMode('all-hidden');
            } else {
                const isMapHidden = localStorage.getItem(localStorageKeyMapHidden) === 'true';
                localStorage.setItem(localStorageKeyMapHidden, (!isMapHidden).toString());
                applySavedPreference();
            }
        }

        if (event.key === 'u') {
            setViewMode('all-hidden');
        }

        if (event.key === 'h') {
            localStorage.setItem(localStorageKeyMapHidden, 'false');
            if (currentViewMode === 'minimal') {
                setViewMode(localStorage.getItem(localStorageKeyPreviousViewMode) || 'default');
            } else {
                setViewMode('minimal');
            }
        }

        if (event.key === 'j') {
            localStorage.setItem(localStorageKeyMapHidden, 'false');
            if (currentViewMode === 'focused-timer') {
                setViewMode(localStorage.getItem(localStorageKeyPreviousViewMode) || 'default');
            } else {
                setViewMode('focused-timer');
            }
        }

        if (event.key === 'k') {
            localStorage.setItem(localStorageKeyMapHidden, 'false');
            if (currentViewMode === 'focused-all-status') {
                setViewMode(localStorage.getItem(localStorageKeyPreviousViewMode) || 'default');
            } else {
                setViewMode('focused-all-status');
            }
        }

        if (event.key === 'o') {
            const isHealthbarsHidden = localStorage.getItem(localStorageKeyHealthbarsHidden) === 'true';
            localStorage.setItem(localStorageKeyHealthbarsHidden, (!isHealthbarsHidden).toString());
            applySavedPreference();
        }

        if (event.key === 'i') {
            resetToDefault();
        }
    });

    observer.observe(document.body, { childList: true, subtree: true });

    applySavedPreference();
})();