Show Virtual Munzee Name

Show the virtual munzee names

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Show Virtual Munzee Name
// @namespace    none
// @version      2020.06.26.1022
// @description  Show the virtual munzee names
// @author       technical13
// @match        https://www.munzee.com/m/*/*
// @match        https://www.munzee.com/map/*
// @match        https://www.munzee.com/specials/*
// ==/UserScript==
// jshint esversion: 6
// @basedon  CzPeet's https://greasyfork.org/en/scripts/373533-showvirtualmunzeename

const ver = '2020.06.26.1022';
const scriptName = 'Show Virtual Munzee Name v' + ver;
var isDebug = false;
var intVerbosity = 0;

function toBoolean( val ) {
    const arrTrue = [ undefined, null, '', true, 'true', 1, '1', 'on', 'yes' ];
    val = ( typeof( val ) === 'string' ? val.toLowerCase() : val );

    log( 4, 'log', 'toBoolean() is returning: %o', ( arrTrue.indexOf( val ) !== -1 ? true : false ) );
    return ( arrTrue.indexOf( val ) !== -1 ? true : false );
}
function log( intV, strConsole, strLog, ...arrArgs ) {
    if ( strConsole === undefined ) { strConsole = 'log'; }
    if ( strLog === undefined ) { strLog = '%o'; }
    if ( intVerbosity >= intV && ( strConsole === 'groupEnd' ) ) { console[ strConsole ](); }
    if ( intV === 0 || ( isDebug && intVerbosity >= intV ) ) { console[ strConsole ]( '[%i]: %s: ' + strLog, intV, scriptName, ...arrArgs ); }
}
const intParamsStart = ( document.URL.indexOf( '?' ) + 1 );
const strParams = document.URL.substr( intParamsStart );
const arrParamSets = strParams.split( '&' );
var objParams = { unknownParams: [] };
arrParamSets.forEach( function( strParam ) {
    let arrParam = strParam.split( '=' );
    let strParamName = ( arrParam[ 0 ].toLowerCase() || '' );
    if ( strParamName === 'verbosity' ) {
        isDebug = true;
        intVerbosity = ( arrParam[ 1 ] ? ( parseInt( arrParam[ 1 ] ) < 0 ? 0 : ( parseInt( arrParam[ 1 ] ) > 9 ? 9 : parseInt( arrParam[ 1 ] ) ) ) : 9 );
    } else if ( strParamName === 'debug' ) {
        isDebug = toBoolean( arrParam[ 1 ] );
        intVerbosity = 1;
    }
} );

log( 1, 'warn', 'Debug mode is on with verbosity level: %o', intVerbosity );
log( 1, 'groupCollapsed', 'Verbosity options: (click to expand)' );
log( 1, 'log', '1) Summary\n2) Parameters retrieved from URL\n3) Variables set to objParams\n4) Function returns\n9) ALL debugging info and this notice.' );
log( 1, 'groupEnd' );

var objMunzees = {
    airmystery: 'Air Mystery',
    canoe: 'Submarine Evolution (Stage 1)',
    carnationseed: 'Carnation Evolution (Stage 1)',
    carrot: 'Carrot Evolution (Stage 3)',
    carrotseed: 'Carrot Evolution (Stage 1)',
    carrotplant: 'Carrot Evolution (Stage 2)',
    championshiphorse: 'Horse Evolution (Stage 3)',
    chick: 'Eggs Evolution (Stage 1)',
    coldflatrob: 'Cold Flat Rob',
    colt: 'Horse Evolution (Stage 1)',
    czechrepubliciconiclocation: 'Iconic Location (Czech Republic)',
    dwarfleprechaun: 'Leprechaun (Dwarf)',
    electricmystery: 'Electric Mystery',
    ephyralarva: 'Jellyfish Evolution (Stage 4)',
    farmer: 'Family Evolution (Stage 1)',
    firstwheel: 'Car Evolution (Stage 1)',
    flathammock: 'Flat Hammock',
    flatlou: 'Flat Lou',
    flatmatt: 'Flat Matt',
    flatrob: 'Flat Rob',
    icemystery: 'Ice Mystery',
    joystickvirtual: 'Virtual Joystick',
    limebutterfly: 'Lime Butterfly',
    motorboat: 'Submarine Evolution (Stage 2)',
    munzee: 'Greenie',
    nightvisiongoggles: 'Night Vision Goggles',
    peas: 'Peas Evolution (Stage 3)',
    peasplant: 'Peas Evolution (Stage 2)',
    peasseed: 'Peas Evolution (Stage 1)',
    poiairport: 'Airport POI',
    poibank: 'Bank POI',
    poibeach: 'Beach POI',
    poicampground: 'Campground POI',
    poicemetery: 'Cemetery POI',
    poicinema: 'Cinema POI',
    poifaithplace: 'Faith Place POI',
    poifirstresponders: 'First Responder POI',
    poigolf: 'Golf POI',
    poihistoricalplace: 'Historical Place POI',
    poihospital: 'Hospital POI',
    poilibrary: 'Library POI',
    poimuseum: 'Museum POI',
    poiplaypark: 'Play Park POI',
    poipostoffice: 'Post Office POI',
    poitransportation: 'Transportation POI',
    poisports: 'Sports POI',
    poiuniqueattraction: 'Unique Attraction POI',
    poiuniversity: 'University POI',
    poiwildlife: 'Wildlife POI',
    poivirtualgarden: 'Virtual Garden POI',
    pottedplant: 'Field Evolution (Stage 1)',
    reptoidyeti: 'Yeti (Reptoid variant)',
    rosegrowth: 'Rose Evolution (Stage 3)',
    safaritruck: 'Safari Bus Evolution (Stage 1)',
    skyland: 'Skyland (empty)',
    skyland1: 'Skyland (1 guest)',
    skyland2: 'Skyland (2 guests)',
    skyland3: 'Skyland (3 guests)',
    skyland4: 'Skyland (4 guests)',
    skyland5: 'Skyland (5 guests)',
    skyland6: 'Skyland (6 guests)',
    skyland7: 'Skyland (glitch!)',
    sirprizewheel: 'Sir Prizewheel',
    temporaryvirtual: 'Temporary Virtual',
    theunicorn: 'Unicorn',
    timeshareroom: 'Timeshare Room',
    travelernomad: 'Traveler Nomad',
    treehouse: 'Treehouse (empty)',
    treehouse1: 'Treehouse (1 guest)',
    treehouse2: 'Treehouse (2 guests)',
    treehouse3: 'Treehouse (3 guests)',
    treehouse4: 'Treehouse (4 guests)',
    treehouse5: 'Treehouse (5 guests)',
    treehouse6: 'Treehouse (6 guests)',
    treehouse7: 'Treehouse (glitch!)',
    trojanunicorn: 'Trojan Unicorn',
    tuxflatrob: 'Tux Flat Rob',
    virtual: 'Virtual White',
    vacationcondo: 'Vacation Condo',
    vacationcondoroom: 'Vacation Condo Room',
    virtualcitrine: 'Virtual Citrine',
    virtualonyx: 'Virtual Onyx',
    virtualsapphire: 'Virtual Sapphire'
};

function getMunzeeType( srcUrl ) {
    var strRawColorName = srcUrl.slice( ( srcUrl.lastIndexOf( '/' ) + 1 ), srcUrl.lastIndexOf( '.' ) ).replace( /_/g, ' ' );
    var strColorName = ( objMunzees[ strRawColorName ] || strRawColorName );
    if ( strColorName === strRawColorName ) {
        var arrColorName = strRawColorName.split( ' ' );
        arrColorName.forEach( ( thisWord, word ) => {
            arrColorName[ word ] = thisWord[ 0 ].toUpperCase() + thisWord.substr( 1 );
        } );
        strColorName = arrColorName.join( ' ' );
    }
    return strColorName;
}
function specialsFilter() {
    $( 'div#filterimgs > img' ).each( ( ndx, imgFilterPin ) => {
        var strColorNameFilter = getMunzeeType( $( imgFilterPin ).attr( 'src' ) );
        $( imgFilterPin ).attr( 'title', strColorNameFilter );
    } );
}

( function() {
    'use strict';
    log( 0, 'info', 'Script loaded.' );

    var arrPins = [];
    $( 'img.qd-img' ).each( ( ndxQdImg, imgPinQdImg ) => { arrPins.push( imgPinQdImg ); } );
    $( 'img.pin' ).each( ( ndxPin, imgPinPin ) => { arrPins.push( imgPinPin ); } );
    arrPins.forEach( ( domPin, ndx ) => {
        var pinSection = $( domPin ).parents( 'section' );
        var strColorName = getMunzeeType( $( domPin ).attr( 'src' ) );

        $( 'div.unicorn > img' ).each( ( ndxUnicorn, domPinUnicorn ) => {
            var strColorNameUnicorn = getMunzeeType( $( domPinUnicorn ).attr( 'src' ) );
            $( domPinUnicorn ).attr( 'title', strColorNameUnicorn );
        } );
        if ( pinSection.length > 0 ) {
            $( pinSection ).attr( 'title', strColorName );
        } else {
            $( domPin ).attr( 'title', strColorName );
        }
    } );

    specialsFilter();

    $( document ).on( 'mouseup', '#map_span', function( e ) { specialsFilter(); } );
    $( document ).on( 'click', '#map-box-specials-zoom-in', function( e ) { specialsFilter(); } );
    $( document ).on( 'click', '#map-box-specials-zoom-out', function( e ) { specialsFilter(); } );
} )();