- // ==UserScript==
- // @name Geoguessr Unity Script
- // @description For a full list of features included in this script, see this document https://docs.google.com/document/d/18nLXSQQLOzl4WpUgZkM-mxhhQLY6P3FKonQGp-H0fqI/edit?usp=sharing
- // @version 6.2.1
- // @author Jupaoqq
- // @match https://www.geoguessr.com/*
- // @run-at document-start
- // @license MIT
- // @namespace https://greasyfork.org/users/838374
- // @grant none
- // ==/UserScript==
-
- /**
- * Custom your minimap here!
- */
-
- /**
- * 1: replace "roadmap" in the customMode field with any of the options below:
- * "roadmap" displays the default road map view. This is the default map type.
- * "satellite" displays Google Earth satellite images.
- * "hybrid" displays a mixture of normal and satellite views.
- * "terrain" displays a physical map based on terrain information.
- */
-
- let customMode = "roadmap";
-
- /**
- * 2: Go to https://mapstyle.withgoogle.com/ first click "No thanks, take me to the old style wizard"
- * then click "MORE OPTIONS" to hide or reveal certain features.
- * When you are done, click "FINISH", then "COPY JSON", and replace my settings in custom with your settings below.
- */
-
- let custom =
-
- [
- {
- "featureType": "administrative",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "landscape",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "poi.park",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "road",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "transit",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- }
- ]
-
- /**
- * End of Minimap customization instruction section
- */
-
- /**
- * Overlay anything on the minimap here!
- * 1. overlay an GeoJSON object
- * 2. overlay a custom image
- */
-
- /**
- * Overlay an GeoJSON object:
- */
-
- // change the GeoJson display style.
- // strokeOpacity, strokeWeight, fillOpacity takes a value between 0 and 1.
- // strokeColor and fillColor supports Hexadecimal color (#00FF00 is green)
- // If clickable is set to true, you would not be able to make a guess within the shape
-
- let GEOJSON_STYLE =
- {
- strokeColor: "black",
- strokeOpacity: 1,
- strokeWeight: 0.2,
- fillColor: "#00FF00",
- fillOpacity: 0,
- clickable: false,
- }
-
- // replace the URL with your desired link
- // For example, search "Germany GeoJson" on Github, find this link (https://github.com/isellsoap/deutschlandGeoJSON/blob/main/4_kreise/4_niedrig.geo.json)
- // Then click "Download" to get the raw.githubusercontent.com link (https://raw.githubusercontent.com/isellsoap/deutschlandGeoJSON/main/4_kreise/4_niedrig.geo.json)
- // and replace the URL below with that URL.
- // State zipcode: see this site https://github.com/OpenDataDE/State-zip-code-GeoJSON
-
- let YOUR_URL = "https://raw.githubusercontent.com/severinlandolt/map-switzerland/main/02%20GeoJSON/CH_Kantonsgrenzen_100_geo.json"
-
- // set it to true to add your custom GeoJSON by copy it to the code below (this is for
-
- let GeoJsonCustomUser = false
-
- // replace with your custom GeoJson, go to https://geojson.io/ to customize it then copy the Json to here
-
- let CUSTOM_GEOJSON =
-
- {
- "type": "FeatureCollection",
- "features": [
- {
- "type": "Feature",
- "properties": {},
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- 2.493896484375,
- 52.7163309360463
- ],
- [
- 2.4609375,
- 53.15994678846807
- ],
- [
- 3.2025146484375,
- 53.179703893605385
- ],
- [
- 3.2080078125,
- 52.96518371955126
- ],
- [
- 2.48291015625,
- 52.948637884883205
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {},
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- 3.218994140625,
- 52.05586831074774
- ],
- [
- 3.218994140625,
- 52.13685974852633
- ],
- [
- 2.515869140625,
- 52.1267438596429
- ],
- [
- 2.515869140625,
- 51.77803705914517
- ],
- [
- 3.2354736328125,
- 51.78993084774129
- ],
- [
- 3.228607177734375,
- 51.96119237712624
- ],
- [
- 2.8571319580078125,
- 51.95230623740452
- ]
- ]
- }
- },
- {
- "type": "Feature",
- "properties": {
- "stroke": "#555555",
- "stroke-width": 2,
- "stroke-opacity": 1
- },
- "geometry": {
- "type": "LineString",
- "coordinates": [
- [
- 2.5048828125,
- 52.619725272670266
- ],
- [
- 2.5103759765625,
- 52.274880130680536
- ],
- [
- 2.867431640625,
- 52.284962354465726
- ],
- [
- 3.2299804687499996,
- 52.29504228453735
- ],
- [
- 3.2135009765625,
- 52.63973017532399
- ],
- [
- 2.5096893310546875,
- 52.621392697207625
- ]
- ]
- }
- }
- ]
- }
-
- /**
- * Overlay a custom image:
- */
-
- // set it to true to add your image overlay
-
- let OverlayCustom = false
-
- // replace the URL with your desired link
-
- let OVERLAY_URL = "https://www.battleface.com/blog/wp-content/uploads/2020/10/patreon-profile-tom-geowizard.jpg"
-
- // set the bounds for the image - latitude (North and South), longitude (North and South)
-
- let OVERLAY_BOUNDS =
- {
- north: 53,
- west: -3,
- south: 51,
- east: 1,
- };
-
- // change the image overlay display style.
-
- let OVERLAY_STYLE =
- {
- fillOpacity: 0.2,
- clickable: false,
- }
-
- /**
- * End of Minimap Overlay instruction section
- */
-
- // API Keys
-
- var MS_API_KEY = "Ap2DwDDitzY7jJuYeIJF6YyfqDkYt-QxIBjeQ6SDEJelSfb6ghAVb-V4I-G3om-s";
- var YANDEX_API_KEY = "b704b5a9-3d67-4d19-b702-ec7807cecfc6";
- var KAKAO_API_KEY = "cbacbe41e3a223d794f321de4f3e247b";
- var MAPBOX_API_KEY = "pk.eyJ1IjoianVwYW9xcSIsImEiOiJjbDB2dTBnbngweWIzM2NtdWR5NXZ1dncyIn0.bJixk3kN5Mmedw_C3vQmmw";
- const MAPS_API_URL = "https://maps.googleapis.com/maps/api/js"; // removed "?" from the link
- var MAPILLARY_API_KEY_LIST =
- ["MLY|6723031704435203|5afd537469b114cf814881137ad74b7c",
- "MLY|6691659414239148|b45e7e82cde126044cbc2cf5d4a7c9b1",
- "MLY|5074369465929308|f7ad2802cbaf26c63f88046a292df68b",
- "MLY|7451643761528219|6477f2db0e3928b51e45ec9311983936",
- "MLY|4855256237866198|6d0464771831c8a4bf2be095e1e1aabc",
- "MLY|4772941976102161|8458d4f08d2e1970cdfe0a4e242c04ff",
- "MLY|4492067214235489|94c44703942362ad6f6b70b5d32c3a45",
- "MLY|4618251611628426|0cef71d6ec8b997a5ec06ecdeabf11ec",
- "MLY|4096846270415982|fa2ce29641503e6ef665f17459633570",
- "MLY|4231415756962414|fe353880fd246e8a4a6ae32152f7dbb0",]
-
- var MAPILLARY_API_KEY = MAPILLARY_API_KEY_LIST[Math.floor(Math.random() * MAPILLARY_API_KEY_LIST.length)];
-
- console.log("Geoguessr Unity Script v6.2.1 by Jupaoqq");
-
-
- // Store each player instance
-
- let YandexPlayer, KakaoPlayer, GooglePlayer, MapillaryPlayer, MSStreetPlayer, MapboxPlayer, MapboxMarker;
- let YANDEX_INJECTED = false;
- let BAIDU_INJECTED = false;
- let KAKAO_INJECTED = false;
- let MAPILLARY_INJECTED = false;
- let MS_INJECTED = false;
- let MAPBOX_INJECTED = false;
- let rainLayer;
-
- // Game mode detection
-
- let isBattleRoyale = false;
- let isDuel = false;
- let isBullseye = false;
- let isLiveChallenge = false;
-
- // Player detection and coordinate conversion
-
- let nextPlayer = "Google";
- let nextPlayer_save = "Google";
- let global_lat = 0;
- let global_lng = 0;
- let global_cc = null;
- let global_panoID = null;
- let global_BDID, global_BDAh, global_BDBh;
- let yId, yTime, yEnd, iId;
- let global_heading = null;
- let global_pitch = null;
-
- let krCoordinates = [38.75292321084364, 124.2804539232574, 33.18509676203202, 129.597381999198]
- let global_radi = 100
-
- // Callback variables
-
- let eventListenerAttached = false;
- let povListenerAttached = false;
- let playerLoaded = false;
- let teleportLoaded = false;
- let syncLoaded = false;
-
- // Minimize Yandex API use
-
- let yandex_map = false;
- let Kakao_map = false;
- let Wikipedia_map = false;
- let Minecraft_map = false;
- let bing_map = false;
-
- // Mapillary Image Key
-
- let mmKey = 0;
-
- // Handle Yandex compass
-
- let COMPASS = null;
-
- // Handle undo
-
- let locHistory = [];
- let defaultPanoIdChange = true;
-
- // Round check
-
- let ROUND = 0;
- let CURRENT_ROUND_DATA = null;
-
- let switch_call = true;
- let one_reset = false;
- // let cnt = 0;
-
- let cn_tips = false;
- var isFirefox = typeof InstallTrigger !== 'undefined';
-
- let linksList = []
- let fire1 = true;
- let allowDetect = false;
- let planetType = "None";
-
- // Satellite Map Radius (in Meters)
- let ms_radius = 15000;
- let sat_choice = false;
-
- // Create the Maps, but not reload API
- let partialCreateYandex = false;
- let partialCreateKakao = false;
- let partialCreateMapillary = false;
- let partialCreateMS = false;
- let partialCreateMapbox = false;
-
- // let NEW_ROUND_LOADED = false;
-
- // Geoguessr Canvas String Names
-
- let GENERAL_LAYOUT = ".game-layout__canvas";
- let GENERAL_CANVAS = ".game-layout__panorama-canvas";
- let BR_CANVAS = ".br-game-layout__panorama-canvas";
- let BR_WRAPPER = ".br-game-layout__panorama-wrapper";
- let BR_LAYOUT = ".br-game-layout";
- let FAIL_TO_LOAD_CANVAS = ".game-layout__panorama-message";
- let DUEL_LAYOUT = ".game_layout__TO_jf";
- let DUELS_CANVAS = ".game-panorama_panorama__rdhFg";
- let DUELS_CANVAS2 = ".game-panorama_panoramaCanvas__PNKve";
- let BULLSEYE_CANVAS = ".game-panorama_panorama__ncMwh";
- let BULLSEYE_CANVAS2 = ".game-panorama_panoramaCanvas__r_5ea";
- let LIVE_CANVAS = ".game-panorama_panorama__Qpsxl";
- let LIVE_CANVAS2 = ".game-panorama_panoramaCanvas__LaXCd";
- let DUELS_POPUP = ".overlay_overlay__AR02x";
- let BR_POPUP = ".popup__content";
-
- let BR_LOAD_KAKAO = false;
- let BR_LOAD_YANDEX = false;
- let BR_LOAD_MS = false;
- let BR_LOAD_MP = false;
- let BR_LOAD_MAPILLARY = false;
-
- let ms_sat_map = false;
- let rtded = false;
- let NM = false;
- let NP = false;
- let NZ = false;
-
- let initBing = false;
-
- let menuLocCounter = 0;
- let wikiUrl = "";
- let bullseyeMapillary = false;
- let randomPlanets = false;
-
- let GAME_CANVAS = "";
- let DUEL_CANVAS = "";
-
- function sleep(milliseconds) {
- var start = new Date().getTime();
- for (var i = 0; i < 1e7; i++) {
- if ((new Date().getTime() - start) > milliseconds){
- break;
- }
- }
- }
-
- // window.addEventListener('popstate', function(event) {
- // var photo = document.getElementById("sat_map");
- // console.log(photo);
- // document.body.appendChild(photo);
- // }, false);
-
-
-
- /**
- * Helper Functions
- */
-
- // Highlight API Load Message
-
- function myHighlight(...args) {
- console.log(`%c${[...args]}`, "color: dodgerblue; font-size: 24px;");
- }
-
- // Hex to number conversion for Baidu coordinate conversion
-
- function hex2a(hexx) {
- var hex = hexx.toString();
- var str = '';
- for (var i = 0; i < hex.length; i += 2)
- {
- str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
- }
- return str;
- }
-
- // Coordinate computation given heading, distance and current coordinates for teleport
-
- function FindPointAtDistanceFrom(lat, lng, initialBearingRadians, distanceKilometres) {
- const radiusEarthKilometres = 6371.01;
- var distRatio = distanceKilometres / radiusEarthKilometres;
- var distRatioSine = Math.sin(distRatio);
- var distRatioCosine = Math.cos(distRatio);
-
- var startLatRad = DegreesToRadians(lat);
- var startLonRad = DegreesToRadians(lng);
-
- var startLatCos = Math.cos(startLatRad);
- var startLatSin = Math.sin(startLatRad);
-
- var endLatRads = Math.asin((startLatSin * distRatioCosine) + (startLatCos * distRatioSine * Math.cos(initialBearingRadians)));
-
- var endLonRads = startLonRad
- + Math.atan2(
- Math.sin(initialBearingRadians) * distRatioSine * startLatCos,
- distRatioCosine - startLatSin * Math.sin(endLatRads));
-
- return { lat: RadiansToDegrees(endLatRads), lng: RadiansToDegrees(endLonRads) };
- }
-
- function DegreesToRadians(degrees) {
- const degToRadFactor = Math.PI / 180;
- return degrees * degToRadFactor;
- }
-
- function RadiansToDegrees(radians) {
- const radToDegFactor = 180 / Math.PI;
- return radians * radToDegFactor;
- }
-
- function toRadians(degrees) {
- return degrees * Math.PI / 180;
- };
-
- // Converts from radians to degrees.
- function toDegrees(radians) {
- return radians * 180 / Math.PI;
- }
-
- function bearing(start_latitude, start_longitude, stop_latitude, stop_longitude){
- let y = Math.sin(stop_longitude-start_longitude) * Math.cos(stop_latitude);
- let x = Math.cos(start_latitude)*Math.sin(stop_latitude) -
- Math.sin(start_latitude)*Math.cos(stop_latitude)*Math.cos(stop_longitude-start_longitude);
- let brng = Math.atan2(y, x) * 180 / Math.PI;
- return brng
- }
-
- // Check if two floating point numbers are really really really really close to each other (to 10 decimal points)
- function almostEqual (a, b) {
- return a.toFixed(10) === b.toFixed(10)
- }
-
- function almostEqual2 (a, b) {
- return a.toFixed(3) === b.toFixed(3)
- }
-
- function moveFrom(coords, angle, distance){
- const R_EARTH = 6378.137;
- const M = (1 / ((2 * Math.PI / 360) * R_EARTH)) / 1000;
- let radianAngle = -angle * Math.PI / 180;
- let x = 0 + (distance * Math.cos(radianAngle));
- let y = 0 + (distance * Math.sin(radianAngle));
-
- let newLat = coords.lat + (y * M);
- let newLng = coords.lng + (x * M) / Math.cos(coords.lat * (Math.PI / 180));
- return { lat: newLat, lng: newLng };
- }
-
- function getBBox(coordinates, meters){
- let SW = moveFrom(coordinates, 135, meters);
- let NE = moveFrom(coordinates, 315, meters);
- return `${SW.lng},${SW.lat},${NE.lng},${NE.lat}`;
- }
-
- // function getBBox2(coordinates, meters){
- // let SW = moveFrom(coordinates, 135, meters * 1.44);
- // let NE = moveFrom(coordinates, 315, meters * 1.44);
- // return [NE.lat,SW.lng,SW.lat,NE.lng];
- // }
-
- function getBBox2(coordinates, meters){
- let SW = moveFrom(coordinates, 135, meters * 1.44);
- let NE = moveFrom(coordinates, 315, meters * 1.44);
- if (NE.lat > 90)
- {
- SW.lat -= (NE.lat - 90);
- NE.lat = 90;
- }
- if (SW.lat < -90)
- {
- NE.lat += (-90 - SW.lat);
- SW.lat = -90;
- }
- if (SW.lng < -180)
- {
- NE.lng += (-180 - SW.lng);
- SW.lng = -180;
- }
- if (NE.lng > 180)
- {
- SW.lng -= (NE.lng - 180);
- NE.lng = 180;
- }
- return [NE.lat,SW.lng,SW.lat,NE.lng];
- }
-
- function distance(lat1, lon1, lat2, lon2) {
- var p = 0.017453292519943295; // Math.PI / 180
- var c = Math.cos;
- var a = 0.5 - c((lat2 - lat1) * p)/2 +
- c(lat1 * p) * c(lat2 * p) *
- (1 - c((lon2 - lon1) * p))/2;
-
- return 1000 * 12742 * Math.asin(Math.sqrt(a)); // 2 * R; R = 6371 km
- }
-
- // Script injection, extracted from extenssr:
- // https://gitlab.com/nonreviad/extenssr/-/blob/main/src/injected_scripts/maps_api_injecter.ts
-
- function overrideOnLoad(googleScript, observer, overrider) {
- const oldOnload = googleScript.onload
- googleScript.onload = (event) => {
- const google = window.google
- if (google) {
- observer.disconnect()
- overrider(google)
- }
- if (oldOnload) {
- oldOnload.call(googleScript, event)
- }
- }
- }
-
- function grabGoogleScript(mutations) {
- for (const mutation of mutations) {
- for (const newNode of mutation.addedNodes) {
- const asScript = newNode
- if (asScript && asScript.src && asScript.src.startsWith('https://maps.googleapis.com/')) {
- //asScript.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyDqRTXlnHXELLKn7645Q1L_5oc4CswKZK4&v=3&libraries=places,drawing&language=ja®ion=JP"
- return asScript
- }
- }
- }
- return null
- }
-
- function injecter(overrider) {
- if (document.documentElement)
- {
- injecterCallback(overrider);
- }
- else
- {
- alert("Script didn't load, refresh to try loading the script");
- }
- }
-
-
- function injecterCallback(overrider)
- {
- new MutationObserver((mutations, observer) => {
- const googleScript = grabGoogleScript(mutations)
- if (googleScript) {
- overrideOnLoad(googleScript, observer, overrider)
- }
- }).observe(document.documentElement, { childList: true, subtree: true })
- }
-
- function magic_formula(boundary)
- {
- let area = Math.abs((boundary[0] - boundary[2]) * (boundary[1] - boundary[3]))
- // console.log(boundary);
- // console.log(area);
- let dist = Math.pow((area / 50000), 0.25) * 20000
- if (dist < 250) dist = 250
- return dist
- }
-
- function formatDist()
- {
- if (ms_radius > 999)
- {
- let d = ms_radius / 1000.0;
- return parseFloat(d.toPrecision(2)).toString() + "km";
- }
- else
- {
- let d = ms_radius;
- return parseFloat(d.toPrecision(3)).toString() + "m";
- }
- }
-
- // Getter function for the button elements
-
- function setButtons()
- {
- // console.log("set")
- return [document.getElementById("Teleport Forward"), document.getElementById("Teleport Reverse"), document.getElementById("Teleport Button"), document.getElementById("plus"), document.getElementById("minus"),
- document.getElementById("reset"), document.getElementById("switch"), document.getElementById("Show Buttons"),
- document.getElementById("Date Button"), document.getElementById("minus year"), document.getElementById("plus year"),
- document.getElementById("Minimap Button"), document.getElementById("Overlay Button"), document.getElementById("Help Button"),
- document.getElementById("Teleport Options Button"), document.getElementById("Satellite Switch"), document.getElementById("Mosaic Enable")];
- }
-
- function setButtons2()
- {
- // console.log("set")
- return [document.getElementById("Show Buttons"),
- document.getElementById("Youtube Button"),
- document.getElementById("Info Menu"),
- document.getElementById("Teleport Menu"),
- document.getElementById("Satellite Menu"),
- document.getElementById("Mosaic Menu"),
- document.getElementById("Minimap Menu Button"),
- document.getElementById("Space Menu Button"),
- ]
- }
-
- // Store default position for the button elements
-
- function btnPosFinal(element)
- {
- if (element.id !== "Show Buttons")
- {
- if (element.classList.contains("menu-btn"))
- {
- element.style.right = "0.5em";
- }
-
- if (element.classList.contains("full") || element.classList.contains("extra-full"))
- {
- element.style.right = "4em";
- }
- else if (element.classList.contains("half"))
- {
- if (element.classList.contains("horizontal-1"))
- {
- element.style.right = "4em";
- }
- else if (element.classList.contains("horizontal-2"))
- {
- element.style.right = "11.75em";
- }
- else if (element.classList.contains("horizontal-3"))
- {
- element.style.right = "19.5em";
- }
- }
- else if (element.classList.contains("small"))
- {
- if (element.classList.contains("horizontal-1"))
- {
- element.style.right = "17em";
- }
- else if (element.classList.contains("horizontal-3"))
- {
- element.style.right = "4em";
- }
- }
- else if (element.classList.contains("large"))
- {
- element.style.right = "6.5em";
- }
-
- if (element.classList.contains("vertical-0"))
- {
- element.style.top = "6em";
- }
- else if (element.classList.contains("vertical-1"))
- {
- element.style.top = "9.5em";
- }
- else if (element.classList.contains("vertical-2"))
- {
- element.style.top = "12em";
- }
- else if (element.classList.contains("vertical-3"))
- {
- element.style.top = "14.5em";
- }
- else if (element.classList.contains("vertical-4"))
- {
- element.style.top = "17em";
- }
- else if (element.classList.contains("vertical-5"))
- {
- element.style.top = "19.5em";
- }
- }
- }
-
- function handleDropdown()
- {
- function dropdownHelper1(nm)
- {
- let hC = 0
- for (let mapDiv of document.getElementsByClassName(nm)){
- mapDiv.style.top = (11.85 + (hC * 1.65)).toString() + "em";
- hC++;
- }
- }
- function dropdownHelper2(nm)
- {
- let hC = 0
- for (let mapDiv of document.getElementsByClassName(nm)){
- mapDiv.style.top = (14.1 + (hC * 1.65)).toString() + "em";
- hC++;
- }
- }
- // let classN = ["preset-minimap", "overlay-minimap", "space-mainmap", "space-minimap"]
- let classN = ["preset-minimap", "overlay-minimap", "space-minimap", "space-2minimap", "space-3minimap"]
- for (let x of classN)
- {
- dropdownHelper1(x);
- }
- let classN2 = ["satellite-style", "satellite-type", "grid-size", "grid-opt"];
- for (let x of classN2)
- {
- dropdownHelper2(x);
- }
- allowDetect = true;
- }
-
- function resetBtnPos()
- {
- let [
- mainMenuBtn,
- YoutubeBtn,
- infoMenu,
- teleportMenu,
- satelliteMenu,
- mosaicMenu,
- MinimapMenuBtn,
- SpaceMenuBtn,
- ] = setButtons2();
-
- // Manu Buttons
-
- mainMenuBtn.style.top = "6em";
- YoutubeBtn.style.top = "6em";
- infoMenu.style.top = "9.5em";
- teleportMenu.style.top = "12.5em";
- MinimapMenuBtn.style.top = "15.5em";
- mosaicMenu.style.top = "18.5em";
- satelliteMenu.style.top = "21.5em";
- SpaceMenuBtn.style.top = "24.5em";
-
- mainMenuBtn.style.right = "0.5em";
- mainMenuBtn.style.width = "3em";
-
- for (let element of document.getElementsByClassName("unity-btn")){
- btnPosFinal(element);
- }
- handleDropdown();
-
- }
-
- // Adjust Buttons for different game modes
-
- function AdjustBtnPos(top, right, arg)
- {
- if (arg)
- {
- resetBtnPos();
- }
- for (let element of document.getElementsByClassName("unity-btn")){
- let eTop = element.style.top;
- let eRight = element.style.right;
- element.style.top = "calc(" + top.toString() + " + " + eTop + ")";
- element.style.right = "calc(" + right.toString() + " + " + eRight + ")";
- // console.log(element.style.top)
- }
- }
-
- function handleStyles()
- {
- let unityCSS =
- `visibility:hidden;
- border-radius: 25px;
- opacity: 0.8;
- height:2em;
- position:fixed;
- z-index:99999;
- background-color: #ba55d3;
- box-shadow: 0px 8px 15px rgba(0, 0, 0, 0.1);
- border: none;
- color: white;
- padding: none;
- text-align: center;
- vertical-align: text-top;
- text-decoration: none;
- display: inline-block;
- font-size: 16px;`;
-
- for (let element of document.getElementsByClassName("unity-btn")){
- if (element.id !== "Show Buttons")
- {
- element.style = unityCSS;
- // const classNames = ["preset-minimap", "overlay-minimap", "satellite-style", "satellite-type", "space-mainmap", "space-minimap"]
- const classNames = ["preset-minimap", "overlay-minimap", "satellite-style", "satellite-type", "space-minimap","space-2minimap","space-3minimap", "grid-size", "grid-opt"]
- if (classNames.some(className => element.classList.contains(className)))
- {
- element.style.height = "1.5em";
- element.style.background = "#ff69b4";
- if (["Clear", "Default", "Satellite", "solarNoon", "Earth", "Grid 0"].includes(element.id))
- {
- if (element.id == "Clear")
- {
- element.loaded = true;
- }
- element.style.background = "#ff1493";
- if (typeof element.dim !== typeof null)
- {
- if (element.dim == "2D" || element.dim == "3D")
- {
- element.style.background = "#ff69b4";
- }
- }
- }
- }
-
- if (element.classList.contains("menu-btn"))
- {
- element.style.width = "3em";
- element.style.height = "2.5em";
- // element.style.borderStyle = "solid";
- // element.style.borderWidth = "0.1px"
- // element.style.borderColor = "black";
-
- }
-
- if (element.classList.contains("extra-height"))
- {
- element.style.height = "4.5em";
- }
-
- if (element.classList.contains("extra-full"))
- {
- element.style.width = "22.75em";
- }
- else if (element.classList.contains("full"))
- {
- element.style.width = "15em";
- }
- else if (element.classList.contains("half"))
- {
- element.style.width = "7.25em";
- }
- else if (element.classList.contains("small"))
- {
- element.style.width = "2em";
- }
- else if (element.classList.contains("large"))
- {
- element.style.width = "10em";
- }
- btnPosFinal(element);
- }
- }
-
- let dict = {
- 'Info Menu': ["url(https://www.svgrepo.com/show/299161/big-data.svg)", "#ff9999"],
- 'Teleport Menu': ["url(https://www.svgrepo.com/show/12767/car.svg)", "#ffcba4"],
- 'Minimap Menu Button': ["url(https://www.svgrepo.com/show/116365/map.svg)", "#faf0be"],
- 'Mosaic Menu': ["url(https://www.svgrepo.com/show/77240/map.svg)", "#e8f48c"],
- 'Satellite Menu': ["url(https://www.svgrepo.com/show/29288/satellite.svg)", "#e0ffff"],
- 'Space Menu Button': ["url(https://www.svgrepo.com/show/120980/saturn.svg)", "#e5e4e2"]
- };
-
- for (let element of document.getElementsByClassName("menu-btn"))
- {
- element.style.backgroundImage = dict[element.id][0];
- element.style.backgroundColor = dict[element.id][1];
- element.style.backgroundRepeat = "no-repeat";
- element.style.backgroundOrigin = "content-box";
- element.style.visibility = "";
- }
-
- handleDropdown();
- }
-
- /**
- * Creates Unity buttons
- *
- * @returns Promise
- */
-
- function hideOtherBtn()
- {
- for (let element of document.getElementsByClassName("unity-btn")){
- if (element.id !== "Show Buttons")
- {
- element.style.visibility = "hidden";
- }
- if (nextPlayer == "Youtube" && element.id == "Youtube Button")
- {
- element.style.visibility = "";
- }
- if (nextPlayer == "Wikipedia" && element.id == "local language")
- {
- element.style.visibility = "";
- }
- }
- }
-
- function switchBtn(arg)
- {
- for (let element of document.getElementsByClassName("unity-btn")){
- if (element.id !== "Show Buttons" && !element.classList.contains("menu-btn") && !element.classList.contains(arg))
- {
- element.style.visibility = "hidden";
- }
- if (nextPlayer == "Youtube" && element.id == "Youtube Button")
- {
- element.style.visibility = "";
- }
- if (nextPlayer == "Wikipedia" && element.id == "local language")
- {
- element.style.visibility = "";
- }
- }
- }
-
-
-
- function UnityInitiate() {
- const google = window.google;
- let curPosition;
- let kakao_enabled = true;
-
- ZoomControls();
-
- function svCheck(data, status) {
- if (status === 'OK') {
- // console.log("STATUS OK");
- let l = data.location.latLng.toString().split(',');
- let lat = l[0].replaceAll('(', '');
- let lng = l[1].replaceAll(')', '');
- if (lat == curPosition.lat && lng == curPosition.lng && !switch_call)
- {
- console.log("Trying more distance");
- teleportMain.distance += 100;
- teleportMain.innerHTML = teleportMain.distance + " m";
- }
- else
- {
- console.log("Teleport Success");
- GooglePlayer.setPosition(data.location.latLng);
- GooglePlayer.setPov({
- heading: switchCovergeButton.heading,
- pitch: 0,
- })
- if (teleportMain.distance > 150)
- {
- teleportMain.distance = 100;
- teleportMain.innerHTML = teleportMain.distance + " m";
- }
- }
- switch_call = false;
- }
- else {
- console.log("STATUS NOT OK");
- teleportMain.distance += 100;
- teleportMain.innerHTML = teleportMain.distance + " m";
- }
- }
-
- google.maps.Map = class extends google.maps.Map {
- constructor(...args) {
- super(...args);
- if (GeoJsonCustomUser)
- {
- if (GeoJsonCustomUser)
- {
- this.data.addGeoJson(CUSTOM_GEOJSON);
- }
- this.data.setStyle(function(feature) {
- return GEOJSON_STYLE
- });
- }
- if (OverlayCustom)
- {
- let customOverlay = new google.maps.GroundOverlay(OVERLAY_URL, OVERLAY_BOUNDS, OVERLAY_STYLE);
- customOverlay.setMap(this);
- }
-
- for (let mapDiv of document.getElementsByClassName("preset-minimap")){
- google.maps.event.addDomListener(mapDiv, "click", () => {
-
- MinimapBtn.current = mapDiv.id;
- if (mapDiv.id == "Hybrid")
- {
- this.setMapTypeId('hybrid');
- }
- else if (mapDiv.id == "Terrain")
- {
- this.setMapTypeId('terrain');
- }
- else if (mapDiv.id == "Satellite")
- {
- this.setMapTypeId('satellite');
- }
- else if (mapDiv.id == "Custom")
- {
- this.setMapTypeId(customMode);
- }
- else
- {
- this.setMapTypeId('roadmap');
- }
- // this.setTilt(45);
- for (let ar of presetMinimap)
- {
- if (ar[1] == mapDiv.id)
- {
- this.set('styles', ar[0]);
- }
- }
- for (let element of document.getElementsByClassName("preset-minimap")){
- if (element.id == MinimapBtn.current)
- {
- element.style.background = "#ff1493";
- }
- else
- {
- element.style.background = "#ff69b4";
- }
- if (rtded || nextPlayer == "Planets") {
- if (["Borders", "Satellite", "Terrain", "Hybrid", "Custom"].includes(element.id))
- {
- element.style.backgroundColor = "red";
- element.disabled = true;
- }
- }
- }
- });
- }
-
- for (let mapDiv of document.getElementsByClassName("overlay-minimap")){
- google.maps.event.addDomListener(mapDiv, "click", () => {
- OverlayBtn.current = mapDiv.id;
- // console.log(mapDiv.url)
- // console.log(mapDiv.id)
- // console.log(mapDiv.loaded)
- if (!mapDiv.loaded)
- {
- this.data.loadGeoJson(mapDiv.url, {
- id: mapDiv.id
- });
- mapDiv.loaded = true;
- }
- if (mapDiv.id == "Clear")
- {
- this.overlayMapTypes.clear();
- this.data.setStyle(function(feature) {
- return GEOJSON_INVISIBLE
- });
- for (let element of document.getElementsByClassName("overlay-minimap")){
- if (element.id === "Clear")
- {
- element.style.background = "#ff1493";
- }
- else
- {
- element.style.background = "#ff69b4";
- if (["Coverage", "Official", "OSM"].includes(element.id))
- {
- if (rtded || nextPlayer == "Planets")
- {
- element.style.background = "red";
- }
- }
- if (["Coverage", "Official", "City Lights", "OSM", "Watercolor", "Toner", "Fire"].includes(element.id))
- {
- element.loaded = false;
- }
- }
- }
- }
- else
- {
- if (["Coverage", "Official", "City Lights", "OSM", "Watercolor", "Toner", "Fire"].includes(mapDiv.id))
- {
- this.overlayMapTypes.clear();
- const coverageLayer = new google.maps.ImageMapType({
- getTileUrl ({ x, y }, z) {
-
- // Omits photospheres
- // return `https://mts1.googleapis.com/vt?hl=en-US&lyrs=svv|cb_client:apiv3&style=5,8&x=${x}&y=${y}&z=${z}`
-
- // Omits unofficial and trekker, but also half of mongolia
-
- if (mapDiv.id == "Official")
- {
- return `https://mts1.googleapis.com/vt?hl=en-US&lyrs=svv|cb_client:app&style=5,8&x=${x}&y=${y}&z=${z}`
- }
- else if (mapDiv.id == "OSM")
- {
- return `https://tile.openstreetmap.org/${z}/${x}/${y}.png`
- }
- else if (mapDiv.id == "City Lights")
- {
- return `https://map1.vis.earthdata.nasa.gov/wmts-webmerc/VIIRS_CityLights_2012/default/{time}/GoogleMapsCompatible_Level8/${z}/${y}/${x}.jpg`
- }
- else if (mapDiv.id == "Watercolor")
- {
- return `https://stamen-tiles.a.ssl.fastly.net/watercolor/${z}/${x}/${y}.jpg`
- }
- else if (mapDiv.id == "Toner")
- {
- return `https://stamen-tiles.a.ssl.fastly.net/toner/${z}/${x}/${y}.png`
- }
- else if (mapDiv.id == "Fire")
- {
- return `https://tile.thunderforest.com/spinal-map/${z}/${x}/${y}.png?apikey=1360c6d2440c4202bf725238d1b9c761`
- }
- // return `https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i${z}!2i${x}!3i${y}!4i256!2m8!1e2!2ssvv!4m2!1scb_client!2sapp!4m2!1scc!2s*211m3*211e3*212b1*213e2*211m3*211e2*212b1*213e2!3m3!3sUS!12m1!1e68!4e0`
-
- // Includes everything
- else if (mapDiv.id == "Coverage")
- {
- return `https://maps.googleapis.com/maps/vt?pb=!1m5!1m4!1i${z}!2i${x}!3i${y}!4i256!2m8!1e2!2ssvv!4m2!1scb_client!2sapiv3!4m2!1scc!2s*211m3*211e3*212b1*213e2*211m3*211e2*212b1*213e2!3m3!3sUS!12m1!1e68!4e0`
- }
- },
- maxZoom: 20,
- tileSize: new google.maps.Size(256, 256),
- })
- this.overlayMapTypes.push(coverageLayer);
-
- // let other = "Official";
- // if (mapDiv.id == "Official")
- // {
- // other = "Coverage";
- // }
-
- for (let element of document.getElementsByClassName("overlay-minimap")){
- if (["Clear", "City Lights", "Watercolor", "Toner", "Fire"].includes(element.id))
- {
- element.style.background = "#ff69b4";
- element.loaded = false;
- }
- if (["Coverage", "Official", "OSM"].includes(element.id))
- {
- if (!rtded && nextPlayer !== "Planets")
- {
- element.style.background = "#ff69b4";
- element.loaded = false;
- }
- }
- }
- mapDiv.style.background = "#ff1493";
- mapDiv.loaded = true;
- }
- else
- {
- this.data.setStyle(function(feature) {
- return GEOJSON_STYLE
- });
- for (let element of document.getElementsByClassName("overlay-minimap")){
- if (element.id !== "Clear" && element.loaded)
- {
- element.style.background = "#ff1493";
- }
- else
- {
- element.style.background = "#ff69b4";
- }
- if (["Coverage", "Official", "OSM"].includes(element.id))
- {
- if (rtded || nextPlayer == "Planets")
- {
- element.style.background = "red";
- }
- }
-
- }
- }
- }
- });
- }
-
-
-
-
- for (let spMini of document.getElementsByClassName("spaceMM")) {
- google.maps.event.addDomListener(spMini, "click", () => {
- OverlayBtn.current = spMini.id;
- setMapstylePlanet(planetType);
- if (spMini.id == "Earth") {
- this.overlayMapTypes.clear();
- this.setMapTypeId('roadmap');
- this.set('styles', default_preset);
- // for (let element of document.getElementsByClassName("space-minimap")) {
- // if (element.id === spMini.id) {
- // element.style.background = "#ff1493";
- // }
- // else {
- // element.style.background = "#ff69b4";
- // }
- // }
- }
- else
- {
- this.set('styles', blank);
- setTimeout(this.set('styles', blank), 1000)
- this.overlayMapTypes.clear();
- const coverageLayer = new google.maps.ImageMapType({
- getTileUrl({ x, y }, z) {
- if (spMini.id.includes("Moon") || spMini.id.includes("Mars"))
- {
- if (spMini.id.includes("Label")) {
- return spMini.url + z + "/" + x + "/" + y + ".png";
- }
- else
- {
- y = Math.pow(2, z) - y - 1;
- return spMini.url + z + "/" + x + "/" + y + ".png";;
- }
- }
- else
- {
- return handleSpURL(spMini.url, x, y, z);;
- }
- },
- maxZoom: 20,
- tileSize: new google.maps.Size(256, 256),
- })
-
- this.overlayMapTypes.push(coverageLayer);
-
- if (spMini.id == ("Mars (Labels)"))
- {
- const coverageLayer2 = new google.maps.ImageMapType({
- getTileUrl({ x, y }, z) {
- y = Math.pow(2, z) - y - 1;
- return `http://s3-eu-west-1.amazonaws.com/whereonmars.cartodb.net/celestia_mars-shaded-16k_global/${z}/${x}/${y}.png`;
- },
- maxZoom: 20,
- tileSize: new google.maps.Size(256, 256),
- opacity: 0.5
- })
- this.overlayMapTypes.push(coverageLayer2);
- }
- }
- for (let element of document.getElementsByClassName("spaceMM")) {
- if (element.id === spMini.id) {
- element.style.background = "#ff1493";
- }
- else if (element.id.includes(planetType)) {
- element.style.background = "#ff69b4";
- }
- }
- });
- }
-
-
- }
-
- }
-
- const svService = new google.maps.StreetViewService();
- google.maps.StreetViewPanorama = class extends google.maps.StreetViewPanorama {
- constructor(...args) {
- super(...args);
- GooglePlayer = this;
-
- const isGamePage = () => location.pathname.startsWith("/challenge/") || location.pathname.startsWith("/results/") ||
- location.pathname.startsWith("/game/")|| location.pathname.startsWith("/battle-royale/") ||
- location.pathname.startsWith("/duels/") || location.pathname.startsWith("/team-duels/") || location.pathname.startsWith("/bullseye/")
- || location.pathname.startsWith("/live-challenge/");
-
- this.addListener('position_changed', () => {
- // Maybe this could be used to update the position in the other players
- // so that they are always in sync
- try {
- if (!isGamePage()) return;
- // timeMachineBtn.panoId = GooglePlayer.pano;
- // timeMachineBtn.index = -1;
- const lat = this.getPosition().lat();
- const lng = this.getPosition().lng();
- const { heading } = this.getPov();
-
- curPosition = { lat, lng, heading };
-
- if (switchCovergeButton.useGoogle)
- {
- switchCovergeButton.lng = lng;
- switchCovergeButton.lat = lat;
- switchCovergeButton.heading = heading;
- if (!timeMachineBtn.list.some(row => row.includes(GooglePlayer.pano)))
- {
- timeMachineBtn.innerHTML = "Time Machine";
- timeMachineBtn.panoId = GooglePlayer.pano;
- timeMachineBtn.index = -1;
- timeMachineBtn.plusminusLock = true;
- timeMachineNewerBtn.style.backgroundColor = "red";
- timeMachineNewerBtn.disabled = true;
- timeMachineOlderBtn.style.backgroundColor = "red";
- timeMachineOlderBtn.disabled = true;
- }
- }
- switchCovergeButton.useGoogle = true;
- teleportMain.google = true;
- // console.log("also run");
-
- // switchCovergeButton.heading = position.lat;
- // console.log(position.heading);
- // console.log(switchCovergeButton.lng);
- }
- catch (e) {
- console.error("GeoGuessr Path Logger Error:", e);
- }
- });
- this.addListener('pov_changed', () => {
- const { heading, pitch } = this.getPov();
- if (KakaoPlayer) {
- if (typeof KakaoPlayer !== 'string' )
- {
- const vp = KakaoPlayer.getViewpoint();
- // Prevent a recursive loop: only update kakao's viewpoint if it got out of sync with google's
- if ((!almostEqual(vp.pan, heading) || !almostEqual(vp.tilt, pitch)) && nextPlayer == "Kakao") {
- KakaoPlayer.setViewpoint({ pan: heading, tilt: pitch, zoom: vp.zoom });
- }
- }
- }
- });
- }
- };
-
- var mainMenuBtn = document.createElement("Button");
- mainMenuBtn.classList.add("unity-btn", "main-btn");
- mainMenuBtn.id = "Show Buttons";
- mainMenuBtn.hide = true;
- mainMenuBtn.menuBtnCache = true;
- mainMenuBtn.innerHTML = "<font size=2>Unity<br><font size=1>v6.2.1</font>";
- mainMenuBtn.style =
- "border-radius: 10px;visibility:hidden;height:2.5em;position:absolute;z-index:99999;background-repeat:no-repeat;background-image:linear-gradient(180deg, #0066cc 50%, #ffcc00 50%);border: none;color: white;padding: none;text-align: center;vertical-align: text-top;text-decoration: none;display: inline-block;font-size: 16px;line-height: 15px;";
- // document.querySelector(".game-layout__status").appendChild(mainMenuBtn)
- document.body.appendChild(mainMenuBtn);
- mainMenuBtn.addEventListener("click", () => {
- if (mainMenuBtn.hide) {
- for (let element of document.getElementsByClassName("unity-btn")){
- // if (!element.classList.contains("preset-minimap") && !element.classList.contains("overlay-minimap"))
- // {
- // element.style.visibility = "";
- // if ((nextPlayer != "Youtube") && element.id == "Youtube Button")
- // {
- // element.style.visibility = "hidden";
- // }
- // }
- if (element.classList.contains("menu-btn"))
- {
- element.style.visibility = "";
- }
- }
- mainMenuBtn.menuBtnCache = true;
- mainMenuBtn.hide = false;
- }
- else {
- hideOtherBtn();
- mainMenuBtn.menuBtnCache = false;
- mainMenuBtn.hide = true;
- }
- });
-
-
- var infoBtn = document.createElement("Button");
- infoBtn.classList.add("unity-btn", "info-btn", "full", "vertical-1", "extra-height");
- infoBtn.id = "Info Button";
- infoBtn.innerHTML = "Geoguessr Unity Script<font size=1><br>© Jupaoqq | v6.2.1</font>";
- document.body.appendChild(infoBtn);
- // infoBtn.addEventListener("click", () => {
- // window.open('https://docs.google.com/document/d/18nLXSQQLOzl4WpUgZkM-mxhhQLY6P3FKonQGp-H0fqI/edit?usp=sharing');
- // });
-
- var HelpBtn = document.createElement("Button");
- HelpBtn.classList.add("unity-btn", "info-btn", "half", "horizontal-1", "vertical-3");
- HelpBtn.id = "Help Button";
- HelpBtn.innerHTML = "Help & Credits";
-
- document.body.appendChild(HelpBtn);
- HelpBtn.addEventListener("click", () => {
- window.open('https://docs.google.com/document/d/18nLXSQQLOzl4WpUgZkM-mxhhQLY6P3FKonQGp-H0fqI/edit?usp=sharing');
- });
-
- var UpdateBtn = document.createElement("Button");
- UpdateBtn.classList.add("unity-btn", "info-btn", "half", "horizontal-2", "vertical-3");
- UpdateBtn.id = "Update Button";
- UpdateBtn.innerHTML = "Check Update";
-
- document.body.appendChild(UpdateBtn);
- UpdateBtn.addEventListener("click", () => {
- window.open('https://greasyfork.org/en/scripts/436813-geoguessr-unity-script');
- });
-
- var menuResetBtn = document.createElement("Button");
- menuResetBtn.classList.add("unity-btn", "info-btn", "large", "vertical-4");
- menuResetBtn.id = "Menu Reset";
- menuResetBtn.innerHTML = "Menu Position";
- document.body.appendChild(menuResetBtn);
- menuResetBtn.addEventListener("click", () => {
- menuLocCounter = 0;
- btnAll();
- });
-
- var menuUpBtn = document.createElement("Button");
- menuUpBtn.classList.add("unity-btn", "info-btn", "small", "horizontal-1", "vertical-4");
- menuUpBtn.id = "Menu Up";
- menuUpBtn.innerHTML = "↑";
- document.body.appendChild(menuUpBtn);
- menuUpBtn.addEventListener("click", () => {
- AdjustBtnPos("-2em", "0em", false);
- menuLocCounter++;
- });
-
- var menuDownBtn = document.createElement("Button");
- menuDownBtn.classList.add("unity-btn", "info-btn", "small", "horizontal-3", "vertical-4");
- menuDownBtn.id = "Menu down";
- menuDownBtn.innerHTML = "↓";
- document.body.appendChild(menuDownBtn);
- menuDownBtn.addEventListener("click", () => {
- AdjustBtnPos("2em", "0em", false);
- menuLocCounter--;
- });
-
- var infoMenu = document.createElement("Button");
- infoMenu.classList.add("unity-btn", "menu-btn");
- infoMenu.classList.add();
- infoMenu.id = "Info Menu";
- // infoMenu.innerHTML = "In";
- document.body.appendChild(infoMenu);
- infoMenu.addEventListener("click", () => {
- switchBtn("info-btn");
- if (menuDownBtn.style.visibility == "hidden")
- {
- for (let element of document.getElementsByClassName("info-btn"))
- {
- element.style.visibility = "";
- }
- }
- else
- {
- for (let element of document.getElementsByClassName("info-btn"))
- {
- element.style.visibility = "hidden";
- }
- }
- });
-
- var playYoutubeBtn = document.createElement("Button");
- playYoutubeBtn.classList.add("unity-btn", "full", "vertical-0");
- playYoutubeBtn.id = "Youtube Button";
- playYoutubeBtn.innerHTML = "Play video";
- document.body.appendChild(playYoutubeBtn);
- playYoutubeBtn.addEventListener("click", () => {
- let iframe = document.getElementById("i_container");
- iframe.style.position = "absolute";
- iframe.allow = "autoplay";
- let srcString = "https://www.youtube.com/embed/" + yId + "?&playlist=" + yId + "&autoplay=1&modestbranding=1&controls=0&start=";
- if (yTime == "0" && yEnd == "0")
- {
- }
- else
- {
- srcString += yTime + "&end=" + yEnd;
- }
- iframe.src = srcString;
- iframe.style.visibility = "";
- playYoutubeBtn.innerHTML = "Play video from start";
- });
-
- // Teleport Module Buttons
- // Class: teleport-btn
- // Button: teleportMenu
- // Buttons: teleportForward, teleportReverse, teleportMain, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, TeleportArisBtn
-
- function teleportModule(dir)
- {
- if (switchCovergeButton.init)
- {
- // console.log("run");
- switchCovergeButton.init = false;
- if (teleportMain.google)
- {
- switchCovergeButton.useGoogle = true;
- teleportMain.google = true;
- }
- else
- {
- switchCovergeButton.useGoogle = false;
- teleportMain.google = false;
- }
- }
- else
- {
- // console.log(teleportMenu.google)
- if (teleportMain.google && GooglePlayer != null)
- {
- let heading = GooglePlayer.getPov().heading;
- if (!dir)
- {
- heading = (heading + 180) % 360;
- }
- let place = FindPointAtDistanceFrom(curPosition.lat, curPosition.lng , DegreesToRadians(heading), teleportMain.distance * 0.001)
- svService.getPanorama({ location: place, radius: 1000, source: teleportMain.teleType}, svCheck);
- }
- }
- }
-
- var teleportForward = document.createElement("Button");
- teleportForward.classList.add("unity-btn", "timemachine-btn", "half", "horizontal-1", "vertical-3");
- teleportForward.id = "Teleport Forward";
- teleportForward.innerHTML = "↑ Forward";
- document.body.appendChild(teleportForward);
-
- teleportForward.addEventListener("click", () => {
- teleportModule(true);
- });
-
- var teleportReverse = document.createElement("Button");
- teleportReverse.classList.add("unity-btn", "timemachine-btn", "half", "horizontal-2", "vertical-3");
- teleportReverse.id = "Teleport Reverse";
- teleportReverse.innerHTML = "↓ Reverse";
- document.body.appendChild(teleportReverse);
-
- teleportReverse.addEventListener("click", () => {
- teleportModule(false);
- });
-
- var teleportMain = document.createElement("Button");
- teleportMain.classList.add("unity-btn", "timemachine-btn", "large", "vertical-4");
- teleportMain.teleType = "default";
- teleportMain.id = "Teleport Button";
- teleportMain.distance = 100;
- teleportMain.google = true;
- teleportMain.innerHTML = "100m";
- document.body.appendChild(teleportMain);
-
- var teleportMoreBtn = document.createElement("Button");
- teleportMoreBtn.classList.add("unity-btn", "timemachine-btn", "small", "horizontal-3", "vertical-4");
- teleportMoreBtn.id = "plus"
- teleportMoreBtn.innerHTML = "+";
- document.body.appendChild(teleportMoreBtn);
- teleportMoreBtn.addEventListener("click", () => {
- if (teleportMain.distance > 21 && teleportMain.distance < 149) {
- teleportMain.distance = teleportMain.distance + 25;
- }
- teleportMain.innerHTML = teleportMain.distance + " m";
- });
-
- var teleportLessBtn = document.createElement("Button");
- teleportLessBtn.classList.add("unity-btn", "timemachine-btn", "small", "horizontal-1", "vertical-4");
- teleportLessBtn.id = "minus"
- teleportLessBtn.innerHTML = "-";
- document.body.appendChild(teleportLessBtn);
- teleportLessBtn.addEventListener("click", () => {
- if (teleportMain.distance > 26) {
- teleportMain.distance = teleportMain.distance - 25;
- }
- teleportMain.innerHTML = teleportMain.distance + " m";
- });
-
- var teleportDistResetBtn = document.createElement("Button");
- teleportDistResetBtn.classList.add("unity-btn", "timemachine-btn", "half", "horizontal-1", "vertical-5");
- teleportDistResetBtn.id = "reset"
- teleportDistResetBtn.innerHTML = "Reset";
- document.body.appendChild(teleportDistResetBtn);
- teleportDistResetBtn.addEventListener("click", () => {
- teleportMain.distance = 100;
- teleportMain.innerHTML = teleportMain.distance + " m";
- });
-
- var TeleportArisBtn = document.createElement("Button");
- TeleportArisBtn.classList.add("unity-btn", "timemachine-btn", "half", "horizontal-2", "vertical-5");
- TeleportArisBtn.id = "Teleport Options Button";
- TeleportArisBtn.innerHTML = "Default";
- document.body.appendChild(TeleportArisBtn);
- TeleportArisBtn.addEventListener("click", () => {
- if (teleportMain.teleType == "default")
- {
- teleportMain.teleType = "outdoor"
- TeleportArisBtn.innerHTML = "Official";
- }
- else
- {
- teleportMain.teleType = "default"
- TeleportArisBtn.innerHTML = "Default";
- }
- });
-
- // Switch Coverage Module
-
- var switchCovergeButton = document.createElement("Button");
- switchCovergeButton.classList.add("unity-btn", "timemachine-btn", "full", "vertical-1");
- switchCovergeButton.sat = false;
- switchCovergeButton.id = "switch";
- switchCovergeButton.init = false;
- switchCovergeButton.useGoogle = false;
- switchCovergeButton.lng = 0
- switchCovergeButton.lat = 0
- switchCovergeButton.heading = 0
- switchCovergeButton.innerHTML = "Switch to Google Streetview";
- document.body.appendChild(switchCovergeButton);
- switchCovergeButton.addEventListener("click", () => {
- nextPlayer = nextPlayer_save;
- let GOOGLE_MAPS_CANVAS1 = document.querySelector(GENERAL_CANVAS);
- let GOOGLE_MAPS_CANVAS2 = document.querySelector(BR_CANVAS);
- let GOOGLE_MAPS_CANVAS3 = document.querySelector(".inactive");
- let GOOGLE_MAPS_CANVAS4 = document.querySelector(BULLSEYE_CANVAS2);
- let GOOGLE_MAPS_CANVAS5 = document.querySelector(LIVE_CANVAS2);
- let duel = false;
-
- let GOOGLE_MAPS_CANVAS = null;
- if (GOOGLE_MAPS_CANVAS1 !== null)
- {
- GOOGLE_MAPS_CANVAS = GOOGLE_MAPS_CANVAS1;
- }
- else if (GOOGLE_MAPS_CANVAS2 !== null)
- {
- GOOGLE_MAPS_CANVAS = GOOGLE_MAPS_CANVAS2;
- }
- else if (GOOGLE_MAPS_CANVAS4 !== null)
- {
- GOOGLE_MAPS_CANVAS = GOOGLE_MAPS_CANVAS4;
- }
- else if (GOOGLE_MAPS_CANVAS5 !== null)
- {
- GOOGLE_MAPS_CANVAS = GOOGLE_MAPS_CANVAS5;
- }
- if (GOOGLE_MAPS_CANVAS3 !== null)
- {
- duel = true;
- }
-
- let KAKAO_MAPS_CANVAS = document.getElementById("roadview");
- let YANDEX_MAPS_CANVAS = document.querySelector(".ymaps-2-1-79-panorama-screen");
- let MAPILLARY_MAPS_CANVAS = document.getElementById("mapillary-player")
- let BAIDU_MAPS_CANVAS = document.getElementById("i_container");
- let MS_MAPS_CANVAS = document.getElementById("ms-player");
- let MAPBOX_MAPS_CANVAS = document.getElementById("sat_map");
- // if (nextPlayer !== "Baidu") {
- if (switchCovergeButton.useGoogle == false) {
- if (duel)
- {
- document.getElementById("default_player").className = "game-panorama_panoramaCanvas__PNKve";
- if (nextPlayer == "Kakao")
- {
- KAKAO_MAPS_CANVAS.className = "inactive";
- }
- else if (nextPlayer == "Bing Streetside")
- {
- MS_MAPS_CANVAS.className = "inactive";
- }
- else if (nextPlayer == "Mapbox Satellite")
- {
- MAPBOX_MAPS_CANVAS.className = "inactive";
- }
- else if (nextPlayer == "Yandex")
- {
- YANDEX_MAPS_CANVAS.style.visibility = "hidden";
- YANDEX_MAPS_CANVAS.style.zIndex = "none";
- }
- else
- {
- MAPILLARY_MAPS_CANVAS.className = "inactive";
- MAPILLARY_MAPS_CANVAS.style.visibility = "hidden";
- }
- }
- else
- {
- GOOGLE_MAPS_CANVAS.style.visibility = "";
- if (nextPlayer == "Kakao")
- {
- KAKAO_MAPS_CANVAS.style.visibility = "hidden";
- }
- else if (nextPlayer == "Yandex")
- {
- YANDEX_MAPS_CANVAS.style.visibility = "hidden";
- }
- else if (nextPlayer == "Baidu" || nextPlayer == "Youtube" || nextPlayer == "Image" || nextPlayer === "Wikipedia" || nextPlayer === "Minecraft")
- {
- BAIDU_MAPS_CANVAS.style.visibility = "hidden";
- }
- else if (nextPlayer == "Mapillary" || nextPlayer == "Google")
- {
- MAPILLARY_MAPS_CANVAS.style.visibility = "hidden";
- }
- else if (nextPlayer == "Bing Streetside" || nextPlayer == "Planets")
- {
- MS_MAPS_CANVAS.style.visibility = "hidden";
- }
- else if (nextPlayer == "Mapbox Satellite")
- {
- MAPBOX_MAPS_CANVAS.style.visibility = "hidden";
- }
-
-
- }
- const lat = GooglePlayer.getPosition().lat();
- const lng = GooglePlayer.getPosition().lng();
- switch_call = true;
- if (!almostEqual2(lat, switchCovergeButton.lat) || !almostEqual2(lat, switchCovergeButton.lng)) {
- svService.getPanorama({ location: { lat: switchCovergeButton.lat, lng: switchCovergeButton.lng }, radius: 1000 }, svCheck);
- }
- switchCovergeButton.useGoogle = true;
- teleportMain.google = true;
- switchCovergeButton.init = false;
-
- console.log("use Google");
- }
- else {
- if (MS_MAPS_CANVAS)
- {
- MS_MAPS_CANVAS.style.visibility = "hidden";
- }
-
- if (duel)
- {
- document.getElementById("default_player").className = "inactive";
- if (nextPlayer == "Kakao")
- {
- KAKAO_MAPS_CANVAS.className = "game-panorama_panoramaCanvas__PNKve";
- }
- else if (nextPlayer == "Bing Streetside" || nextPlayer == "Planets")
- {
- MS_MAPS_CANVAS.className = "game-panorama_panoramaCanvas__PNKve";
- }
- else if (nextPlayer == "Mapbox Satellite")
- {
- MAPBOX_MAPS_CANVAS.className = "game-panorama_panoramaCanvas__PNKve";
- }
- else if (nextPlayer == "Yandex")
- {
- YANDEX_MAPS_CANVAS.style.visibility = "";
- YANDEX_MAPS_CANVAS.style.zIndex = "1";
- }
- else
- {
- MAPILLARY_MAPS_CANVAS.className = "game-panorama_panoramaCanvas__PNKve";
- MAPILLARY_MAPS_CANVAS.style.visibility = "";
- MapillaryPlayer.resize();
- //window.dispatchEvent(new Event('resize'));
- // document.querySelector(".mapillary-canvas").style.;
- // mapillary-canvas
- }
-
- }
- else
- {
- GOOGLE_MAPS_CANVAS.style.visibility = "hidden";
- if (nextPlayer == "Kakao")
- {
- KAKAO_MAPS_CANVAS.style.visibility = "";
- }
- else if (nextPlayer == "Yandex")
- {
- YANDEX_MAPS_CANVAS.style.visibility = "";
- }
- else if (nextPlayer == "Baidu" || nextPlayer == "Youtube" || nextPlayer == "Image" || nextPlayer === "Wikipedia" || nextPlayer === "Minecraft")
- {
- BAIDU_MAPS_CANVAS.style.visibility = "";
- }
- else if (nextPlayer == "Mapillary" || nextPlayer == "Google" )
- {
- MAPILLARY_MAPS_CANVAS.style.visibility = "";
- }
- else if (nextPlayer == "Bing Streetside" || nextPlayer == "Planets")
- {
- MS_MAPS_CANVAS.style.visibility = "";
- }
- else if (nextPlayer == "Mapbox Satellite")
- {
- MAPBOX_MAPS_CANVAS.style.visibility = "";
- }
- }
- switchCovergeButton.useGoogle = false;
- teleportMain.google = false;
- switchCovergeButton.init = true;
- console.log("use Others");
- }
- if (switchCovergeButton.useGoogle)
- {
- if (nextPlayer == "Google")
- {
- switchCovergeButton.innerHTML = "Switch to Mapillary";
- satelliteSwitchButton.disabled = false;
- satelliteSwitchButton.style.background = "#ba55d3";
- }
- else
- {
- switchCovergeButton.innerHTML = "Switch to " + nextPlayer;
- satelliteSwitchButton.disabled = true;
- satelliteSwitchButton.style.background = "red";
- }
- }
- else
- {
- if (nextPlayer == "Google" || nextPlayer == "Baidu")
- {
- switchCovergeButton.innerHTML = "Switch to Google Streetview";
- satelliteSwitchButton.disabled = true;
- satelliteSwitchButton.style.background = "red";
- }
- else
- {
- switchCovergeButton.innerHTML = "Switch to Google Streetview";
- satelliteSwitchButton.disabled = false;
- satelliteSwitchButton.style.background = "#ba55d3";
- }
- }
- });
-
-
- var timeMachineNewerBtn = document.createElement("Button");
- timeMachineNewerBtn.classList.add("unity-btn", "timemachine-btn", "small", "horizontal-3", "vertical-2");
- timeMachineNewerBtn.id = "plus year"
- timeMachineNewerBtn.innerHTML = "+";
- document.body.appendChild(timeMachineNewerBtn);
- timeMachineNewerBtn.addEventListener("click", () => {
- if (timeMachineBtn.index < timeMachineBtn.list.length - 1 && !timeMachineBtn.plusminusLock) {
- timeMachineBtn.index = timeMachineBtn.index + 1;
- GooglePlayer.setPano(timeMachineBtn.list[timeMachineBtn.index][0]);
- timeMachineBtn.innerHTML = "<font size=2>[" + (timeMachineBtn.index + 1) + "] " + timeMachineBtn.list[timeMachineBtn.index][1] + "</font>";
- // console.log(timeMachineBtn.index)
- }
- GenBtnColor();
-
- });
-
- var timeMachineOlderBtn = document.createElement("Button");
- timeMachineOlderBtn.classList.add("unity-btn", "timemachine-btn", "small", "horizontal-1", "vertical-2");
- timeMachineOlderBtn.id = "minus year"
- timeMachineOlderBtn.innerHTML = "-";
- document.body.appendChild(timeMachineOlderBtn);
- timeMachineOlderBtn.addEventListener("click", () => {
- if (timeMachineBtn.index > 0 && !timeMachineBtn.plusminusLock) {
- timeMachineBtn.index = timeMachineBtn.index - 1;
- GooglePlayer.setPano(timeMachineBtn.list[timeMachineBtn.index][0]);
- timeMachineBtn.innerHTML = "<font size=2>[" + (timeMachineBtn.index + 1) + "] " + timeMachineBtn.list[timeMachineBtn.index][1] + "</font>";
- // console.log(timeMachineBtn.index)
- }
- GenBtnColor();
- });
-
- function svCheck2(data, status) {
- let l = []
- if (status === 'OK') {
- // console.log("OK for " + data.location.latLng + " at ID " + data.location.pano);
- // console.log(data.time)
- for (const alt of data.time) {
- let date = Object.values(alt).find((value) => value instanceof Date)
-
- l.push([alt.pano, date.toDateString()]);
- }
- // console.log(l);
- timeMachineBtn.list = l
- timeMachineBtn.index = l.length - 1;
- timeMachineBtn.innerHTML = "<font size=2>[" + (timeMachineBtn.index + 1) + "] " + timeMachineBtn.list[timeMachineBtn.index][1] + "</font>";
- GenBtnColor();
- timeMachineBtn.plusminusLock = false;
- // timeMachineOlderBtn.click()
- // timeMachineBtn.innerHTML = "Default Date";
- }
- }
-
- var timeMachineBtn = document.createElement("Button");
- timeMachineBtn.classList.add("unity-btn", "timemachine-btn", "large", "vertical-2");
- timeMachineBtn.id = "Date Button";
- timeMachineBtn.plusminusLock = true;
- timeMachineBtn.panoId = 0;
- timeMachineBtn.index = -1;
- timeMachineBtn.list = [];
- timeMachineBtn.innerHTML = "Time Machine";
- document.body.appendChild(timeMachineBtn);
- timeMachineBtn.addEventListener("click", () => {
- // console.log(timeMachineBtn.index)
- if (timeMachineBtn.panoId != 0)
- {
- if(timeMachineBtn.index == -1)
- {
- svService.getPanorama({pano: timeMachineBtn.panoId}, svCheck2);
- }
- else
- {
- timeMachineBtn.index = timeMachineBtn.list.length - 1;
- GooglePlayer.setPano(timeMachineBtn.list[timeMachineBtn.index][0]);
- timeMachineBtn.innerHTML = "<font size=2>[" + (timeMachineBtn.index + 1) + "] " + timeMachineBtn.list[timeMachineBtn.index][1] + "</font>";
- GenBtnColor();
- }
- }
- else
- {
- timeMachineBtn.panoId = GooglePlayer.pano;
- svService.getPanorama({pano: timeMachineBtn.panoId}, svCheck2);
- }
- });
-
-
- var teleportMenu = document.createElement("Button");
- teleportMenu.classList.add("unity-btn", "menu-btn");
- teleportMenu.id = "Teleport Menu";
- document.body.appendChild(teleportMenu);
- teleportMenu.addEventListener("click", () => {
- switchBtn("timemachine-btn");
- if (teleportForward.style.visibility == "hidden")
- {
- for (let element of document.getElementsByClassName("timemachine-btn"))
- {
- element.style.visibility = "";
- }
- }
- else
- {
- for (let element of document.getElementsByClassName("timemachine-btn"))
- {
- element.style.visibility = "hidden";
- }
- }
- });
-
- // Satellite Module Buttons
- // Class: satelliteSwitchButton, satellite-menu
- // subclass 1: satellite-btn-type
- // subclass 2: satellite-btn-style
- // Buttons: satelliteRadius, satelliteType, satelliteStyle
- // satelliteDefault, satelliteNight, satelliteClassic, roadDefault, roadClassic
- // skyDefault, skyCurrent, skyLocal
-
- var satelliteTypeBtn = document.createElement("Button");
- satelliteTypeBtn.classList.add("unity-btn", "satellite-btn", "half", "horizontal-1", "vertical-2");
- satelliteTypeBtn.id = "Satellite Type Button";
- satelliteTypeBtn.innerHTML = "Map Style";
- satelliteTypeBtn.currentId = "Satellite"
- satelliteTypeBtn.currentDim = "2.5D"
- document.body.appendChild(satelliteTypeBtn);
-
-
- var satelliteStyleBtn = document.createElement("Button");
- satelliteStyleBtn.classList.add("unity-btn", "satellite-btn", "half", "horizontal-2", "vertical-2");
- satelliteStyleBtn.id = "Satellite Style Button";
- satelliteStyleBtn.innerHTML = "Time";
- satelliteStyleBtn.current = "solarNoon";
- document.body.appendChild(satelliteStyleBtn);
-
- for (let satT of satType)
- {
- let satTButton = document.createElement("Button");
- satTButton.id = satT[0];
- satTButton.dim = satT[1];
- satTButton.classList.add("unity-btn", "satellite-btn", "satellite-type", "half", "horizontal-1");
- satTButton.innerHTML = satTButton.id + " " + satTButton.dim;
- // if (satTButton.dim == "2.5D")
- // {
- // satTButton.title = "Hide House";
- // }
- satTButton.addEventListener("click", () => {
- let changeSatStyle = styleMapboxAll(satelliteTypeBtn.currentId, satelliteTypeBtn.currentDim, satelliteStyleBtn.current, satTButton.id, satTButton.dim, satelliteStyleBtn.current, true);
- satelliteTypeBtn.currentId = satTButton.id;
- satelliteTypeBtn.currentDim = satTButton.dim;
- if (changeSatStyle)
- {
- satelliteStyleBtn.current = "solarNoon";
- }
- handleSatColor();
- })
- document.body.appendChild(satTButton);
- }
-
- for (let satS of satStyle)
- {
- let satSButton = document.createElement("Button");
- satSButton.id = satS[0];
- satSButton.classList.add("unity-btn", "satellite-btn", "satellite-style", "half", "horizontal-2");
- satSButton.innerHTML = satS[1];
- satSButton.addEventListener("click", () => {
- let changeSatStyle = styleMapboxAll(satelliteTypeBtn.currentId, satelliteTypeBtn.currentDim, satelliteStyleBtn.current, satelliteTypeBtn.currentId, satelliteTypeBtn.currentDim, satSButton.id, false);
- satelliteStyleBtn.current = satSButton.id;
- handleSatColor();
- })
-
- document.body.appendChild(satSButton);
- }
-
- function handleSatColor()
- {
- for (let element of document.getElementsByClassName("satellite-type")){
- if (element.id == satelliteTypeBtn.currentId && element.dim == satelliteTypeBtn.currentDim)
- {
- element.style.background = "#ff1493";
- }
- else
- {
- element.style.background = "#ff69b4";
- }
- }
- for (let element of document.getElementsByClassName("satellite-style")){
- if (element.id == satelliteStyleBtn.current)
- {
- element.style.background = "#ff1493";
- }
- else
- {
- element.style.background = "#ff69b4";
- }
- }
- }
-
- function handleSatMenu(cond)
- {
- let transition = true;
- if (cond)
- {
- transition = (satelliteSwitchButton.innerHTML == "Streetview mode");
- }
- else
- {
- transition = (satelliteSwitchButton.innerHTML !== "Streetview mode");
- }
- if (transition)
- {
- for (let element of document.getElementsByClassName("satellite-btn"))
- {
- if (element.id !== "Satellite Switch")
- {
- element.style.visibility = "hidden";
- }
- }
- }
- else
- {
- for (let element of document.getElementsByClassName("satellite-btn"))
- {
- if (element.id !== "Satellite Switch")
- {
- element.style.visibility = "";
- }
- }
- }
- }
-
- var satelliteSwitchButton = document.createElement("Button");
- satelliteSwitchButton.classList.add("unity-btn", "satellite-btn", "full", "vertical-1");
- satelliteSwitchButton.id = "Satellite Switch";
- satelliteSwitchButton.state = false;
- satelliteSwitchButton.innerHTML = "Streetview mode";
- document.body.appendChild(satelliteSwitchButton);
- satelliteSwitchButton.addEventListener("click", () => {
- handleSatMenu(false);
- if (!initBing)
- {
- let di = formatDist();
- // satelliteRadius.innerHTML = `Satellite (${di})`;
- satelliteSwitchButton.innerHTML = `Satellite (${di})`;
-
- initBing = true;
- MAPBOX_INJECTED = false;
- BR_LOAD_MP = true;
-
- let canvas = document.getElementById("sat_map");
- if (!canvas)
- {
- injectMapboxPlayer();
- }
- else
- {
- changeInnerHTML(canvas, false);
- MAPBOX_INJECTED = true;
- }
- nextPlayer = "Mapbox Satellite";
- injectCanvas();
- satCallback();
-
- sat_choice = true;
- console.log("Load Mapbox Satellite API")
- //
- }
- else
- {
- if (!satelliteSwitchButton.innerHTML.includes("Satellite"))
- {
- // console.log("true!!")
- let di2 = formatDist();
- satelliteSwitchButton.innerHTML = `Satellite (${di2})`;
-
- nextPlayer = "Mapbox Satellite";
- injectCanvas();
- satCallback();
- nextPlayer = nextPlayer_save;
-
- sat_choice = true;
- // console.log("hello")
- }
- else
- {
- satelliteSwitchButton.innerHTML = "Streetview mode";
- if (nextPlayer_save == "Mapbox Satellite")
- {
- nextPlayer = "Google";
- }
- else
- {
- nextPlayer = nextPlayer_save;
- }
-
- injectCanvas();
- if (sat_choice)
- {
- if (nextPlayer !== "Google")
- {
- goToLocation(true);
- }
- handleButtons();
- }
- sat_choice = false;
- }
- if (satelliteSwitchButton.innerHTML !== "Streetview mode" || nextPlayer == "Baidu")
- {
- switchCovergeButton.disabled = true;
- switchCovergeButton.style.background = "red";
- }
- else
- {
- switchCovergeButton.disabled = false;
- switchCovergeButton.style.background = "#ba55d3";
- }
- }
- });
-
- var satelliteMenu = document.createElement("Button");
- satelliteMenu.classList.add("unity-btn", "menu-btn");
- satelliteMenu.id = "Satellite Menu";
- document.body.appendChild(satelliteMenu);
- satelliteMenu.addEventListener("click", () => {
- switchBtn("satellite-btn");
- if (satelliteSwitchButton.style.visibility == "hidden")
- {
- satelliteSwitchButton.style.visibility = "";
- handleSatMenu(true);
- }
- else
- {
- for (let element of document.getElementsByClassName("satellite-btn"))
- {
- element.style.visibility = "hidden";
- }
- }
-
- });
-
-
- // Mosaic Module Buttons
-
- var mosaicMain = document.createElement("Button");
- mosaicMain.classList.add("unity-btn", "mosaic-btn", "full", "vertical-1");
- mosaicMain.id = "Mosaic Enable";
- mosaicMain.grid = 0;
- // mosaicMain.random = false;
- mosaicMain.color = false;
- mosaicMain.label = true;
- // mosaicMain.blink = false;
- mosaicMain.innerHTML = "Mosaic Mode";
- document.body.appendChild(mosaicMain);
-
- var mosaicGridSize = document.createElement("Button");
- mosaicGridSize.classList.add("unity-btn", "mosaic-btn", "half", "horizontal-2", "vertical-2");
- mosaicGridSize.id = "Mosaic Grid";
- mosaicGridSize.innerHTML = "Grid Size";
- document.body.appendChild(mosaicGridSize);
-
- let gridWidth = [0, 3, 5, 7, 10, 20, 50, 100];
- for (let i = 0; i < gridWidth.length; i++)
- {
- let gridButton = document.createElement("Button");
- gridButton.id = `Grid ${gridWidth[i]}`;
- gridButton.classList.add("unity-btn", "mosaic-btn", "grid-size", "half", "horizontal-2");
- if (i !== 0)
- {
- gridButton.innerHTML = `${gridWidth[i]} x ${gridWidth[i]}`;
- }
- else
- {
- gridButton.innerHTML = `No Grid`;
- }
- document.body.appendChild(gridButton);
- gridButton.addEventListener("click", () => {
- mosaicMain.color = false;
- mosaicMain.label = true;
- loadGridBtn(gridWidth[i]);
- });
- }
-
- var mosaicGridOpt = document.createElement("Button");
- mosaicGridOpt.classList.add("unity-btn", "mosaic-btn", "half", "horizontal-1", "vertical-2");
- mosaicGridOpt.id = "Mosaic Options";
- mosaicGridOpt.innerHTML = "Options";
- document.body.appendChild(mosaicGridOpt);
-
- // ["Blink Mode"]
- let gridOpt = ["Add Color", "Remove Label", "Reveal 5%", "Reveal All", "Peek (0.25s)", "Peek (0.5s)" , "Peek (1s)", "Peek (3s)"];
- for (let i = 0; i < gridOpt.length; i++)
- {
- let gridButton = document.createElement("Button");
- gridButton.id = `Grid ${gridOpt[i]}`;
- gridButton.classList.add("unity-btn", "mosaic-btn", "grid-opt", "half", "horizontal-1");
- gridButton.innerHTML = `${gridOpt[i]}`;
- document.body.appendChild(gridButton);
- if (gridOpt[i] == "Reveal All")
- {
- gridButton.addEventListener("click", () => {
- let gridCanvas = document.getElementById("grid");
- if (gridCanvas)
- {
- gridCanvas.style.visibility = "hidden";
- }
- });
- }
- else if (gridOpt[i].includes("Peek"))
- {
- gridButton.addEventListener("click", () => {
- let gridCanvas = document.getElementById("grid");
- if (gridCanvas)
- {
- gridCanvas.style.visibility = "hidden";
- let time = 500;
- if (gridOpt[i].includes("0.25s"))
- {
- time = 250;
- }
- else if (gridOpt[i].includes("0.5s"))
- {
- time = 500;
- }
- else if (gridOpt[i].includes("1s"))
- {
- time = 1000;
- }
- else if (gridOpt[i].includes("3s"))
- {
- time = 3000;
- }
- setTimeout(function() {gridCanvas.style.visibility = "";}, time);
- }
- });
- }
- else if (gridOpt[i] == "Reveal 5%")
- {
- gridButton.addEventListener("click", () => {
- for (let grid of document.getElementsByClassName("grid-btn"))
- {
- let num = Math.random();
- if (num > 0.95)
- {
- grid.style.visibility = "hidden";
- }
- }
- });
- }
- else if (gridOpt[i] == "Add Color")
- {
- gridButton.addEventListener("click", () => {
- mosaicMain.color = true;
- for (let grid of document.getElementsByClassName("grid-btn"))
- {
- grid.style.background = '#' + (Math.random() * 0xFFFFFF<<0).toString(16);
- }
- });
- }
- else if (gridOpt[i] == "Remove Label")
- {
- gridButton.addEventListener("click", () => {
- mosaicMain.label = false;
- for (let grid of document.getElementsByClassName("grid-btn"))
- {
- grid.innerHTML = "";
- }
- });
- }
- }
-
- var mosaicMenu = document.createElement("Button");
- mosaicMenu.classList.add("unity-btn", "menu-btn");
- mosaicMenu.id = "Mosaic Menu";
- document.body.appendChild(mosaicMenu);
- mosaicMenu.addEventListener("click", () => {
- switchBtn("mosaic-btn");
- if (timeMachineNewerBtn.style.visibility == "hidden")
- {
- for (let element of document.getElementsByClassName("mosaic-btn"))
- {
- element.style.visibility = "";
- }
- }
- else
- {
- for (let element of document.getElementsByClassName("mosaic-btn"))
- {
- element.style.visibility = "hidden";
- }
- }
- });
-
- // Minimap Module
-
- var MinimapBtn = document.createElement("Button");
- MinimapBtn.classList.add("unity-btn", "minimap-btn", "half", "horizontal-2", "vertical-1");
- MinimapBtn.id = "Minimap Button";
- MinimapBtn.innerHTML = "Minimap Style";
- MinimapBtn.current = "Default";
- // MinimapBtn.childVisible = false;
- document.body.appendChild(MinimapBtn);
-
- for (let a of presetMinimap)
- {
- let aButton = document.createElement("Button");
- aButton.id = a[1];
- aButton.classList.add("unity-btn", "minimap-btn", "preset-minimap", "half", "horizontal-2");
- aButton.innerHTML = a[1];
- document.body.appendChild(aButton);
- }
-
- var OverlayBtn = document.createElement("Button");
- OverlayBtn.classList.add("unity-btn", "minimap-btn", "half", "horizontal-1", "vertical-1");
- OverlayBtn.id = "Overlay Button";
- OverlayBtn.innerHTML = "Overlay";
- OverlayBtn.current = "Clear";
- // OverlayBtn.childVisible = false;
- document.body.appendChild(OverlayBtn);
-
- for (let b of presetOverlay)
- {
- let bButton = document.createElement("Button");
- bButton.id = b[0];
- bButton.url = b[1];
- bButton.loaded = false;
- bButton.classList.add("unity-btn", "minimap-btn", "overlay-minimap", "half", "horizontal-1");
- bButton.innerHTML = b[0];
- document.body.appendChild(bButton);
- }
-
- var MinimapMenuBtn = document.createElement("Button");
- MinimapMenuBtn.classList.add("unity-btn", "menu-btn");
- MinimapMenuBtn.id = "Minimap Menu Button";
- document.body.appendChild(MinimapMenuBtn);
- MinimapMenuBtn.addEventListener("click", () => {
- switchBtn("minimap-btn");
- if (OverlayBtn.style.visibility !== "hidden")
- {
- for (let element of document.getElementsByClassName("minimap-btn")){
- element.style.visibility="hidden";
- }
- }
- else
- {
- for (let element of document.getElementsByClassName("minimap-btn")){
- element.style.visibility="";
- }
- }
- });
-
-
-
-
-
-
-
- // Space Buttons Module
-
- // var SpaceMainmapBtn = document.createElement("Button");
- // SpaceMainmapBtn.classList.add("unity-btn", "space-btn", "half", "horizontal-2", "vertical-1");
- // SpaceMainmapBtn.id = "SpMini Button";
- // SpaceMainmapBtn.innerHTML = "Minimap Style";
- // SpaceMainmapBtn.current = "Default";
- // // SpaceMainmapBtn.childVisible = false;
- // document.body.appendChild(SpaceMainmapBtn);
-
- // for (let a of spaceMainmap)
- // {
- // let saButton = document.createElement("Button");
- // saButton.id = a[0];
- // saButton.url = a[1];
- // saButton.classList.add("unity-btn", "space-btn", "space-mainmap", "half", "horizontal-2");
- // saButton.innerHTML = a[0];
- // document.body.appendChild(saButton);
- // }
-
- var SpaceOverlayBtn = document.createElement("Button");
- SpaceOverlayBtn.classList.add("unity-btn", "space-btn", "extra-full", "horizontal-1", "vertical-1");
- SpaceOverlayBtn.id = "SpOver Button";
- SpaceOverlayBtn.innerHTML = "Space";
- SpaceOverlayBtn.current = "Clear";
- // SpaceOverlayBtn.childVisible = false;
- document.body.appendChild(SpaceOverlayBtn);
-
- for (let b of spaceMinimap)
- {
- let sbButton = document.createElement("Button");
- sbButton.id = b[0];
- sbButton.url = b[1];
- sbButton.classList.add("unity-btn", "space-btn", "spaceMM", "space-minimap", "half", "horizontal-1");
- sbButton.innerHTML = b[0];
- document.body.appendChild(sbButton);
- }
-
- for (let c of spaceMinimap2)
- {
- let scButton = document.createElement("Button");
- scButton.id = c[0];
- scButton.url = c[1];
- scButton.classList.add("unity-btn", "space-btn", "spaceMM", "space-2minimap", "half", "horizontal-2");
- scButton.innerHTML = c[0];
- document.body.appendChild(scButton);
- }
-
- for (let d of spaceMinimap3)
- {
- let sdButton = document.createElement("Button");
- sdButton.id = d[0];
- sdButton.url = d[1];
- sdButton.classList.add("unity-btn", "space-btn", "spaceMM", "space-3minimap", "half", "horizontal-3");
- sdButton.innerHTML = d[0];
- document.body.appendChild(sdButton);
- }
-
-
- var SpaceMenuBtn = document.createElement("Button");
- SpaceMenuBtn.classList.add("unity-btn", "menu-btn");
- SpaceMenuBtn.id = "Space Menu Button";
- document.body.appendChild(SpaceMenuBtn);
- SpaceMenuBtn.addEventListener("click", () => {
- switchBtn("space-btn");
- if (OverlayBtn.style.visibility !== "hidden")
- {
- for (let element of document.getElementsByClassName("space-btn")){
- element.style.visibility = "hidden";
- }
- }
- else
- {
- for (let element of document.getElementsByClassName("space-btn")){
- element.style.visibility = "";
- }
- }
- });
-
- var wikiLocalLang = document.createElement("Button");
- wikiLocalLang.classList.add("unity-btn", "full", "horizontal-1", "vertical-0");
- wikiLocalLang.id = "local language";
- wikiLocalLang.state = true;
- wikiLocalLang.innerHTML = "Switch to Local Language";
- document.body.appendChild(wikiLocalLang);
- wikiLocalLang.addEventListener("click", () => {
- if (wikiLocalLang.state && global_cc)
- {
- let cc = langDict[global_cc];
- let fi = "en";
- if (typeof cc !== typeof undefined)
- {
- fi = cc[Math.floor(Math.random() * cc.length)];
- }
- wiki(fi, document.getElementById("i_container"), teleportMenu);
- wikiLocalLang.innerHTML = "Switch to English";
- wikiLocalLang.state = false;
- }
- else
- {
- wiki("en", document.getElementById("i_container"), teleportMenu);
- wikiLocalLang.innerHTML = "Switch to Local Language";
- wikiLocalLang.state = true;
- }
- });
-
-
-
-
- handleStyles();
-
-
-
- console.log("Script buttons Loaded");
- }
-
- // Handle Grid Mode
-
- function loadGridBtn(num)
- {
- let gridCanvas = document.getElementById("grid");
- let reload = false;
- if (!gridCanvas && num !== 0)
- {
- let gridBtn = document.createElement("div");
- gridBtn.id = "grid";
- // visibility: hidden;
- gridBtn.style =
- `
- display: grid;
- gap: 0px;
- top: 0px;
- left: 0px;
- position: absolute;
- width: 100%;
- height: 100%;
- z-index: 1;
- `;
- GAME_CANVAS.appendChild(gridBtn);
- gridCanvas = gridBtn;
- reload = true;
- }
-
- if (gridCanvas)
- {
- let mosaicMenu = document.getElementById("Mosaic Enable");
- if (num !== mosaicMenu.grid || reload)
- {
- console.log("Generate Mosaic tiles");
- gridCanvas.innerHTML = "";
- mosaicMenu.grid = num;
- // cond = true;
- if (num !== 0)
- {
- gridCanvas.style.visibility = "";
- for (let i = 1; i < num+1; i++)
- {
- for (let ii = 1; ii < num+1; ii++)
- {
- let btn1 = document.createElement("Button");
- btn1.style =
- `grid-column: ${ii};
- grid-row: ${i};
- `;
- btn1.classList.add("grid-btn");
- if (num < 21 && mosaicMenu.label)
- {
- btn1.innerHTML = `(${ii}, ${i})`;
- }
- btn1.addEventListener("click", () => {
- btn1.style.visibility = "hidden";
- });
- if (mosaicMenu.color)
- {
- btn1.style.background = '#' + (Math.random() * 0xFFFFFF<<0).toString(16);
- }
- gridCanvas.appendChild(btn1);
- }
- }
- mosaicMenu.grid = num;
- }
- else
- {
- gridCanvas.style.visibility = "hidden";
- }
-
- for (let grid2 of document.getElementsByClassName("grid-size"))
- {
- grid2.style.background = "#ff69b4";
- if (parseInt(grid2.id.replace(/\D/g,'')) == mosaicMenu.grid)
- {
- grid2.style.background = "#ff1493";
- }
- }
- }
-
- if (num !== 0)
- {
- gridCanvas.style.visibility = "";
- for (let grid1 of document.getElementsByClassName("grid-btn"))
- {
- grid1.style.visibility = "";
- }
- }
-
-
-
-
- }
- }
-
-
- function GenBtnColor()
- {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- if (timeMachineBtn.index == timeMachineBtn.list.length - 1)
- {
- timeMachineNewerBtn.style.backgroundColor = "red";
- timeMachineNewerBtn.disabled = true;
- }
- else
- {
- timeMachineNewerBtn.style.backgroundColor = "#ba55d3";
- timeMachineNewerBtn.disabled = false;
- }
- if (timeMachineBtn.index == 0)
- {
- timeMachineOlderBtn.style.backgroundColor = "red";
- timeMachineOlderBtn.disabled = true;
- }
- else
- {
- timeMachineOlderBtn.style.backgroundColor = "#ba55d3";
- timeMachineOlderBtn.disabled = false;
- }
- }
-
- /**
- * Handle Keyboard inputs
- */
-
- function kBoard()
- {
- document.addEventListener('keydown', logKey);
- }
-
- function logKey(e) {
- // console.log(e.code);
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- if (e.code == "Space")
- {
- setHidden(true);
- }
- if (e.code == "Digit4")
- {
- teleportBtn.click();
- }
- if (e.code == "Digit3")
- {
- teleportReverse.click();
- }
- else if (e.code == "Digit5")
- {
- timeMachineOlderBtn.click();
- }
- else if (e.code == "Digit6")
- {
- timeMachineBtn.click();
- }
- else if (e.code == "Digit7")
- {
- timeMachineNewerBtn.click();
- }
- else if (e.code == "Digit8")
- {
- if (mainMenuBtn.style.visibility == "hidden")
- {
- mainMenuBtn.style.visibility = "";
- }
- else
- {
- mainMenuBtn.style.visibility = "hidden";
- }
- }
- }
-
-
- /**
- * Hide or reveal the buttons, and disable buttons if such feature is not available
- */
-
- function setHidden(cond)
- {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- if (mainMenuBtn != null)
- {
- mainMenuBtn.style.visibility = "";
- mainMenuBtn.hide = true;
- // console.log(["cache", mainMenuBtn.menuBtnCache]);
- if (cond)
- {
- if (teleportBtn != null)
- {
- for (let element of document.getElementsByClassName("unity-btn")){
- element.style.visibility = "hidden";
- }
- }
- let iframe = document.getElementById("i_container");
- if (iframe != null)
- {
- if (!isBattleRoyale)
- {
- iframe.src = ""
- }
- else
- {
- // TODO
- }
- }
-
- }
- else
- {
- for (let element of document.getElementsByClassName("unity-btn")){
- if (element.id !== "Show Buttons" && !element.classList.contains("menu-btn"))
- {
- element.style.visibility = "hidden";
- }
- }
- }
- }
- }
-
- function setDisable(cond) {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- function setAll(cond1, cond2)
- {
- teleportMoreBtn.style.backgroundColor = cond1;
- teleportMoreBtn.disabled = cond2;
- teleportLessBtn.style.backgroundColor = cond1;
- teleportLessBtn.disabled = cond2;
- teleportDistResetBtn.style.backgroundColor = cond1;
- teleportDistResetBtn.disabled = cond2;
- switchCovergeButton.style.backgroundColor = cond1;
- switchCovergeButton.disabled = cond2;
- teleportBtn.style.backgroundColor = cond1;
- teleportBtn.disabled = cond2;
- teleportReverse.style.backgroundColor = cond1;
- teleportReverse.disabled = cond2;
- teleportMenu.style.backgroundColor = cond1;
- teleportMenu.disabled = cond2;
- TeleportArisBtn.style.backgroundColor = cond1;
- TeleportArisBtn.disabled = cond2;
- timeMachineBtn.style.backgroundColor = cond1;
- timeMachineBtn.disabled = cond2;
- satelliteSwitchButton.style.backgroundColor = cond1;
- satelliteSwitchButton.disabled = cond2;
- }
-
- function setMapstyle(cond1, cond2)
- {
- for (let mapDiv of document.getElementsByClassName("preset-minimap"))
- {
- if (["Borders", "Satellite", "Terrain", "Hybrid", "Custom"].includes(mapDiv.id))
- {
- mapDiv.style.backgroundColor = cond1;
- mapDiv.disabled = cond2;
- }
- }
- for (let mapDiv2 of document.getElementsByClassName("overlay-minimap"))
- {
- if (["Coverage", "Official", "OSM"].includes(mapDiv2.id))
- {
- mapDiv2.style.backgroundColor = cond1;
- mapDiv2.disabled = cond2;
- }
- }
- }
-
-
-
- // console.log(cond)
-
- if (teleportBtn != null) {
- setMapstylePlanet("None");
- if (rtded) {
- setAll("red", true);
- setMapstyle("red", true);
- }
- else
- {
- setMapstyle("#ff69b4", false)
- if (cond == ms_sat_map)
- {
- setAll("red", true);
- }
- else if (cond == "NMPZ") {
- setAll("red", true);
- if (cond !== "Baidu")
- {
- satelliteSwitchButton.style.backgroundColor = "#ba55d3";
- satelliteSwitchButton.disabled = false;
- }
- if (NZ)
- {
- if (ms_radius > 5000)
- {
- ms_radius = 5000;
- }
- }
- if (NM)
- {
- if (ms_radius > 2000)
- {
- ms_radius = 2000;
- }
- }
- if (NM && NZ)
- {
- if (ms_radius > 1000)
- {
- ms_radius = 1000;
- }
- }
- if (NM && NP && NZ)
- {
- if (ms_radius > 500)
- {
- ms_radius = 500;
- }
- }
- }
- else if (cond == "Google" || nextPlayer === "Wikipedia") {
- setAll("#ba55d3", false);
- if (bullseyeMapillary && cond == "Google")
- {
- switchCovergeButton.style.backgroundColor = "red";
- switchCovergeButton.disabled = true;
- }
- }
- else if (cond === "Baidu" || cond === "Youtube" || cond === "Image" || nextPlayer === "Minecraft") {
- setAll("red", true);
- switchCovergeButton.style.backgroundColor = "#ba55d3";
- switchCovergeButton.disabled = false;
- if (cond !== "Baidu")
- {
- satelliteSwitchButton.style.backgroundColor = "#ba55d3";
- satelliteSwitchButton.disabled = false;
- }
- }
- else if (cond == "Kakao" || cond == "Yandex" || cond == "Mapillary" || cond == "Bing Streetside" || cond == "Mapbox Satellite") {
- setAll("#ba55d3", false);
- timeMachineBtn.style.backgroundColor = "red";
- timeMachineBtn.disabled = true;
- }
- else if (cond == "Planets") {
- setAll("red", true);
- console.log("setting map style");
- setMapstyle("red", true);
- setMapstylePlanet(planetType);
- }
- // else if (cond == "Mapbox Satellite") {
- // setAll("red", true);
- // switchCovergeButton.style.backgroundColor = "#BF40BF";
- // switchCovergeButton.disabled = false;
- // satelliteSwitchButton.style.backgroundColor = "#BF40BF";
- // satelliteSwitchButton.disabled = false;
- // }
- }
- timeMachineNewerBtn.style.backgroundColor = "red";
- timeMachineNewerBtn.disabled = true;
- timeMachineOlderBtn.style.backgroundColor = "red";
- timeMachineOlderBtn.disabled = true;
-
- }
- }
-
- function setMapstylePlanet(cond)
- {
- for (let mapDiv of document.getElementsByClassName("spaceMM"))
- {
-
- if (cond == "None" && mapDiv.id.includes("Earth"))
- {
- mapDiv.style.backgroundColor = "#ff1493";
- mapDiv.disabled = false;
- }
- else if (mapDiv.id.includes(cond) || mapDiv.id.includes("Earth"))
- {
- mapDiv.style.backgroundColor = "#ff69b4";
- mapDiv.disabled = false;
- }
- else
- {
- mapDiv.style.backgroundColor = "red";
- mapDiv.disabled = true;
- }
-
-
- }
- }
-
-
- /**
- * This observer stays alive while the script is running
- */
-
-
-
- function launchObserver() {
- UnityInitiate();
- handleTeleport();
- SyncListener();
- kBoard();
- console.log("Main Observer");
- // const OBSERVER = new MutationObserver((mutations, observer) => {
- // detectGamePage();
- // });
- // OBSERVER.observe(document.head, { attributes: true, childList: true, subtree: true });
- let observer3 = new MutationObserver((mutations) => {
- mutations.forEach((mutation) => {
- if (oldHref != document.location.href && allowDetect) {
- oldHref = document.location.href;
- detectGamePage();
- }
- if (mutation.removedNodes)
- {
- for (let m of mutation.removedNodes) {
- if (m.classList)
- {
- let sat = m.getElementsByTagName('sat-map');
- if (sat.length !== 0)
- {
- let sat0 = sat[0];
- sat0.style.display = "none";
- // console.log(sat0)
- sat0.querySelector('.mapboxgl-map').classList.remove("inactive", "game-panorama_panorama__ncMwh", "game-panorama_panorama__Qpsxl", "br-game-layout__panorama", "game-layout__panorama", "game-panorama_panorama__rdhFg")
- document.body.appendChild(sat0);
- }
- }
- }
- }
- if (mutation.addedNodes)
- {
- for (let m of mutation.addedNodes) {
- // console.log(m);
- if (m.classList)
- {
- // let sat3 = m.getElementsByClassName("tooltip_tooltip__CHe2s");
- let PATHNAME = window.location.pathname;
- // let sat4 = m.getElementsByClassName('fullscreen-spinner_square__mwMfl');
- // console.log(m.classList.contains('round-starting_wrapper__1G_FC'));
- if (m.getElementsByClassName("tooltip_tooltip__CHe2s").length !== 0)
- {
- // console.log("detect setting")
- let mainMenuBtn = document.getElementById("Show Buttons");
- if (mainMenuBtn != null && !cn_tips)
- {
- // console.log("try to show show buttons")
- mainMenuBtn.style.visibility = "";
- if (mainMenuBtn.menuBtnCache)
- {
- for (let element of document.getElementsByClassName("menu-btn"))
- {
- element.style.visibility = "";
- }
- }
- }
- detectGamePage();
- }
- else if ((PATHNAME.startsWith("/challenge/") ||PATHNAME.startsWith("/results/") ||
- PATHNAME.startsWith("/game/")|| PATHNAME.startsWith("/battle-royale/") ||
- PATHNAME.startsWith("/duels/") || PATHNAME.startsWith("/team-duels/") ||
- PATHNAME.startsWith("/bullseye/")) && (m.getElementsByClassName('fullscreen-spinner_square__mwMfl').length !== 0))
- {
- // console.log("detect spinner")
- if (allowDetect)
- {
- detectGamePage();
- }
- }
- else if ((PATHNAME.startsWith("/duels/") || PATHNAME.startsWith("/team-duels/")) && (m.classList.contains('new-round_roundInfo__UlMCc')))
- {
- // console.log("detect duel")
- if (allowDetect)
- {
- detectGamePage();
- }
- }
- else if (PATHNAME.startsWith("/live-challenge/") && (m.classList.contains('round-starting_wrapper__1G_FC')))
- {
- // console.log("detect live challie")
- if (allowDetect)
- {
- detectGamePage();
- }
- }
-
- let sat = m.getElementsByClassName('result-layout_bottom__qLPd2');
-
- if (m.getElementsByClassName('result-layout_bottom__qLPd2').length !== 0)
- {
- // console.log("Round middle Callback");
- nextButtonCallback();
- }
-
- let sat2 = m.getElementsByClassName('guess-map__canvas-container');
- if (sat2.length !== 0)
- {
- // console.log("Minimap Callback");
- handleMinimapCallback();
- }
- }
- }
- }
- })
- })
- observer3.observe(document.body, {childList: true, subtree: true, attributes: false, characterData: false})
-
-
-
-
-
- }
- // function observerCallback(obs)
- // {
- // if (obs)
- // {
- // obs.observe(document.head, { attributes: true, childList: true, subtree: true });
- // }
- // else
- // {
- // setTimeout(observerCallback, 250);
- // }
- // }
-
- /**
- * Once the Google Maps API was loaded we can do more stuff
- */
-
- var oldHref = document.location.href;
-
- window.addEventListener('DOMContentLoaded', (event) => {
-
- if (!document.getElementById("Show Buttons"))
- {
- injecter(() => {
- launchObserver();
- })
- }
- });
-
- const base62 = {
- charset: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
- .split(''),
- encode: integer => {
- if (integer === 0) {
- return 0;
- }
- let s = [];
- while (integer > 0) {
- s = [base62.charset[integer % 62], ...s];
- integer = Math.floor(integer / 62);
- }
- return s.join('');
- },
- decode: chars => chars.split('').reverse().reduce((prev, curr, i) =>
- prev + (base62.charset.indexOf(curr) * (62 ** i)), 0)
- };
-
-
- /**
- * Check whether the current page is a game, if so which game mode
- */
-
- function detectGamePage() {
- // console.log("detect game change");
- if (document.querySelector(FAIL_TO_LOAD_CANVAS) !== null && !one_reset)
- {
- one_reset = true;
- console.log("Hide fail to load panorama canvas");
- document.querySelector(FAIL_TO_LOAD_CANVAS).style.visibility = "hidden";
- }
- function loadModule()
- {
- // console.log("load module")
-
- if (toLoad) {
- // console.log("initializeCanvas")
- initializeCanvas();
- }
- waitLoad();
-
- }
- let toLoad = !playerLoaded && !YANDEX_INJECTED && !KAKAO_INJECTED && !MAPILLARY_INJECTED && !MS_INJECTED && !MAPBOX_INJECTED;
- const PATHNAME = window.location.pathname;
- // console.log(PATHNAME)
- if (PATHNAME.startsWith("/game/") || PATHNAME.startsWith("/challenge/")) {
- // console.log("Game page");
- isBattleRoyale = false;
- isDuel = false;
- loadModule();
- }
- else if (PATHNAME.startsWith("/battle-royale/")) {
- if (document.querySelector(BR_LAYOUT) == null) {
- // console.log("Battle Royale Lobby");
- rstValues();
- }
- else {
- // console.log("Battle Royale");
- isBattleRoyale = true;
- isDuel = false;
- loadModule();
- }
- }
- else if (PATHNAME.startsWith("/duels/") || PATHNAME.startsWith("/team-duels/")) {
- if (document.querySelector(DUEL_LAYOUT) == null) {
- // console.log("Battle Royale Lobby");
- rstValues();
- }
- else {
- // console.log("Duels");
- isBattleRoyale = true;
- isDuel = true;
- loadModule();
- }
- }
- else if (PATHNAME.startsWith("/bullseye/")) {
- if (document.querySelector(".game_layout__0vAWj") == null) {
- // console.log("Battle Royale Lobby");
- rstValues();
- }
- else {
- // console.log("bullseye");
- isBattleRoyale = true;
- isBullseye = true;
- // console.log(document.getElementById("player"));
- if (document.getElementById("player") == null)
- {
- loadModule();
- }
- }
- }
- else if (PATHNAME.startsWith("/live-challenge/")) {
- if (document.querySelector(".panorama-question_layout__DYh_Y") == null) {
- // console.log("Battle Royale Lobby");
- rstValues();
- }
- else {
- // console.log("bullseye");
- isLiveChallenge = true;
- isBattleRoyale = true;
- loadModule();
- }
- }
- else {
- rstValues();
- // console.log("Not a Game page");
- }
- }
-
- function rstValues()
- {
- ROUND = 0;
- YandexPlayer = null;
- KakaoPlayer = null;
- MapillaryPlayer = null;
- MSStreetPlayer = null;
- // MapboxPlayer = null;
- // MapboxMarker = null;
-
- BAIDU_INJECTED = false;
- YANDEX_INJECTED = false;
- KAKAO_INJECTED = false;
- MAPILLARY_INJECTED = false;
- MS_INJECTED = false;
- MAPBOX_INJECTED = false;
-
- nextPlayer = "Google";
- nextPlayer_save = "Google";
- global_lat = 0;
- global_lng = 0;
- global_panoID = null;
- global_cc = null;
- global_BDAh = null;
- global_BDBh = null;
- global_BDID = null;
- yId = null;
- yTime = null;
- yEnd = null;
- iId = null;
-
- COMPASS = null;
- eventListenerAttached = false;
- povListenerAttached = false;
- playerLoaded = false;
- locHistory = [];
- one_reset = false;
- setHidden(true);
- yandex_map = false;
- Kakao_map = false;
- Wikipedia_map = false;
- Minecraft_map = false;
- bing_map = false;
- mmKey = 0;
- CURRENT_ROUND_DATA = null;
- ms_radius = 15000;
-
- isDuel = false;
- isBattleRoyale = false;
- isBullseye = false;
- isLiveChallenge = false;
-
- BR_LOAD_KAKAO = false;
- BR_LOAD_YANDEX = false;
- BR_LOAD_MS = false;
- BR_LOAD_MP = false;
- BR_LOAD_MAPILLARY = false;
-
- ms_sat_map = false;
- rtded = false;
-
- linksList = [];
-
- NM = false;
- NP = false;
- NZ = false;
- initBing = false;
-
- planetType = "None";
- wikiUrl = "";
- bullseyeMapillary = false;
-
- GAME_CANVAS = "";
- DUEL_CANVAS = "";
- randomPlanets = false;
- }
-
- /**
- * Wait for various players to load
- */
-
- function btnAll()
- {
- // console.log([document.querySelector(BULLSEYE_CANVAS), "???"])
- if (document.querySelector(".ticket-bar_root__H8RcX") != null)
- {
- if (document.querySelector(BR_CANVAS) != null)
- {
- AdjustBtnPos("-2em + 2px", "300px", true);
- }
- else if (document.querySelector(DUELS_CANVAS) != null)
- {
- AdjustBtnPos("6em", "0em", true);
- }
- else if (document.querySelector(BULLSEYE_CANVAS) != null)
- {
- AdjustBtnPos("5em", "18.5em", true);
- }
- else if (document.querySelector(LIVE_CANVAS) != null)
- {
- AdjustBtnPos("4em", "15.5em", true);
- }
- else
- {
- AdjustBtnPos("4em", "0em", true);
- }
- }
- else
- {
- if (document.querySelector(BR_CANVAS) != null)
- {
- AdjustBtnPos("-6em + 2px", "300px", true);
- }
- else if (document.querySelector(DUELS_CANVAS) != null)
- {
- AdjustBtnPos("2em", "0em", true);
- }
- else if (document.querySelector(BULLSEYE_CANVAS) != null)
- {
- AdjustBtnPos("1em", "18.5em", true);
- }
- else if (document.querySelector(LIVE_CANVAS) != null)
- {
- AdjustBtnPos("0em", "15.5em", true);
- }
- else
- {
- AdjustBtnPos("0em", "0em", true);
- }
- }
- if (menuLocCounter > 0)
- {
- for (let i = 0; i < menuLocCounter; i++) {
- AdjustBtnPos("-2em", "0em", false);
- }
- }
- else if (menuLocCounter < 0)
- {
- for (let i = 0; i < -menuLocCounter; i++) {
- AdjustBtnPos("2em", "0em", false);
- }
- }
- }
-
- function waitLoad() {
- if (!YandexPlayer || !KakaoPlayer || !MapillaryPlayer || !MSStreetPlayer || !MapboxPlayer || !document.getElementById("i_container") || !YANDEX_INJECTED || !KAKAO_INJECTED || !MAPILLARY_INJECTED || !MS_INJECTED || !MAPBOX_INJECTED) {
- // let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
-
- if (isBullseye && (document.getElementById("player") == null))
- {
- BAIDU_INJECTED = false;
- YANDEX_INJECTED = false;
- KAKAO_INJECTED = false;
- MAPILLARY_INJECTED = false;
- MS_INJECTED = false;
- MAPBOX_INJECTED = false;
- initializeCanvas();
- // document.querySelector(BULLSEYE_CANVAS).id = "player";
- // injectContainer();
- }
- btnAll();
- // console.log("wait");
- // console.log([!YandexPlayer, !KakaoPlayer,!MapillaryPlayer,!MSStreetPlayer,!MapboxPlayer,!document.getElementById("i_container"),!YANDEX_INJECTED,!KAKAO_INJECTED,!MAPILLARY_INJECTED,!MS_INJECTED,!MAPBOX_INJECTED])
- setTimeout(waitLoad, 250);
- } else {
- checkRound();
- }
- }
-
- /**
- * Checks for round changes
- */
-
- function checkRound() {
- // console.log("Check Round");
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
-
- if (!isBattleRoyale) {
- // console.log("Check Round");
- let currentRound = getRoundFromPage();
- if (ROUND != currentRound) {
- // fire1 = true;
- switchCovergeButton.init = true;
- console.log("New round");
- ROUND = currentRound;
- // NEW_ROUND_LOADED = true;
- COMPASS = null;
- locHistory = [];
- wikiUrl = "";
- one_reset = false;
- getMapData();
- // nextButtonCallback();
- }
- }
- else {
- getMapData();
- }
- }
-
- /**
- * Add listeners if buttons have been created
- */
-
- function finalDetail()
- {
- let target = document.querySelector("a[data-qa='play-same-map']");
- if (target)
- {
- var div = document.createElement("div");
- div.classList.add("buttons_buttons__0B3SB")
- document.querySelector('.result-layout_content__jAHfP').appendChild(div);
- for (var rd of linksList)
- {
- let str;
- if (rd[1] == "Mapbox Satellite")
- {
- str = "Google Maps";
- }
- else
- {
- str = rd[1];
- }
- // console.log(rd)
- let cl = target.cloneNode( true );
- let tx = "View R" + rd[0] + " in " + str;
- cl.querySelector('.button_label__kpJrA').innerHTML = tx;
- cl.removeAttribute('data-qa');
- cl.removeAttribute('href');
- cl.urlStr = rd[2];
- cl.addEventListener("click", (e) => {
- window.open(cl.urlStr);
- })
- cl.style = "top:10px;right:-10px;";
- div.appendChild(cl);
- }
- }
- else
- {
- setTimeout(finalDetail, 500);
- }
- }
-
- function nextButtonCallback()
- {
- let nextButton = document.querySelector("button[data-qa='close-round-result']");
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- // if (nextButton != null && fire1)
- // {
- // fire1 = false;
- nextButton.addEventListener("click", (e) => {
-
- if (ROUND == 5)
- {
- console.log("Game Finished")
- if (linksList)
- {
- finalDetail();
- }
- }
- })
- let urlStr = ""
-
- if (nextPlayer !== "Google" && nextPlayer !== "Planets")
- {
- // console.log("Clone buttons");
- let clone = document.querySelector("button[data-qa='close-round-result']").cloneNode( true );
- let tx;
- if (nextPlayer == "Mapbox Satellite")
- {
- tx = "View Location in Google Maps";
- }
- else
- {
- tx = "View Location in " + nextPlayer;
- }
- clone.querySelector('.button_label__kpJrA').innerHTML = tx;
- clone.setAttribute('id', "LinkBtn");
- clone.removeAttribute('data-qa');
- if (nextPlayer == "Baidu")
- {
- urlStr = "https://map.baidu.com/?panotype=street&pid=" + global_BDID + "&panoid=" + global_BDID + "&from=api";
- }
- else if (nextPlayer == "Youtube")
- {
- urlStr = "https://www.youtube.com/watch?v=" + yId;
- }
- else if (nextPlayer == "Image")
- {
- urlStr = iId;
- }
- else if (nextPlayer == "Kakao")
- {
- urlStr = "https://map.kakao.com/link/roadview/" + global_lat + "," + global_lng;
- }
- else if (nextPlayer == "Mapillary")
- {
- urlStr = "https://www.mapillary.com/app/?pKey=" + mmKey + "&focus=photo";
- }
- else if (nextPlayer == "Yandex")
- {
- urlStr = "https://yandex.com/maps/?&panorama%5Bdirection%5D=16%2C0&panorama%5Bpoint%5D=" + global_lng + "%2C" + global_lat;
- }
- else if (nextPlayer == "Bing Streetside")
- {
- urlStr = "https://bing.com/maps/default.aspx?cp=" + global_lat + "~" + global_lng + "&lvl=20&style=r";
- }
- else if (nextPlayer == "Mapbox Satellite")
- {
- urlStr = `http://www.google.com/maps/place/${global_lat},${global_lng}`;
- }
- else if (nextPlayer == "Wikipedia")
- {
- urlStr = wikiUrl;
- }
- // IMPLEMENT WIKIPEDIA
- clone.addEventListener("click", (e) => {
- window.open(urlStr);
- })
- if (ROUND == 5)
- {
- clone.style = "top:10px;";
- }
- else
- {
- clone.style = "right:-10px;";
- }
- linksList.push([ROUND, nextPlayer, urlStr]);
- document.querySelector('.round-result_actions__5j26U').appendChild(clone);
- }
- // }
- // else
- // {
- // setTimeout(nextButtonCallback, 1000);
- // }
- }
-
- function guessButtonCallback()
- {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- let guessButton = document.querySelector("button[data-qa='perform-guess']");
- if (guessButton != null)
- {
-
- guessButton.addEventListener("click", (e) => {
- if (mainMenuBtn != null)
- {
- console.log("try to hide show buttons")
- mainMenuBtn.style.visibility = "hidden";
- setHidden(true);
- }
- })
- }
- else
- {
- setTimeout(guessButtonCallback, 1000);
- }
- }
-
- /**
- * Load different streetview players
- */
-
- function loaderChecker(data)
- {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
-
- let substrings = ["Yandex", "Bing Streetside", "Kakao", "Mapbox", "Bing Satellite", "Planets"]
- bullseyeMapillary = ((isBullseye || isLiveChallenge) && !["Mapillary", "A United World", "A Unity World", "Unity Test","Unity Special Edition"].some(v => data.includes(v)));
- if (substrings.some(v => data.includes(v)) || rtded || bullseyeMapillary)
- {
- MapillaryPlayer = "MA";
- MAPILLARY_INJECTED = true;
-
- console.log("Not loading Mapillary");
- }
- else
- {
- BR_LOAD_MAPILLARY = true;
- injectMapillaryPlayer();
- }
-
- if (data.includes("A United World") || data.includes("A Unity World") || data.includes("Unity Test") || data.includes("Unity Special Edition"))
- {
- console.log("Complete Map");
- data = "Yandex Bing Streetside Kakao Mapbox";
- }
-
- if (data.includes("Yandex"))
- {
- console.log("Yandex Map");
- if (data == "Yandex Bing Streetside Kakao Mapbox")
- {
- yandex_map = false;
- }
- else
- {
- yandex_map = true;
- }
- injectYandexScript().then(() => {
- console.log("Ready to inject Yandex player");
- injectYandexPlayer();
- }).catch((error) => {
- console.log(error);
- });
- BR_LOAD_YANDEX = true;
- }
- else
- {
- // console.log("Not Yandex map");
- YANDEX_INJECTED = true;
- YandexPlayer = "YD";
- }
-
- if (data.includes("Bing Streetside") || data.includes("Planets"))
- {
- console.log("Bing Map");
- if (data.includes("Planets"))
- {
- let tempRad2;
- tempRad2 = data.split("Planets")[1];
- if (/\d/.test(tempRad2))
- {
- ms_radius = parseInt(tempRad2.replace(/\D/g,'')) * 1000;
- }
- bing_map = true;
-
- for (let pl of spaceList)
- {
- if (data.includes(pl))
- {
- planetType = pl;
- }
- }
- if (planetType == "Solar System")
- {
- randomPlanets = true;
- }
- console.log(planetType)
- // else if (data.includes("GTA V"))
- // {
- // planetType = "GTAV";
- // }
- // else if (data.includes("GTA San Andreas"))
- // {
- // planetType = "GTASA";
- // }
-
- }
- if (data == "Yandex Bing Streetside Kakao Mapbox")
- {
- bing_map = false;
- }
- injectMSPlayer();
- // initBing = true;
- BR_LOAD_MS = true;
- }
- else
- {
- // console.log("Not Bing map");
- MS_INJECTED = true;
- MSStreetPlayer = "MS";
- }
-
-
- let canvas = document.getElementById("sat_map");
- if (data.includes("Bing Satellite") || data.includes("Mapbox") || data.includes("Unity Satellite") || (sat_choice && !rtded))
- {
- if (data == "Yandex Bing Streetside Kakao Mapbox")
- {
- ms_sat_map = false;
- }
- else
- {
- ms_sat_map = true;
- }
- let tempRad;
- if (data.includes("Bing Satellite"))
- {
- tempRad = data.split("Bing Satellite")[1];
- }
- else if (data.includes("Mapbox"))
- {
- tempRad = data.split("Mapbox")[1];
- }
- else if (data.includes("Unity Satellite"))
- {
- tempRad = data.split("Unity Satellite")[1];
- }
-
-
- if (/\d/.test(tempRad))
- {
- ms_radius = parseInt(tempRad.replace(/\D/g,'')) * 1000;
- }
- console.log("Mapbox Satellite Map");
- // console.log(canvas)
-
- if (!canvas)
- {
- injectMapboxPlayer();
- }
- else
- {
- changeInnerHTML(canvas, false);
- MAPBOX_INJECTED = true;
- }
- initBing = true;
- BR_LOAD_MP = true;
- }
- else
- {
- if (canvas == null)
- {
- MapboxPlayer = "MP";
- }
- MAPBOX_INJECTED = true;
- // console.log("Not Mapbox Satellite map");
-
- }
-
- if (data.includes("Kakao"))
- {
- console.log("Kakao Map");
- if (data == "Yandex Bing Streetside Kakao Mapbox")
- {
- Kakao_map = false;
- }
- else
- {
- Kakao_map = true;
- }
- injectKakaoScript().then(() => {
- console.log("Ready to inject Kakao player");
- }).catch((error) => {
- console.log(error);
- });
- BR_LOAD_KAKAO = true;
- }
- else{
- KAKAO_INJECTED = true;
- KakaoPlayer = "KK";
- // console.log("Not Kakao map");
- }
-
- if (data.includes("Wikipedia"))
- {
- console.log("Wikipedia Map");
- Wikipedia_map = true;
-
- }
- else{
- // console.log("Not Wikipedia map");
- }
-
- if (data.includes("Minecraft"))
- {
- console.log("Minecraft Map");
- Minecraft_map = true;
-
- }
- else{
- // console.log("Not Minecraft map");
- }
-
-
-
-
- if (!data.includes("China Tips for each province"))
- {
- cn_tips = false;
- mainMenuBtn.style.visibility = "";
- setHidden(false);
- }
- else
- {
- cn_tips = true;
- guaranteeUI();
- }
-
-
-
- }
-
- function loadPlayers() {
- let mapBounds;
- playerLoaded = true;
- injectContainer();
-
- getSeed().then((data) => {
- // console.log(data)
- let map_name = "Default"
- if (typeof data.isRated !== 'undefined')
- {
- rtded = data.isRated;
- }
- if (typeof data.options !== 'undefined')
- {
- if (typeof data.options.isRated !== 'undefined')
- {
- rtded = data.options.isRated;
- }
- }
- if (rtded)
- {
- map_name = "Public Game";
- }
- else
- {
- if (!isBattleRoyale)
- {
- mapBounds = [data.bounds.max.lat, data.bounds.max.lng, data.bounds.min.lat, data.bounds.min.lng];
- map_name = data.mapName;
- }
- else
- {
- if (isBullseye)
- {
- mapBounds = [data.boundingBox.max.lat, data.boundingBox.max.lng, data.boundingBox.min.lat, data.boundingBox.min.lng];
- map_name = data.mapName;
- }
- else if (isDuel)
- {
- mapBounds = [data.mapBounds.max.lat, data.mapBounds.max.lng, data.mapBounds.min.lat, data.mapBounds.min.lng];
- map_name = data.options.map.name;
- }
- else if (isLiveChallenge)
- {
- mapBounds = [data.rounds[0].question.panoramaQuestionPayload.mapBounds.max.lat, data.rounds[0].question.panoramaQuestionPayload.mapBounds.max.lng,
- data.rounds[0].question.panoramaQuestionPayload.mapBounds.min.lat, data.rounds[0].question.panoramaQuestionPayload.mapBounds.min.lng];
- map_name = data.rounds[0].question.panoramaQuestionPayload.mapName;
- }
- else
- {
- map_name = "Unity Test";
- }
- }
- }
- if (mapBounds)
- {
- ms_radius = magic_formula(mapBounds);
- // console.log(ms_radius / 1000)
- }
- loaderChecker(map_name)
-
- }).catch((error) => {
- console.log(error);
- });
-
- }
-
- function guaranteeUI()
- {
- // console.log("UI")
- if (document.getElementById("GH-ui") !== null)
- {
- document.getElementById("GH-ui").style.display = "block";
- }
- else
- {
- setTimeout(guaranteeUI, 500);
- }
- }
-
- /**
- * Handles Return to start and undo
- */
-
- function handleReturnToStart() {
- let rtsButton = document.querySelector("button[data-qa='return-to-start']");
- // console.log("Handle Return to start");
- rtsButton.addEventListener("click", (e) => {
- if (nextPlayer !== "Baidu")
- {
- goToLocation(true);
- }
- else
- {
- document.getElementById("i_container").src = "https://map.baidu.com/?panotype=street&pid=" + global_BDID + "&panoid=" + global_BDID + "&from=api";
- }
- const elementClicked = e.target;
- elementClicked.setAttribute('listener', 'true');
- console.log("Return to start");
- });
- guessButtonCallback();
- // setTimeout(function () {goToLocation();}, 1000);
- }
-
- function handleUndo() {
- let undoButton = document.querySelector("button[data-qa='undo-move']");
- // console.log("Handle undo");
- undoButton.addEventListener("click", (e) => {
- if (locHistory.length > 0) {
- goToUndoMove();
- console.log("Undo Move");
- }
- })
- }
-
- /**
- * Load game information
- */
-
- function satCallback()
- {
- // console.log("Sat callback")
- // if (typeof MSStreetPlayer.entities !== typeof undefined && typeof Microsoft.Maps !== typeof undefined)
- // {
- // goToLocation(false);
- // }
- // else
- // {
- // setTimeout(satCallback, 250);
- // }
- if (typeof MapboxPlayer.flyTo !== typeof undefined)
- {
- goToLocation(false);
- }
- else
- {
- setTimeout(satCallback, 250);
- }
- }
-
- function kakaoCallback()
- {
- console.log("Kakao callback")
- if (typeof kakao.maps !== typeof undefined)
- {
- goToLocation(true);
- setTimeout(function () {goToLocation(true);}, 3000);
- }
- else
- {
- setTimeout(kakaoCallback, 250);
- }
- }
-
-
- function modularget(data)
- {
- if (data)
- {
- locationCheck(data);
- if (nextPlayer == "Kakao")
- {
- kakaoCallback();
- }
- else
- {
- goToLocation(true);
- }
- // handleMinimapCallback();
- handleButtons();
- }
- }
-
- function getMapData() {
- // myHighlight("Seed data");
-
- getSeed().then((data) => {
- let switchCovergeButton = document.getElementById("switch");
- let mainMenuBtn = document.getElementById("Show Buttons")
- if (isBattleRoyale) {
- if (data.status == "Finished" || typeof data.gameId == typeof undefined) {
- // console.log("Battle Royale Lobby");
- }
- else
- {
- let origin = false;
- if (!CURRENT_ROUND_DATA) {
- CURRENT_ROUND_DATA = data
- origin = true;
- }
-
- if (origin || !(data.currentRoundNumber === CURRENT_ROUND_DATA.currentRoundNumber)) {
- // myHighlight("Battle Royale New round");
- switchCovergeButton.init = true;
- // NEW_ROUND_LOADED = true;
- COMPASS = null;
- locHistory = [];
- one_reset = false;
- setHidden(false);
- if (!origin) {
- CURRENT_ROUND_DATA = data;
- }
- modularget(data);
- }
- }
- }
- else {
- if (!cn_tips)
- {
- setHidden(false);
- }
- else
- {
- mainMenuBtn.style.visibility = "hidden";
- AdjustBtnPos("14em", "0em", true);
- }
- modularget(data);
- }
-
- }).catch((error) => {
- console.log(error);
- });
- }
-
- function handleMinimapCallback()
- {
- // let trueCond = true;
- // let timeoutTime = 250;
- // if (isBattleRoyale) {
- // if (isDuel)
- // {
- // if (document.querySelector(DUELS_POPUP))
- // {
- // trueCond = false;
- // }
- // else
- // {
- // trueCond = true;
- // }
- // }
- // else
- // {
- // if (document.querySelector(BR_POPUP))
- // {
- // trueCond = false;
- // }
- // else
- // {
- // trueCond = true;
- // }
- // }
- // timeoutTime = 2500;
- // }
-
- // if (trueCond)
- // {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- if (MinimapBtn)
- {
- let cur = MinimapBtn.current;
- // console.log(cur)
- for (let mapDiv of document.getElementsByClassName("preset-minimap")){
- if (cur == mapDiv.id)
- {
- setTimeout(function () {mapDiv.click();}, 500);
- setTimeout(function () {mapDiv.click();}, 1000);
- setTimeout(function () {mapDiv.click();}, 3000);
- }
- }
- }
- else
- {
- setTimeout(handleMinimapCallback, 1000);
- }
- // }
- // else
- // {
- // setTimeout(handleMinimapCallback, timeoutTime);
- // }
- }
-
- /**
- * Hide unnecessary buttons for non-Google coverages
- */
-
- function handleButtons() {
- let CHECKPOINT = document.querySelector("button[data-qa='set-checkpoint']");
- let ZOOM_IN = document.querySelector("button[data-qa='pano-zoom-in']");
- let ZOOM_OUT = document.querySelector("button[data-qa='pano-zoom-out']");
- let UNDO_MOVE = document.querySelector("button[data-qa='undo-move']");
- let DEFAULT_COMPASS = document.querySelector(".compass");
- let NEW_COMPASS = document.querySelector(".panorama-compass_compassContainer__MEnh0");
- let RETURN_TO_START = document.querySelector("button[data-qa='return-to-start']");
-
- let C1 = (CHECKPOINT !== null);
- let C2 = (ZOOM_IN !== null);
- let C3 = (ZOOM_OUT !== null);
- let C4 = (UNDO_MOVE !== null);
- let C5 = (DEFAULT_COMPASS !== null);
- let C6 = (NEW_COMPASS !== null);
- let C7 = (RETURN_TO_START !== null);
-
- let waitCond = C5 || C6;
- let cpCond = true;
- let comCond = true;
- if (!NM)
- {
- cpCond = C1 && C4 && C7;
- }
- if (!NZ)
- {
- comCond = C2 && C3;
- }
-
- function moduleButtons(cond)
- {
-
- if (!NM)
- {
- CHECKPOINT.style.visibility = cond;
- UNDO_MOVE.style.visibility = cond;
- }
- if (!NZ)
- {
- ZOOM_IN.style.visibility = cond;
- ZOOM_OUT.style.visibility = cond;
- }
- if (C5)
- {
- DEFAULT_COMPASS.style.visibility = cond;
- }
- if (C6)
- {
- NEW_COMPASS.style.visibility = cond;
- }
- }
-
- if (waitCond && cpCond && comCond)
- {
- // console.log("Handle Buttons");
- if (nextPlayer === "Google" || nextPlayer === "Wikipedia") {
- moduleButtons("");
- }
- else if (nextPlayer === "Baidu" || nextPlayer === "Youtube" || nextPlayer === "Image" || nextPlayer === "Mapbox Satellite" || nextPlayer === "Minecraft" || nextPlayer === "Planets")
- {
- moduleButtons("hidden");
- }
- else if (nextPlayer === "Yandex" || nextPlayer === "Kakao" || nextPlayer === "Mapillary" || nextPlayer === "Bing Streetside")
- {
- moduleButtons("hidden");
- if (nextPlayer === "Yandex" || nextPlayer === "Kakao" || nextPlayer === "Wikipedia")
- {
- if (C5)
- {
- DEFAULT_COMPASS.style.visibility = "";
- }
- if (C6)
- {
- NEW_COMPASS.style.visibility = "";
- }
- }
- if (!NM)
- {
- UNDO_MOVE.style.visibility = "";
- handleUndo();
- }
- }
- if (!NM)
- {
- handleReturnToStart();
- }
- }
- else
- {
- setTimeout(handleButtons, 250);
- }
- }
-
- /**
- * Check which player to use for the next location
- */
-
- function locationCheck(data) {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- let round;
- // console.log(data)
-
- if (isBattleRoyale) {
- if (isDuel || isBullseye)
- {
- round = data.rounds[data.currentRoundNumber - 1].panorama;
- global_cc = round.countryCode;
- }
- else if (isLiveChallenge)
- {
- round = data.rounds[data.currentRoundNumber - 1].question.panoramaQuestionPayload.panorama;
- global_cc = round.countryCode;
- }
- else
- {
- round = data.rounds[data.currentRoundNumber - 1];
- global_cc = "us"; // No field available
- }
-
- }
- else {
- round = data.rounds[data.round - 1];
- global_cc = round.streakLocationCode;
- }
-
- global_lat = round.lat;
- global_lng = round.lng;
- global_panoID = round.panoId;
-
- global_heading = round.heading;
- global_pitch = round.pitch;
-
- // console.log(data);
-
- // console.log(global_panoID);
-
- nextPlayer = "Google";
-
- // if (ms_sat_map)
- // {
- // nextPlayer = "Mapbox Satellite";
- // }
-
- if (global_panoID) {
- let locInfo;
- if (isBullseye)
- {
- locInfo = global_panoID;
- }
- else
- {
- locInfo = hex2a(global_panoID);
- }
- // console.log(locInfo)
- if (locInfo.substring(0, 3) == "YTB")
- {
- nextPlayer = "Youtube";
- let lengths = [3, 11, 4, 4];
- let toPiece = lengths.map((p => i => locInfo.slice(p, p += i))(0));
- let fullID = locInfo.substring(3).split('START');
- yId = toPiece[1];
- yTime = Number(toPiece[2]);
- yEnd = Number(toPiece[3]);
- }
- else
- {
- let mapType = locInfo.substring(0, 5);
-
- // panoId unchanged
-
- if (mapType === "YDMAP" ) {
- nextPlayer = "Yandex";
- }
- else if (mapType === "KKMAP" ) {
- nextPlayer = "Kakao";
- }
-
- // New panoId formats
-
- else if (mapType === "BAIDU" ) {
- nextPlayer = "Baidu";
- let lengths = [5, 7, 7, 3];
- let toPiece = lengths.map((p => i => locInfo.slice(p, p += i))(0));
- let panoId1 = base62.decode(toPiece[1]).toString().substring(1);
- let panoId2 = base62.decode(toPiece[2]).toString().substring(1);
- global_BDID = panoId1 + panoId2 + toPiece[3]
- }
- else if (mapType === "MAPIL")
- {
- nextPlayer = "Mapillary";
- mmKey = locInfo.substring(5).replace(/\D/g,'');
- }
- else if (mapType === "IMAGE")
- {
- nextPlayer = "Image";
- let lengths = [5, 4, 4, 7, 2];
- let toPiece = lengths.map((p => i => locInfo.slice(p, p += i))(0));
- iId = "https://i.ibb.co/" + toPiece[3] + "/" + toPiece[1] + "." + toPiece[2].replace(/[^0-9a-z]/gi, '')
- }
- else if (mapType.includes("BING")) {
- if (mapType === "BINGM")
- {
- nextPlayer = "Bing Streetside";
- }
- else
- {
- nextPlayer = "Planets";
- let num = mapType.slice(-1).charCodeAt(0) - 65;
- planetType = spaceList[num];
-
- ms_radius = parseInt(locInfo.substring(5).replace(/\D/g,'')) * 1000;
- }
- }
- else if (mapType === "SATEL" ) {
- nextPlayer = "Mapbox Satellite";
- ms_radius = parseInt(locInfo.substring(5).replace(/\D/g,'')) * 1000;
- }
- else if (mapType === "MINEC" ) {
- nextPlayer = "Minecraft";
- }
- else if (mapType === "WIKIP" ) {
- nextPlayer = "Wikipedia";
- }
-
- // legacy panoId formats support
-
- // else if (mapType === "BDMAP") {
- // nextPlayer = "Baidu";
- // let coord = locInfo.substring(5);
-
- // if(coord.includes('BDAh'))
- // {
- // global_BDID = coord.split('BDAh')[0].replace("panoId","");
- // let tem = coord.split('BDAh')[1];
- // global_BDAh = tem.split('BDBh')[0];
- // global_BDBh = tem.split('BDBh')[1];
- // }
- // else
- // {
- // global_BDID = coord.replace("panoId","");
- // }
- // }
- // else if (mapType === "MLMAP") {
- // nextPlayer = "Mapillary";
- // mmKey = locInfo.substring(5);
- // }
-
- else if (Kakao_map)
- {
- nextPlayer = "Kakao";
- }
- else if (yandex_map)
- {
- nextPlayer = "Yandex";
- }
- else if (Wikipedia_map)
- {
- nextPlayer = "Wikipedia";
- }
- else if (Minecraft_map)
- {
- nextPlayer = "Minecraft";
- }
- else if (bing_map)
- {
- nextPlayer = "Planets";
- }
- else
- {
- nextPlayer = "Google";
- // GooglePlayer.setPano(locInfo);
- }
- }
- }
- else
- {
- if (Kakao_map)
- {
- nextPlayer = "Kakao";
- }
- else if (yandex_map)
- {
- nextPlayer = "Yandex";
- }
- else if (Wikipedia_map)
- {
- nextPlayer = "Wikipedia";
- }
- else if (Minecraft_map)
- {
- nextPlayer = "Minecraft";
- }
- else if (bing_map)
- {
- nextPlayer = "Planets";
- }
- else
- {
- nextPlayer = "Google";
- }
- }
-
-
- // if ( krCoordinates[0] > global_lat && krCoordinates[2] < global_lat && krCoordinates[1] < global_lng && krCoordinates[3] > global_lng)
- // {
- // nextSecondaryPlayer = "Kakao";
- // }
- // else if (nextPlayer = "Mapillary")
- // {
- // nextSecondaryPlayer = "Google";
- // }
- // else
- // {
- // nextSecondaryPlayer = "Mapillary";
- // }
-
- // Disable buttons if NM, NMPZ
-
- if(!isBattleRoyale)
- {
- NM = data.forbidMoving;
- NP = data.forbidRotating;
- NZ = data.forbidZooming;
- }
- else
- {
- // console.log(data)
- if (isBullseye || isLiveChallenge)
- {
- NM = data.options.movementOptions.forbidMoving;
- NP = data.options.movementOptions.forbidRotating;
- NZ = data.options.movementOptions.forbidZooming;
- }
- else
- {
- NM = data.movementOptions.forbidMoving;
- NP = data.movementOptions.forbidRotating;
- NZ = data.movementOptions.forbidZooming;
- }
- }
- if (NM || NP || NZ)
- {
- setDisable("NMPZ");
- }
- else
- {
- setDisable(nextPlayer);
- }
-
- if (nextPlayer == "Google")
- {
- switchCovergeButton.innerHTML = "Switch to Mapillary";
- }
- else
- {
- switchCovergeButton.innerHTML = "Switch to Google Streetview";
- }
- nextPlayer_save = nextPlayer;
-
-
- // console.log("??")
- // console.log(sessionStorage.getItem('Satellite') == "T")
- // console.log(ms_sat_map)
- if (ms_sat_map || (sat_choice && nextPlayer !== "Baidu" && !rtded))
- {
- nextPlayer = "Mapbox Satellite";
- }
-
- if (nextPlayer == "Mapbox Satellite")
- {
- let di3 = formatDist();
- satelliteSwitchButton.innerHTML = `Satellite (${di3})`;
- }
- else
- {
- satelliteSwitchButton.innerHTML = "Streetview mode";
- }
- console.log(nextPlayer_save + "," + nextPlayer);
- if (!rtded)
- {
- injectCanvas();
- }
- else
- {
- console.log("rated game, no canvas injection");
- }
- }
-
-
- /**
- * setID for canvas
- */
-
- function initializeCanvas() {
- GAME_CANVAS = "";
- DUEL_CANVAS = "";
- //console.log("Is duels");
- //console.log(duels);
-
- if (isBattleRoyale) {
- if (isDuel) {
- GAME_CANVAS = document.querySelector(DUELS_CANVAS);
- DUEL_CANVAS = document.querySelector(DUELS_CANVAS2);
- }
- else if (isBullseye) {
- GAME_CANVAS = document.querySelector(BULLSEYE_CANVAS);
- DUEL_CANVAS = "dummy";
- }
- else if (isLiveChallenge)
- {
- GAME_CANVAS = document.querySelector(LIVE_CANVAS);
- DUEL_CANVAS = "dummy";
- }
- else
- {
- GAME_CANVAS = document.querySelector(BR_WRAPPER);
- DUEL_CANVAS = "dummy";
- }
- }
- else {
- GAME_CANVAS = document.querySelector(GENERAL_LAYOUT);
- DUEL_CANVAS = "dummy";
- }
- if (GAME_CANVAS && DUEL_CANVAS)
- {
- console.log("Canvas injected");
- GAME_CANVAS.id = "player";
-
-
-
- if (isDuel) {
- DUEL_CANVAS.id = "default_player";
- }
-
- let mosaicBtn = document.getElementById("Mosaic Enable");
- if (mosaicBtn)
- {
- loadGridBtn(mosaicBtn.grid);
- }
-
- partialCreateMapillary = (typeof mapillary !== typeof undefined)
- partialCreateYandex = (typeof ymaps !== typeof undefined)
- partialCreateKakao = (typeof kakao !== typeof undefined)
- partialCreateMS = (typeof Microsoft !== typeof undefined);
- partialCreateMapbox = (typeof mapboxgl !== typeof undefined);
- loadPlayers();
-
-
- }
- else
- {
- setTimeout(initializeCanvas, 250);
- }
-
- }
-
- /**
- * Hide or show players based on where the next location is
- */
-
- function injectCanvas() {
- if (isDuel)
- {
- if (!rtded)
- {
- canvasSwitch();
- }
- }
- else
- {
- Google();
- Baidu();
- if (BR_LOAD_KAKAO)
- {
- Kakao();
- }
- if (BR_LOAD_YANDEX)
- {
- Yandex();
- }
- if (BR_LOAD_MS)
- {
- // console.log("Yes")
- Bing();
- }
- if (BR_LOAD_MP)
- {
- // console.log("Yes")
- Mapbox();
- }
- if (BR_LOAD_MAPILLARY)
- {
- Mapillary();
- }
- }
-
- }
-
- // for duels (class ID change)
-
- function canvasSwitch()
- {
-
- // console.log("canvas switch")
- // let cond = true;
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- let GOOGLE_MAPS_CANVAS = document.querySelector(DUELS_CANVAS);
- let BAIDU_MAPS_CANVAS = document.getElementById("i_container");
- let KAKAO_MAPS_CANVAS = document.getElementById("roadview");
- let YANDEX_MAPS_CANVAS = document.querySelector(".ymaps-2-1-79-panorama-screen");
- let BING_MAPS_CANVAS = document.getElementById("ms-player");
- let MAPILLARY_MAPS_CANVAS = document.getElementById("mapillary-player");
- let MAPBOX_MAPS_CANVAS = document.getElementById("mapbox-player");
- // console.log([GOOGLE_MAPS_CANVAS, BAIDU_MAPS_CANVAS, MAPILLARY_MAPS_CANVAS, BR_LOAD_KAKAO, KAKAO_MAPS_CANVAS, BR_LOAD_MS, BING_MAPS_CANVAS, BR_LOAD_YANDEX, YANDEX_MAPS_CANVAS])
-
- if (GOOGLE_MAPS_CANVAS && BAIDU_MAPS_CANVAS && (!BR_LOAD_MAPILLARY || MAPILLARY_MAPS_CANVAS) && (!BR_LOAD_KAKAO || KAKAO_MAPS_CANVAS) &&
- (!BR_LOAD_MS || BING_MAPS_CANVAS) && (!BR_LOAD_YANDEX || YANDEX_MAPS_CANVAS) && (!BR_LOAD_MP || MAPBOX_MAPS_CANVAS))
- {
- document.getElementById("default_player").style.position = "absolute";
- document.getElementById("default_player").className = "inactive";
- BAIDU_MAPS_CANVAS.style.position = "absolute";
- BAIDU_MAPS_CANVAS.className = "inactive";
- BAIDU_MAPS_CANVAS.visibility = "hidden";
-
- if (BR_LOAD_MAPILLARY)
- {
- MAPILLARY_MAPS_CANVAS.style.visibility = "hidden";
- MAPILLARY_MAPS_CANVAS.style.position = "absolute";
- MAPILLARY_MAPS_CANVAS.className = "inactive";
- }
-
- if (BR_LOAD_KAKAO)
- {
- KAKAO_MAPS_CANVAS.style.visibility = "hidden";
- KAKAO_MAPS_CANVAS.style.position = "absolute";
- KAKAO_MAPS_CANVAS.className = "inactive";
- }
- if (BR_LOAD_YANDEX)
- {
- YANDEX_MAPS_CANVAS.style.visibility = "hidden";
- YANDEX_MAPS_CANVAS.style.position = "absolute";
- }
- if (BR_LOAD_MS)
- {
- BING_MAPS_CANVAS.style.visibility = "hidden";
- BING_MAPS_CANVAS.style.position = "absolute";
- BING_MAPS_CANVAS.className = "inactive";
- }
-
- if (BR_LOAD_MP)
- {
- MAPBOX_MAPS_CANVAS.style.visibility = "hidden";
- MAPBOX_MAPS_CANVAS.style.position = "absolute";
- MAPBOX_MAPS_CANVAS.classList.remove("game-panorama_panorama__rdhFg")
- MAPBOX_MAPS_CANVAS.classList.add("inactive");
- }
-
- teleportMenu.google = false;
- switchCovergeButton.useGoogle = false;
-
- if (nextPlayer === "Google") {
- document.getElementById("default_player").className = "game-panorama_panoramaCanvas__PNKve";
- if (BR_LOAD_KAKAO)
- {
- //console.log("doing")
- window.dispatchEvent(new Event('resize'));
- }
- document.getElementById("default_player").visibility = "";
- teleportMenu.google = true;
- switchCovergeButton.useGoogle = true;
- console.log("Google Duel Canvas loaded");
- }
- else if (nextPlayer === "Baidu" || nextPlayer === "Youtube" || nextPlayer === "Image" || nextPlayer === "Wikipedia" || nextPlayer === "Minecraft")
- {
- BAIDU_MAPS_CANVAS.visibility = "";
- BAIDU_MAPS_CANVAS.className = "game-panorama_panorama__rdhFg";
- console.log("Container Duel Canvas loaded");
- }
- else if (nextPlayer === "Kakao")
- {
- if (BR_LOAD_KAKAO)
- {
- KAKAO_MAPS_CANVAS.style.visibility = "";
- KAKAO_MAPS_CANVAS.className = "game-panorama_panorama__rdhFg";
- }
- console.log("Kakao Duel Canvas loaded");
- }
- else if (nextPlayer === "Yandex")
- {
- if (BR_LOAD_YANDEX)
- {
- YANDEX_MAPS_CANVAS.style.visibility = "";
- }
- console.log("Yandex Duel Canvas loaded");
- }
- else if (nextPlayer === "Mapillary")
- {
- if (BR_LOAD_MAPILLARY)
- {
- MAPILLARY_MAPS_CANVAS.style.visibility = "";
- MAPILLARY_MAPS_CANVAS.className = "game-panorama_panorama__rdhFg";
- MapillaryPlayer.resize();
- }
- //
- console.log("Mapillary Duel Canvas loaded");
- }
- else if (nextPlayer === "Bing Streetside" || nextPlayer === "Planets")
- {
- if (BR_LOAD_MS)
- {
- BING_MAPS_CANVAS.style.visibility = "";
- BING_MAPS_CANVAS.className = "game-panorama_panorama__rdhFg";
- }
- console.log("MS Duel Canvas loaded");
- }
- else if (nextPlayer === "Mapbox Satellite")
- {
- if (BR_LOAD_MP)
- {
- MAPBOX_MAPS_CANVAS.style.visibility = "";
- MAPBOX_MAPS_CANVAS.classList.remove("inactive");
- MAPBOX_MAPS_CANVAS.classList.add("game-panorama_panorama__rdhFg");
- MapboxPlayer.resize();
- }
- console.log("Mapbox Satellite Duel Canvas loaded");
- }
- }
- else
- {
- setTimeout(canvasSwitch(), 1000);
- }
- }
-
- // for Battle Royale and classic (change visibility)
-
- function gCanvas()
- {
- let GOOGLE_MAPS_CANVAS = ""
- if (isBattleRoyale) {
- if (isBullseye)
- {
- GOOGLE_MAPS_CANVAS = document.querySelector(BULLSEYE_CANVAS2);
- }
- else if (isLiveChallenge)
- {
- GOOGLE_MAPS_CANVAS = document.querySelector(LIVE_CANVAS2);
- }
- else
- {
- GOOGLE_MAPS_CANVAS = document.querySelector(BR_CANVAS);
- }
- }
- else {
- GOOGLE_MAPS_CANVAS = document.querySelector(GENERAL_CANVAS);
- }
- return GOOGLE_MAPS_CANVAS;
- }
-
- function Google() {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- let GOOGLE_MAPS_CANVAS = gCanvas();
-
- if (GOOGLE_MAPS_CANVAS !== null)
- {
- if (nextPlayer === "Google") {
- GOOGLE_MAPS_CANVAS.style.visibility = "";
- teleportMenu.google = true;
- switchCovergeButton.useGoogle = true;
- }
- else {
- GOOGLE_MAPS_CANVAS.style.visibility = "hidden";
- teleportMenu.google = false;
- }
- }
- else
- {
- setTimeout(Google, 250);
- }
- }
-
- function Baidu() {
- let BAIDU_MAPS_CANVAS = document.getElementById("i_container");
- let switchCovergeButton = document.getElementById("switch");
- // console.log("Baidu canvas");
- if (BAIDU_MAPS_CANVAS !== null)
- {
- // let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- BAIDU_MAPS_CANVAS.style.position = "absolute";
- if (nextPlayer === "Baidu" || nextPlayer === "Youtube" || nextPlayer === "Image" || nextPlayer === "Wikipedia" || nextPlayer === "Minecraft") {
- BAIDU_MAPS_CANVAS.style.visibility = "";
- switchCovergeButton.useGoogle = false;
- console.log("Container Canvas loaded");
- }
- else {
- BAIDU_MAPS_CANVAS.style.visibility = "hidden";
- // console.log("Container Canvas hidden");
- }
- }
- else
- {
- setTimeout(Baidu, 250);
- }
-
- }
-
- function Kakao() {
- let KAKAO_MAPS_CANVAS = document.getElementById("roadview");
- let switchCovergeButton = document.getElementById("switch");
- // console.log("Kakao canvas");
- if (KAKAO_MAPS_CANVAS != null)
- {
- // let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- KAKAO_MAPS_CANVAS.style.position = "absolute";
- if (nextPlayer === "Kakao") {
- KAKAO_MAPS_CANVAS.style.visibility = "";
- switchCovergeButton.useGoogle = false;
- console.log("Kakao Canvas loaded");
- }
- else {
- KAKAO_MAPS_CANVAS.style.visibility = "hidden";
- // console.log("Kakao Canvas hidden");
- }
- }
- else
- {
- setTimeout(Kakao, 250);
- }
-
- }
-
- function Yandex() {
- let YANDEX_MAPS_CANVAS = document.querySelector(".ymaps-2-1-79-panorama-screen");
- let switchCovergeButton = document.getElementById("switch");
- if (YANDEX_MAPS_CANVAS != null)
- {
- // let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- if (isBullseye)
- {
- let div = document.getElementById("player");
- YANDEX_MAPS_CANVAS.classList.add("game-panorama_panorama__ncMwh");
- div.prepend(YANDEX_MAPS_CANVAS);
- }
- if (isLiveChallenge)
- {
- let div = document.getElementById("player");
- YANDEX_MAPS_CANVAS.classList.add("game-panorama_panorama__Qpsxl");
- div.prepend(YANDEX_MAPS_CANVAS);
- }
- // console.log("Yandex canvas");
- document.querySelector(".ymaps-2-1-79-panorama-screen").style.position = "absolute";
- // console.log("Yandex canvas");
- /* console.log(YANDEX_MAPS_CANVAS); */
- if (nextPlayer === "Yandex") {
- YANDEX_MAPS_CANVAS.style.visibility = "";
- switchCovergeButton.useGoogle = false;
- console.log("Yandex Canvas loaded");
- }
- else {
- YANDEX_MAPS_CANVAS.style.visibility = "hidden";
- console.log("Yandex Canvas hidden");
- }
- }
- else
- {
- setTimeout(Yandex, 250);
- }
-
- }
-
- function Mapillary()
- {
- let MAPILLARY_MAPS_CANVAS = document.getElementById("mapillary-player");
- let switchCovergeButton = document.getElementById("switch");
- if (MAPILLARY_MAPS_CANVAS != null)
- {
- // let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- // console.log("Mapillary canvas");
- MAPILLARY_MAPS_CANVAS.style.position = "absolute";
- if (nextPlayer === "Mapillary") {
- MAPILLARY_MAPS_CANVAS.style.visibility = "";
- switchCovergeButton.useGoogle = false;
- console.log("Mapillary Canvas loaded");
-
- }
- else {
- MAPILLARY_MAPS_CANVAS.style.visibility = "hidden";
- // console.log("Mapillary Canvas hidden");
- }
- }
- else
- {
- setTimeout(Mapillary, 250);
- }
-
- }
-
- function Bing() {
- let BING_MAPS_CANVAS = document.getElementById("ms-player");
- let switchCovergeButton = document.getElementById("switch");
- // console.log("stuck")
- if (BING_MAPS_CANVAS != null)
- {
- // let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- // console.log("Mapillary canvas");
- BING_MAPS_CANVAS.style.position = "absolute";
- if (nextPlayer === "Bing Streetside" || nextPlayer === "Planets") {
- BING_MAPS_CANVAS.style.visibility = "";
- switchCovergeButton.useGoogle = false;
- console.log("Bing Canvas loaded");
- }
- else {
- BING_MAPS_CANVAS.style.visibility = "hidden";
- console.log("Bing Canvas hidden");
- }
- }
- else
- {
- setTimeout(Bing, 500)
- }
- }
-
- function Mapbox()
- {
- let MAPBOX_CANVAS = document.getElementById("mapbox-player");
- let switchCovergeButton = document.getElementById("switch");
- if (MAPBOX_CANVAS != null)
- {
- // let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- // console.log("Mapillary canvas");
- MAPBOX_CANVAS.style.position = "absolute";
- if (nextPlayer === "Mapbox Satellite") {
- MAPBOX_CANVAS.style.visibility = "";
- switchCovergeButton.useGoogle = false;
- console.log("Mapbox Satellite Canvas loaded");
-
- }
- else {
- MAPBOX_CANVAS.style.visibility = "hidden";
- // console.log("Mapillary Canvas hidden");
- }
- }
- else
- {
- setTimeout(Mapbox, 250);
- }
-
- }
-
-
- /**
- * Adjust button placement
- */
-
- function ZoomControls() {
- let style = `
- .ymaps-2-1-79-panorama-gotoymaps {display: none !important;}
- .ymaps-2-1-79-panorama-control__zoom {top: 2rem !important; left: 2rem !important; z-Index: 0}
- .mapillary-bearing-indicator-container {top: 2rem !important; left: 2rem !important;}
- .mapillary-zoom-container {top: 6rem !important; left: 2.20rem !important;}
- .NavBar_MapTypeButtonContainerWrapper {visibility: hidden !important;}
- .bm_LocateMeControl {visibility: hidden !important;}
- .NavBar_Container {top: -6rem !important; left: 2rem !important;}
- .streetsideToolPanel {top: 4rem !important; left: 2rem !important;}
- .NavBarButton_Container {visibility: hidden !important;}
- .mapboxgl-ctrl-top-left {z-Index: 999}
- `;
-
- // let nav = document.querySelector('.NavBar_MapTypeButtonContainerWrapper');
- // let locate = document.getElementById("LocateMeButton");
- // let navAll = document.getElementById("MicrosoftNav");
- // if (nav)
- // {
- // nav.style.visibility = "hidden";
- // }
- // if (locate)
- // {
- // locate.style.visibility = "hidden";
- // }
- // if (navAll)
- // {
- // navAll.style.top = "15em"
- // }
-
- let style_element = document.createElement("style");
- style_element.innerHTML = style;
- document.body.appendChild(style_element);
- // document.getElementById("mapillary-bearing-indicator-container").style.top = "20em"
- }
-
- /**
- * Updates the compass to match Yandex Panorama facing
- */
- function updateCompass() {
- if (!COMPASS) {
- let compass = document.querySelector("img.compass__indicator");
- if (compass != null) {
- COMPASS = compass;
- let direction = YandexPlayer.getDirection()[0] * -1;
- COMPASS.setAttribute("style", `transform: rotate(${direction}deg);`);
- }
- }
- else {
- let direction = YandexPlayer.getDirection()[0] * -1;
- COMPASS.setAttribute("style", `transform: rotate(${direction}deg);`);
- }
- }
-
- /**
- * Open next location in streetview player given next player and next coordinate
- */
-
- function wiki(cc, iframe, teleportMenu)
- {
- let url = `https://${cc}.wikipedia.org/w/api.php`;
- let widthRight = 325;
- // console.log(cc);
- // if (cc == "fr")
- // {
- // widthRight = 1200;
- // }
-
- let params = {
- action: "query",
- list: "geosearch",
- gscoord: `${global_lat}|${global_lng}`,
- gsradius: "10000",
- gslimit: "1",
- format: "json"
- };
-
- url = url + "?origin=*";
- Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];});
- let GOOGLE_MAPS_CANVAS = gCanvas();
-
- fetch(url)
- .then(function(response){return response.json();})
- .then(function(response) {
- // console.log(response)
- var pages = response.query.geosearch;
- if (pages.length !== 0)
- {
- GOOGLE_MAPS_CANVAS.style.visibility = "hidden";
- let pageId = pages[0].pageid;
- iframe.src = `https://${cc}.wikipedia.org/?curid=${pageId}`;
- wikiUrl = `https://${cc}.wikipedia.org/?curid=${pageId}`;
- iframe.style.visibility = "";
- iframe.style.right = `-${widthRight}px`;
- iframe.style.width = (window.innerWidth + widthRight) + 'px';
-
- // console.log(iframe.style.width);
- // iframe.style.visibility = "";
- }
- else
- {
- GOOGLE_MAPS_CANVAS.style.visibility = "";
- teleportMenu.google = true;
- iframe.style.right = '0px';
- iframe.style.width = window.innerWidth + 'px';
- }
- }).catch(function(error){console.log(error);});
- }
-
-
-
- function goToLocation(cond) {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- console.log("Going to location");
- console.log(nextPlayer);
-
- if (mosaicBtn)
- {
- if (mosaicBtn.grid !== 0)
- {
- document.getElementById("Mosaic Menu").click();
- }
- loadGridBtn(mosaicBtn.grid);
- }
-
- if (nextPlayer !== "Planets" && (spaceList.some(className => OverlayBtn.current.includes(className))))
- {
- document.getElementById("Earth").click();
- }
-
- if (nextPlayer === "Yandex") {
- let options = {};
- YandexPlayer.moveTo([global_lat, global_lng], options);
- YandexPlayer.setDirection([0, 16]);
- YandexPlayer.setSpan([10, 67]);
- }
- else if (nextPlayer === "Baidu" || nextPlayer === "Youtube" || nextPlayer === "Image" || nextPlayer === "Wikipedia" || nextPlayer === "Minecraft") {
- if (document.getElementById("i_container") !== null)
- {
- let iframe = document.getElementById("i_container");
-
- if (nextPlayer === "Baidu")
- {
- if (!isFirefox)
- {
- iframe.style.top = '-60px';
- iframe.style.height = (window.innerHeight + 200) + 'px';
- }
- else
- {
- iframe.style.top = '-60px';
- iframe.style.height = (window.innerHeight + 219) + 'px';
- }
-
- if (!isFirefox)
- {
- iframe.style.right = '-55px';
- iframe.style.width = (window.innerWidth + 55) + 'px';
- }
- else
- {
- iframe.style.right = '-15px';
- iframe.style.width = (window.innerWidth + 15) + 'px';
- }
- let urlStr2 = "https://map.baidu.com/?panotype=street&pid=" + global_BDID + "&panoid=" + global_BDID + "&from=api";
- let urlStr = "https://map.baidu.com/@" + global_BDAh + "," + global_BDBh + "#panoid=" + global_BDID + "&panotype=street&l=12&tn=B_NORMAL_MAP&sc=0&newmap=1&shareurl=1&pid=" + global_BDID;
- // console.log(urlStr)
- if (global_BDAh != null)
- {
- iframe.src = urlStr;
- }
- else
- {
- iframe.src = urlStr2;
- }
- iframe.style.visibility = "";
- }
- else if (nextPlayer === "Youtube")
- {
- document.getElementById("Youtube Button").style.visibility = "";
- document.getElementById("Youtube Button").innerHTML = "Play video";
- iframe.allow = "autoplay";
- iframe.style.visibility = "hidden";
- iframe.style.top = '-60px';
- iframe.style.height = (window.innerHeight + 235) + 'px';
- iframe.style.right = '0px';
- iframe.style.width = window.innerWidth + 'px';
- mainMenuBtn.innerHTML = "<font size=2>Unity<br><font size=1>v6.2.1</font>";
- mainMenuBtn.style.width = "3em"
- mainMenuBtn.style.backgroundPosition = "";
- mainMenuBtn.backgroundColor = ""
- }
- else if (nextPlayer === "Image")
- {
- iframe.style.top = '0px';
- iframe.style.height = (window.innerHeight) + 'px';
- iframe.style.right = '0px';
- iframe.style.width = window.innerWidth + 'px';
- iframe.style.visibility = "";
- iframe.src = iId;
- }
- else if (nextPlayer === "Wikipedia")
- {
- if (!document.getElementById("mapbox-player"))
- {
- switchCovergeButton.style.visibility = "";
- }
- switchCovergeButton.disabled = false;
- let wikiLocalLang = document.getElementById("local language")
- wikiLocalLang.style.visibility = "";
- switchCovergeButton.style.backgroundColor = "#ba55d3";
- iframe.style.top = '0px';
- iframe.style.height = (window.innerHeight) + 'px';
- let fi = "en";
- if (!wikiLocalLang.state && global_cc)
- {
- let cc = langDict[global_cc];
- if (typeof cc !== typeof undefined)
- {
- fi = cc[Math.floor(Math.random() * cc.length)];
- }
- }
- wiki(fi, iframe, teleportMenu);
- }
- else if (nextPlayer === "Minecraft")
- {
- iframe.style.top = '0px';
- iframe.style.height = (window.innerHeight) + 'px';
- iframe.style.right = '0px';
- iframe.style.width = window.innerWidth + 'px';
- iframe.style.visibility = "";
- iframe.src = "https://classic.minecraft.net/?size=huge";
- }
- }
-
- else
- {
- setTimeout(goToLocation(true), 250);
- }
- // let a = new BMap.Point(global_lng, global_lat);
- // BaiduPlayer.setPov({ heading: -40, pitch: 6 });
- // BaiduPlayer.setPosition(a);
- }
- else if (nextPlayer === "Kakao") {
- var roadviewClient = new kakao.maps.RoadviewClient();
- var position = new kakao.maps.LatLng(global_lat, global_lng);
- roadviewClient.getNearestPanoId(position, 500, function (panoId) {
- KakaoPlayer.setPanoId(panoId, position);
- KakaoPlayer.setViewpoint({ pan: global_heading, tilt: global_pitch, zoom: -3 })
- });
- }
- else if (nextPlayer === "Mapillary") {
- MapillaryPlayer.resize()
- MapillaryPlayer.moveTo(mmKey).then(
- image => { //console.log(image);
- },
- error => { console.log(error); });
- }
- else if (nextPlayer === "Google" && !rtded) {
- if (!bullseyeMapillary)
- {
- handleMapillary({lat: global_lat, lng: global_lng}, {meters: 500, limit: 500});
- }
- }
- else if (nextPlayer === "Bing Streetside") {
- let mTId = MSStreetPlayer.getMapTypeId();
- if (mTId !== Microsoft.Maps.MapTypeId.streetside && mTId !== Microsoft.Maps.MapTypeId.road)
- {
- console.log("Reset Bing map type to Streetside")
- MSStreetPlayer = new Microsoft.Maps.Map(document.getElementById('ms-player'),{disableStreetsideAutoCoverage: true, allowHidingLabelsOfRoad: true});
- }
- MSStreetPlayer.setOptions({disableStreetside: false});
- MSStreetPlayer.setView({mapTypeId: Microsoft.Maps.MapTypeId.streetside,
- zoom: 18,
- streetsideOptions: {
- overviewMapMode: Microsoft.Maps.OverviewMapMode.hidden,
- showCurrentAddress: false,
- showProblemReporting: false,
- showExitButton: false,
- },
- center: new Microsoft.Maps.Location(global_lat, global_lng),
- heading: 90,
- pitch: -30});
- }
- else if (nextPlayer === "Planets") {
- // console.log("Bing Satellite Player")
-
- if (randomPlanets)
- {
- let tempSL = spaceList.slice(0, -1);
- planetType = tempSL[Math.floor(Math.random() * tempSL.length)];
- setMapstylePlanet(planetType);
- }
-
- let mTId = MSStreetPlayer.getMapTypeId();
- if (mTId !== Microsoft.Maps.MapTypeId.aerial && mTId !== Microsoft.Maps.MapTypeId.road)
- {
- console.log("Reset Bing map type to Satellite")
- MSStreetPlayer = new Microsoft.Maps.Map(document.getElementById('ms-player'),{disableStreetsideAutoCoverage: true, allowHidingLabelsOfRoad: true});
- }
- // MSStreetPlayer = new Microsoft.Maps.Map(document.getElementById('ms-player'),{disableStreetsideAutoCoverage: true, allowHidingLabelsOfRoad: true});
- let ctr = new Microsoft.Maps.Location(global_lat, global_lng)
- let loc_centre = {lat: global_lat, lng: global_lng};
- for (var i = MSStreetPlayer.entities.getLength() - 1; i >= 0; i--) {
- var pushpin = MSStreetPlayer.entities.get(i);
- if (pushpin instanceof Microsoft.Maps.Pushpin) {
- MSStreetPlayer.entities.removeAt(i);
- }
- }
- // console.log("Satellite radius: " + (ms_radius / 1000).toString() + "km");
-
- let maxZoomNum = 20;
- if (planetType == "Mars")
- {
- maxZoomNum = 5;
- }
- else if (planetType == "Moon")
- {
- maxZoomNum = 6;
- }
-
- if (ms_radius < 1500000)
- {
- ms_radius = 1500000;
- }
-
- if (ms_radius > 6000000)
- {
- ms_radius = 6000000;
- }
-
- // console.log(ms_radius);
-
- let latlngBounds = getBBox2(loc_centre, ms_radius);
- // console.log(latlngBounds)
- let bounds = Microsoft.Maps.LocationRect.fromLocations(new Microsoft.Maps.Location(latlngBounds[0], latlngBounds[1]), new Microsoft.Maps.Location(latlngBounds[2], latlngBounds[3]));
-
- MSStreetPlayer.setOptions({maxBounds: bounds, maxZoom: maxZoomNum})
-
- MSStreetPlayer.setOptions({disableStreetside: true});
- MSStreetPlayer.setView({mapTypeId: Microsoft.Maps.MapTypeId.mercator,
- labelOverlay: Microsoft.Maps.LabelOverlay.hidden,
- center: ctr,
- zoom: 1,
- })
- var weatherTileSource = new Microsoft.Maps.TileSource({
- uriConstructor: getTMSTilePath
- });
- var weatherTileLayer = new Microsoft.Maps.TileLayer({
- mercator: weatherTileSource,
- });
- if (planetType == "Moon")
- {
- document.getElementById("Moon (Labels)").click();
- }
- else if (planetType == "Mars")
- {
- document.getElementById("Mars (Labels)").click();
- }
- else
- {
- // console.log(planetType);
- // console.log(document.getElementById(planetType));
- document.getElementById(planetType).click();
- }
- MSStreetPlayer.layers.insert(weatherTileLayer);
-
- var pin = new Microsoft.Maps.Pushpin(ctr, {});
- MSStreetPlayer.entities.push(pin);
-
- // FixLink(); // DOM BASED SOLUTION
- }
- else if (nextPlayer === "Mapbox Satellite") {
- // MapboxPlayer.resize();
- let satelliteStyleBtn = document.getElementById("Satellite Style Button");
- let satelliteTypeBtn = document.getElementById("Satellite Type Button");
- function waitSky()
- {
- try
- {
- let l = [];
- for (let element of MapboxPlayer.getStyle().layers)
- {
- l.push(element.id);
- }
- if (l.includes('sky'))
- {
- styleMapboxAll(satelliteTypeBtn.currentId, satelliteTypeBtn.currentDim, satelliteStyleBtn.current, satelliteTypeBtn.currentId, satelliteTypeBtn.currentDim, satelliteStyleBtn.current, true);
- }
- else
- {
- setTimeout(waitSky, 250);
- }
- }
- catch(error)
- {
- console.log(error)
- setTimeout(waitSky, 250);
- }
- }
- waitSky();
- }
- if (nextPlayer === "Google" && fire1)
- {
- window.dispatchEvent(new Event('resize'));
- if (rtded)
- {
- document.getElementById("Clear").click();
- }
- fire1 = false;
- }
-
- if (cond)
- {
- switchCovergeButton.lat = global_lat;
- switchCovergeButton.lng = global_lng;
- }
-
- }
-
-
- /**
- * Handle undo using the location history of the current round
- */
-
- function goToUndoMove(data) {
- /* console.log(global_lat);
- console.log(global_lng); */
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- let options = {};
- let prevStep = null;
- if (locHistory.length === 1) {
- prevStep = locHistory[0];
- }
- else {
- prevStep = locHistory.pop();
- }
- // console.log(prevStep);
- // console.log(locHistory)
- if (nextPlayer === "Yandex") {
- defaultPanoIdChange = false;
- YandexPlayer.moveTo([prevStep[0], prevStep[1]], options);
- YandexPlayer.setDirection([prevStep[2], prevStep[3]]);
- YandexPlayer.setSpan([10, 67]);
- switchCovergeButton.lat = prevStep[0];
- switchCovergeButton.lng = prevStep[1];
- }
- else if (nextPlayer === "Kakao") {
- let btn = document.querySelector("button[data-qa='undo-move']");
- btn.disabled = false;
- btn.classList.remove('styles_disabled__2YdHD');
- defaultPanoIdChange = false;
- let position = new kakao.maps.LatLng(prevStep[0], prevStep[1]);
- KakaoPlayer.setPanoId(prevStep[2], position);
- switchCovergeButton.lat = prevStep[0];
- switchCovergeButton.lng = prevStep[1];
- switchCovergeButton.useGoogle = false;
- teleportMenu.google = false;
- // console.log("Undo 1 step");
- // console.log(locHistory);
- }
- else if (nextPlayer === "Mapillary" ) {
- // console.log(prevStep[1]);
-
- MapillaryPlayer.moveTo(prevStep[2]).then(
- image => {
- //console.log(image);
- switchCovergeButton.lat = prevStep[1];
- switchCovergeButton.lng = prevStep[0];
- },
- error => { console.log(error); });
- }
- else if (nextPlayer === "Bing Streetside") {
- defaultPanoIdChange = false;
- // console.log(locHistory);
- MSStreetPlayer.setView({center: new Microsoft.Maps.Location(prevStep[0], prevStep[1]),});
- switchCovergeButton.lat = prevStep[0];
- switchCovergeButton.lng = prevStep[1];
- switchCovergeButton.heading = prevStep[2];
- }
-
- }
-
- function handleTeleport()
- {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- if (teleportMenu)
- {
- function tpt(direction)
- {
- if (!teleportMenu.google)
- {
- // console.log("non-Google Teleport");
- function forwardReverse(heading)
- {
- if (direction)
- {
- return heading;
- }
- else
- {
- return (heading + 180) % 360;
- }
- }
-
- let prevStep = null;
- if (locHistory.length === 1) {
- prevStep = locHistory[0];
- }
- else {
- prevStep = locHistory[locHistory.length - 1];
- }
- // console.log(locHistory);
-
- let options = {};
- let place, position, pID;
- if (nextPlayer === "Yandex") {
-
- place = FindPointAtDistanceFrom(prevStep[0], prevStep[1], DegreesToRadians(forwardReverse(prevStep[2])), teleportMenu.distance * 0.001);
- YandexPlayer.setDirection([prevStep[2], prevStep[3]]);
- YandexPlayer.moveTo([place.lat, place.lng], options);
- YandexPlayer.setSpan([10, 67]);
- switchCovergeButton.lat = place.lat;
- switchCovergeButton.lng = place.lng;
- }
- else if (nextPlayer === "Kakao") {
- var roadviewClient = new kakao.maps.RoadviewClient();
- place = FindPointAtDistanceFrom(prevStep[0], prevStep[1], DegreesToRadians(forwardReverse(prevStep[3])), teleportMenu.distance * 0.001);
- position = new kakao.maps.LatLng(place.lat, place.lng);
- roadviewClient.getNearestPanoId(position, 500, function (panoId) {
- KakaoPlayer.setPanoId(panoId, position);
- });
- switchCovergeButton.lat = place.lat;
- switchCovergeButton.lng = place.lng;
- }
- else if (nextPlayer === "Mapillary" || nextPlayer === "Google") {
- place = FindPointAtDistanceFrom(prevStep[0], prevStep[1], DegreesToRadians(forwardReverse(prevStep[2])), teleportMenu.distance * 0.001);
- handleMapillary(place, {meters: 500, limit: 500});
- switchCovergeButton.lat = place.lat;
- switchCovergeButton.lng = place.lng;
- // locHistory.push([place.lat, place.lng, prevStep[2], prevStep[3]]);
- }
- else if (nextPlayer === "Bing Streetside") {
- // console.log("teleport")
- // console.log(prevStep);
- place = FindPointAtDistanceFrom(prevStep[0], prevStep[1], DegreesToRadians(forwardReverse(prevStep[2])), teleportMenu.distance * 0.001);
- let bounds = new Microsoft.Maps.LocationRect(new Microsoft.Maps.Location(place.lat, place.lng), 1, 1);
- Microsoft.Maps.Map.getClosestPanorama(bounds, onSuccess, onMissingCoverage);
- function onSuccess(panoramaInfo) {
- // console.log("Coverage")
- // console.log([panoramaInfo.la, panoramaInfo.lo])
- MSStreetPlayer.setView({center: new Microsoft.Maps.Location(panoramaInfo.la, panoramaInfo.lo),
- });
- }
- function onMissingCoverage() {
- console.log("No Coverage")
- }
- }
-
- if (teleportMenu.distance > 150)
- {
- teleportMenu.distance = 100;
- teleportBtn.innerHTML = "Teleport " + teleportMenu.distance + " m";
- }
- }
- }
- teleportBtn.addEventListener("click", () => {
- tpt(true);
-
- });
- teleportReverse.addEventListener("click", () => {
- tpt(false);
-
- });
- }
- }
-
- function SyncListener()
- {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- switchCovergeButton.addEventListener("click", () => {
- if (switchCovergeButton.useGoogle == false) {
- // switchCovergeButton.useGoogle = true;
- console.log(nextPlayer)
- if (nextPlayer === "Yandex") {
- let options = {};
- YandexPlayer.moveTo([switchCovergeButton.lat, switchCovergeButton.lng], options);
- YandexPlayer.setDirection([switchCovergeButton.heading, 0]);
-
- // nextPlayer = "Yandex";
- }
- else if (nextPlayer === "Kakao") {
- let roadviewClient = new kakao.maps.RoadviewClient();
- // console.log(switchCovergeButton.lat);
- let position = new kakao.maps.LatLng(switchCovergeButton.lat, switchCovergeButton.lng);
- roadviewClient.getNearestPanoId(position, 500, function (panoId) {
- KakaoPlayer.setPanoId(panoId, position);
- });
- KakaoPlayer.setViewpoint({
- pan: switchCovergeButton.heading,
- tilt: 0,
- zoom: -3
- });
- // nextPlayer = "Kakao";
- }
- else if (nextPlayer === "Mapillary" || nextPlayer === "Google") {
- // nextPlayer = "Kakao";
- handleMapillary({lat: switchCovergeButton.lat, lng: switchCovergeButton.lng}, {meters: 100, limit: 100});
- }
- else if (nextPlayer === "Bing Streetside") {
- let bounds = new Microsoft.Maps.LocationRect(new Microsoft.Maps.Location(switchCovergeButton.lat, switchCovergeButton.lng), 0.01, 0.01);
- Microsoft.Maps.Map.getClosestPanorama(bounds, onSuccess, onMissingCoverage);
- function onSuccess(panoramaInfo) {
- MSStreetPlayer.setView({center: new Microsoft.Maps.Location(panoramaInfo.la, panoramaInfo.lo),
- heading: switchCovergeButton.heading
- });
- }
- function onMissingCoverage() {
- console.log("No Coverage")
- }
- }
- }
- });
-
- }
-
- /**
- * Gets the seed data for the current game
- *
- * @returns Promise with seed data as object
- */
- function getSeed() {
- console.log("get seed");
- // myHighlight("Get Seed");
- return new Promise((resolve, reject) => {
- let token = getToken();
- let URL;
- let cred = ""
-
- const PATHNAME = window.location.pathname;
-
- if (PATHNAME.startsWith("/game/")) {
- URL = `https://www.geoguessr.com/api/v3/games/${token}`;
- }
- else if (PATHNAME.startsWith("/challenge/")) {
- URL = `https://www.geoguessr.com/api/v3/challenges/${token}/game`;
- }
- else if (PATHNAME.startsWith("/battle-royale/")) {
- URL = `https://game-server.geoguessr.com/api/battle-royale/${token}`;
- }
- else if (PATHNAME.startsWith("/duels/") || PATHNAME.startsWith("/team-duels/")) {
- URL = `https://game-server.geoguessr.com/api/duels/${token}`;
- }
- else if (PATHNAME.startsWith("/bullseye/")) {
- URL = `https://game-server.geoguessr.com/api/bullseye/${token}`;
- }
- else if (PATHNAME.startsWith("/live-challenge/")) {
- URL = `https://game-server.geoguessr.com/api/live-challenge/${token}`;
- }
- if (isBattleRoyale) {
- fetch(URL, {
- // Include credentials to GET from the endpoint
- credentials: 'include'
- })
- .then((response) => response.json())
- .then((data) => {
- resolve(data);
- })
- .catch((error) => {
- reject(error);
- });
- }
- else {
- fetch(URL)
- .then((response) => response.json())
- .then((data) => {
- resolve(data);
- })
- .catch((error) => {
- reject(error);
- });
- }
- });
- }
-
- /**
- * Gets the token from the current URL
- *
- * @returns token
- */
- function getToken() {
- const PATHNAME = window.location.pathname;
- if (PATHNAME.startsWith("/game/")) {
- return PATHNAME.replace("/game/", "");
- }
- else if (PATHNAME.startsWith("/challenge/")) {
- return PATHNAME.replace("/challenge/", "");
- }
- else if (PATHNAME.startsWith("/battle-royale/")) {
- return PATHNAME.replace("/battle-royale/", "");
- }
- else if (PATHNAME.startsWith("/duels/")) {
- return PATHNAME.replace("/duels/", "");
- }
- else if (PATHNAME.startsWith("/team-duels/")) {
- return PATHNAME.replace("/team-duels/", "");
- }
- else if (PATHNAME.startsWith("/bullseye/")) {
- return PATHNAME.replace("/bullseye/", "");
- }
- else if (PATHNAME.startsWith("/live-challenge/")) {
- return PATHNAME.replace("/live-challenge/", "");
- }
- }
-
- /**
- * Gets the round number from the ongoing game from the page itself
- *
- * @returns Round number
- */
- function getRoundFromPage() {
- const roundData = document.querySelector("div[data-qa='round-number']");
- if (roundData) {
- let roundElement = roundData.querySelector("div:last-child");
- if (roundElement) {
- let round = parseInt(roundElement.innerText.charAt(0));
- if (!isNaN(round) && round >= 1 && round <= 5) {
- return round;
- }
- }
- }
- else {
- return ROUND;
- }
- }
-
-
- /**
- * Injects Yandex Script
- */
- function injectYandexScript() {
- return new Promise((resolve, reject) => {
- if (!YANDEX_INJECTED) {
- if (YANDEX_API_KEY === "") {
- console.log("No Yandex Key")
- reject();
- }
- else {
- if (!partialCreateYandex)
- {
- const SCRIPT = document.createElement("script");
- SCRIPT.type = "text/javascript";
- SCRIPT.async = true;
- SCRIPT.src = `https://api-maps.yandex.ru/2.1/?lang=en_US&apikey=${YANDEX_API_KEY}`;
- document.body.appendChild(SCRIPT);
- SCRIPT.onload = () => {
- ymaps.ready(() => {
- YANDEX_INJECTED = true;
- myHighlight("Yandex API Loaded");
- resolve();
- });
- }
- }
- else
- {
- YANDEX_INJECTED = true;
- resolve();
- }
- }
- }
- else {
- resolve();
- }
- });
- }
-
- /**
- * Injects Yandex Player and calls handleReturnToStart
- */
- function injectYandexPlayer() {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- let lat = 41.321861;
- let lng = 69.212920;
-
- let options = {
- "direction": [0, 16],
- "span": [10, 67],
- "controls": ["zoomControl"]
- };
- ymaps.panorama.createPlayer("player", [lat, lng], options)
- .done((player) => {
- YandexPlayer = player;
- YandexPlayer.events.add("directionchange", (e) => {
- updateCompass();
- let pov = YandexPlayer.getDirection();
- if (locHistory.length > 0 && nextPlayer == "Yandex") {
- switchCovergeButton.heading = pov[0];
- locHistory[locHistory.length - 1][2] = pov[0];
- locHistory[locHistory.length - 1][3] = pov[1];
- }
- });
- YandexPlayer.events.add("panoramachange", (e) => {
- if (defaultPanoIdChange) {
- let num = YandexPlayer.getPanorama().getPosition();
- let pov = YandexPlayer.getDirection();
- // console.log(num);
- // console.log(pov);
- if (nextPlayer == "Yandex")
- {
- locHistory.push([num[0], num[1], pov[0], pov[1]]);
- switchCovergeButton.lat = num[0];
- switchCovergeButton.lng = num[1];
- }
- let btn = document.querySelector("button[data-qa='undo-move']");
- if (locHistory.length > 1) {
- btn.disabled = false;
- btn.classList.remove('styles_disabled__2YdHD');
- }
- // console.log(locHistory);
- }
- defaultPanoIdChange = true;
-
- });
- console.log("Yandex Player injected");
- });
-
- }
-
-
- /**
- * Injects Baidu script
- */
-
- function reportWindowSize() {
- // console.log("report window size");
- let iframeC = document.getElementById("i_container");
- if (iframeC)
- {
- if (nextPlayer == "Baidu")
- {
- iframeC.style.top = '-60px';
- iframeC.style.height = (window.innerHeight + 200) + 'px';
- // TODO
- iframeC.style.right = '-55px';
- iframeC.style.width = (window.innerWidth + 55) + 'px';
- }
- else if (nextPlayer == "Youtube")
- {
- iframeC.style.top = '-60px';
- iframeC.style.height = (window.innerHeight + 235) + 'px';
- iframeC.style.right = '0px';
- iframeC.style.width = (window.innerWidth) + 'px';
- }
- else if (nextPlayer == "Image" || nextPlayer === "Minecraft")
- {
- iframeC.style.top = '0px';
- iframeC.style.height = (window.innerHeight) + 'px';
- iframeC.style.right = '0px';
- iframeC.style.width = (window.innerWidth) + 'px';
- }
- else if (nextPlayer === "Wikipedia")
- {
- iframeC.style.top = '0px';
- iframeC.style.height = (window.innerHeight) + 'px';
- iframeC.style.right = '-325px';
- iframeC.style.width = (window.innerWidth + 325) + 'px';
- }
-
- }
- }
-
- window.onresize = reportWindowSize;
-
-
-
- function injectContainer() {
- myHighlight("iframe container loaded")
- const iframe = document.createElement('iframe');
- iframe.frameBorder = 0;
- iframe.style.position = "absolute";
- iframe.id = "i_container";
- if (isBattleRoyale) {
- if (isDuel)
- {
- iframe.className = "inactive";
- }
- else if (isBullseye)
- {
- iframe.className = "game-panorama_panorama__ncMwh";
- }
- else if (isLiveChallenge)
- {
- iframe.className = "game-panorama_panorama__Qpsxl";
- }
- else
- {
- iframe.className = "br-game-layout__panorama";
- }
- }
- else {
- iframe.className = "game-layout__panorama";
- }
- var div = document.getElementById("player");
- if (div)
- {
- div.style.overflow = "hidden";
- if (isBullseye || isLiveChallenge)
- {
- div.prepend(iframe);
- }
- else
- {
- div.appendChild(iframe);
- }
- }
-
- }
-
- /**
- * Injects Kakao script
- */
-
- function injectKakaoScript() {
- return new Promise((resolve, reject) => {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- if (!KAKAO_INJECTED) {
- if (KAKAO_API_KEY === "") {
- console.log("No Kakao Key")
- }
- else {
-
- let canvas = document.createElement("kmap");
- if (isBattleRoyale) {
- if (isDuel)
- {
- canvas.innerHTML = `
- <div id="roadview" class="inactive" style="zIndex: 99999,position: "absolute", top: 0, left: 0, width: '100%', height: '100%',"> </div>
- `;
- }
- else if (isBullseye)
- {
- canvas.innerHTML = `
- <div id="roadview" class="game-panorama_panorama__ncMwh" style="zIndex: 99999,position: "absolute", top: 0, left: 0, width: '100%', height: '100%',"> </div>
- `;
- }
- else if (isLiveChallenge)
- {
- canvas.innerHTML = `
- <div id="roadview" class="game-panorama_panorama__Qpsxl" style="zIndex: 99999,position: "absolute", top: 0, left: 0, width: '100%', height: '100%',"> </div>
- `;
- }
- else
- {
- canvas.innerHTML = `
- <div id="roadview" class="br-game-layout__panorama" style="zIndex: 99999,position: "absolute", top: 0, left: 0, width: '100%', height: '100%',"> </div>
- `;
- }
- }
- else {
- canvas.innerHTML = `
- <div id="roadview" class="game-layout__panorama" style="zIndex: 99999,position: "absolute", top: 0, left: 0, width: '100%', height: '100%',"> </div>
- `;
- }
-
-
- var div = document.getElementById("player");
- if (isBullseye || isLiveChallenge)
- {
- div.prepend(canvas);
- }
- else
- {
- div.appendChild(canvas);
- }
-
- let SCRIPT;
- if (!partialCreateKakao)
- {
- SCRIPT = document.createElement("script");
- SCRIPT.async = true;
- // SCRIPT.type = "text/javascript";
- SCRIPT.src = `//dapi.kakao.com/v2/maps/sdk.js?appkey=${KAKAO_API_KEY}&autoload=false`;
- document.body.appendChild(SCRIPT);
- }
-
- function drawmapKakao()
- {
- kakao.maps.load(function () {
- var position = new kakao.maps.LatLng(33.450701, 126.560667);
- let roadviewContainer = document.getElementById('roadview');
- KakaoPlayer = new kakao.maps.Roadview(roadviewContainer);
- var panoId = 1023434522;
- KakaoPlayer.setPanoId(panoId, position);
- KAKAO_INJECTED = true;
- // Remove the compass from Kakao
- kakao.maps.event.addListener(KakaoPlayer, 'init', () => {
- const compassContainer = roadviewContainer.querySelector('div[id*="_box_util_"]');
- if (compassContainer) compassContainer.style.display = 'none';
- });
- kakao.maps.event.addListener(KakaoPlayer, 'panoid_changed', function() {
- if (defaultPanoIdChange && KakaoPlayer) {
- let latlng = KakaoPlayer.getPosition();
- let lat = latlng.getLat();
- let lng = latlng.getLng();
- let pID = KakaoPlayer.getViewpointWithPanoId();
- if (nextPlayer == "Kakao" && lat != 33.45047613915499)
- {
- // console.log("push");
- locHistory.push([lat, lng, pID.panoId, pID.pan]);
- switchCovergeButton.lat = lat;
- switchCovergeButton.lng = lng;
- switchCovergeButton.heading = pID.pan;
- }
- let btn = document.querySelector("button[data-qa='undo-move']");
- if (locHistory.length > 1 && (btn != null)) {
- btn.disabled = false;
- btn.classList.remove('styles_disabled__2YdHD');
- }
- // console.log(locHistory);
- }
- defaultPanoIdChange = true;
- });
- kakao.maps.event.addListener(KakaoPlayer, 'viewpoint_changed', function() {
- // console.log("pov_listener attached");
- let pID = KakaoPlayer.getViewpointWithPanoId();
- if (locHistory.length > 0 && nextPlayer == "Kakao") {
- switchCovergeButton.heading = pID.pan;
- locHistory[locHistory.length - 1][3] = pID.pan;
- }
- if (GooglePlayer) {
- const { heading, pitch } = GooglePlayer.getPov()
- if ((!almostEqual(pID.pan, heading) || !almostEqual(pID.tilt, pitch)) && nextPlayer == "Kakao") {
- // Updating the google street view POV will update the compass
- GooglePlayer.setPov({ heading: pID.pan, pitch: pID.tilt })
- }
- }
- // console.log(locHistory);
- })
- });
- }
-
- if (partialCreateKakao)
- {
- drawmapKakao();
- }
- else
- {
- SCRIPT.onload = () => {
- drawmapKakao();
- myHighlight("Kakao API Loaded");
- resolve();
- };
- }
-
- }
- }
- else {
- resolve();
- }
- });
- }
-
- function getTMSTilePath(tile) {
- var yN = Math.pow(2, tile.zoom) - tile.y - 1;
- // console.log([tile.zoom,tile.x,yN]);
- if (planetType == "Moon")
- {
- // document.getElementById("Moon (Labels)").click();
- return "https://s3.amazonaws.com/opmbuilder/301_moon/tiles/w/hillshaded-albedo/" + tile.zoom + "/" + tile.x + "/" + yN + ".png";
- }
- else if (planetType == "Mars")
- {
- // document.getElementById("Mars (Labels)").click();
- return "http://s3-eu-west-1.amazonaws.com/whereonmars.cartodb.net/celestia_mars-shaded-16k_global/" + tile.zoom + "/" + tile.x + "/" + yN + ".png";
- }
- else
- {
- return handleSpURL(document.getElementById(planetType).url, tile.x, tile.y, tile.zoom);
- }
- // else if (planetType == "GTAV")
- // {
- // return "https://tiles.mapgenie.io/games/gta5/los-santos/satellite/" + tile.zoom + "/" + tile.x + "/" + yN + ".png";
- // // https://tiles.mapgenie.io/games/gta5/los-santos/road/4/2/5.png
- // }
- // else if (planetType == "GTASA")
- // {
- // return "https://tiles.mapgenie.io/games/grand-theft-auto-san-andreas/san-andreas/satellite-v1/" + tile.zoom + "/" + tile.x + "/" + yN + ".png";
- // // "https://tiles.mapgenie.io/games/grand-theft-auto-san-andreas/san-andreas/atlas-v1/" + tile.zoom + "/" + tile.x + "/" + yN + ".png";
- // }
- }
-
- function injectMSPlayer() {
- return new Promise((resolve, reject) => {
- if (!MS_INJECTED) {
- if (MS_API_KEY === "") {
- let canvas = document.getElementById("player");
- console.log("No MS Key")
- }
- else {
-
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
- let SCRIPT;
- if (!partialCreateMS)
- {
- SCRIPT = document.createElement("script");
- SCRIPT.type = "text/javascript";
- SCRIPT.async = true;
- SCRIPT.src = `https://www.bing.com/api/maps/mapcontrol?key=${MS_API_KEY}`;
- document.body.appendChild(SCRIPT);
- }
- let canvas = document.createElement("msmap");
- if (isBattleRoyale) {
- if (isDuel)
- {
- canvas.innerHTML = `<div id="ms-player" class="inactive" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- else if (isBullseye)
- {
- canvas.innerHTML = `<div id="ms-player" class="game-panorama_panorama__ncMwh" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- else if (isLiveChallenge)
- {
- canvas.innerHTML = `<div id="ms-player" class="game-panorama_panorama__Qpsxl" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- else
- {
- canvas.innerHTML = `<div id="ms-player" class="br-game-layout__panorama" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- }
- else {
- canvas.innerHTML = `<div id="ms-player" class="game-layout__panorama" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
-
- var div = document.getElementById("player");
- if (isBullseye || isLiveChallenge)
- {
- div.prepend(canvas);
- }
- else
- {
- div.appendChild(canvas);
- }
- function drawmapMS()
- {
- try
- {
- MSStreetPlayer = new Microsoft.Maps.Map(document.getElementById('ms-player'),{disableStreetsideAutoCoverage: true, allowHidingLabelsOfRoad: true});
- MS_INJECTED = true;
- // MSStreetPlayer.setOptions({
- // minZoom: 13
- // });
- Microsoft.Maps.Events.addHandler(MSStreetPlayer, 'viewchangeend', function () { updateView(MSStreetPlayer); });
- function updateView(map) {
- let ctrm = map.getCenter();
- if (nextPlayer == "Bing Streetside" && (switchCovergeButton.lat !== ctrm.latitude && switchCovergeButton.lng !== ctrm.longitude))
- {
- let heading2 = bearing(switchCovergeButton.lat, switchCovergeButton.lng, ctrm.latitude, ctrm.longitude)
- // console.log("moved");
- // console.log([switchCovergeButton.lat, switchCovergeButton.lng, ctrm.latitude, ctrm.longitude])
- // console.log(heading2);
- locHistory.push([ctrm.latitude, ctrm.longitude, heading2]);
- switchCovergeButton.lat = ctrm.latitude;
- switchCovergeButton.lng = ctrm.longitude;
- switchCovergeButton.heading = heading2;
- let btn = document.querySelector("button[data-qa='undo-move']");
- if (locHistory.length > 1 && (btn != null)) {
- btn.disabled = false;
- btn.classList.remove('styles_disabled__2YdHD');
- }
- }
- }
- }
- catch(error)
- {
- console.log(error);
- // console.log("Retry MS");
- // setTimeout(drawmapMS(), 1000);
- }
-
- }
-
- if (partialCreateMS)
- {
- // drawmapMS();
- if (isBullseye)
- {
- setTimeout(drawmapMS(), 1000);
- }
- else
- {
- drawmapMS();
- }
- resolve();
- }
- else
- {
- SCRIPT.addEventListener('load', () => {
- myHighlight("Bing Maps API loaded");
- let timeout = 0;
- let interval = setInterval(() => {
- // console.log(timeout);
- if (timeout >= 40) {
- reject();
- clearInterval(interval);
- }
- if (document.getElementById('ms-player') !== null && Microsoft.Maps.Map !== typeof undefined) {
- drawmapMS();
- resolve();
- clearInterval(interval);
- }
- timeout += 1;
- }, 1000);
- })
- }
- }
- }
- else {
- resolve();
- }
- });
- }
-
-
-
- function injectMapillaryPlayer() {
- return new Promise((resolve, reject) => {
- if (!MAPILLARY_INJECTED) {
- if (MAPILLARY_API_KEY === "") {
- let canvas = document.getElementById("player");
- console.log("No Mapillary Key")
- }
- else {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
-
- let SCRIPT;
- if (!partialCreateMapillary)
- {
- SCRIPT = document.createElement("script");
- SCRIPT.type = "text/javascript";
- SCRIPT.async = true;
- SCRIPT.src = `https://unpkg.com/mapillary-js@4.0.0/dist/mapillary.js`;
- document.body.appendChild(SCRIPT);
- document.querySelector('head').innerHTML += '<link href="https://unpkg.com/mapillary-js@4.0.0/dist/mapillary.css" rel="stylesheet"/>';
- }
- let canvas = document.createElement("mmap");
- if (isBattleRoyale) {
- if (isDuel)
- {
-
- canvas.innerHTML = `<div id="mapillary-player" class="inactive" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- else if (isBullseye)
- {
- canvas.innerHTML = `<div id="mapillary-player" class="game-panorama_panorama__ncMwh" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- else if (isLiveChallenge)
- {
- canvas.innerHTML = `<div id="mapillary-player" class="game-panorama_panorama__Qpsxl" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- else
- {
- canvas.innerHTML = `<div id="mapillary-player" class="br-game-layout__panorama" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
- }
- else {
- canvas.innerHTML = `<div id="mapillary-player" class="game-layout__panorama" style="zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'"></div>`;
- }
-
- var div = document.getElementById("player");
- if (isBullseye || isLiveChallenge)
- {
- div.prepend(canvas);
- // setTimeout(drawmapMS(), 1000);
- }
- else
- {
- div.appendChild(canvas);
- }
-
- function drawMapML()
- {
- var {Viewer} = mapillary;
-
- MapillaryPlayer = new Viewer({
- accessToken: MAPILLARY_API_KEY,
- container: 'mapillary-player', // the ID of our container defined in the HTML body
- });
-
- MapillaryPlayer.on('image', async (event) => {
- // cnt = cnt + 1;
- // console.log(cnt);
- let image = event.image;
- let pos = image.originalLngLat;
- let cond = true;
- for (const element of locHistory) {
- if (element[2] == image.id)
- {
- cond = false;
- }
- }
- if (cond)
- {
- switchCovergeButton.lat = pos.lat;
- switchCovergeButton.lng = pos.lng;
- switchCovergeButton.heading = image.compassAngle;
- // console.log(pos);
- locHistory.push([pos.lat, pos.lng, image.id, image.compassAngle]);
- }
- let btn = document.querySelector("button[data-qa='undo-move']");
- if (btn !== null && locHistory.length > 1)
- {
- btn.disabled = false;
- btn.classList.remove('styles_disabled__2YdHD');
- }
- });
-
- MAPILLARY_INJECTED = true;
- }
- if (partialCreateMapillary)
- {
- drawMapML();
- }
- else
- {
-
- SCRIPT.addEventListener('load', () => {
- myHighlight("Mapillary API Loaded");
- // resolve(BMap);
- drawMapML();
- resolve();
- })
- }
- }
- }
- else {
- resolve();
- }
- });
- }
-
- function changeInnerHTML(canvas1, init)
- {
- canvas1.style.display = "";
- var div = document.getElementById("player");
- if (isBullseye || isLiveChallenge)
- {
- div.prepend(canvas1);
- }
- else
- {
- div.appendChild(canvas1);
- }
-
- let canvas;
- if (init)
- {
- canvas = document.createElement("div");
- canvas.id = "mapbox-player";
- canvas.style = `zIndex: 99999, position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'`;
- canvas1.appendChild(canvas);
- }
- else
- {
- document.getElementById("mapbox-player").classList.remove("inactive", "game-panorama_panorama__ncMwh", "game-panorama_panorama__Qpsxl", "br-game-layout__panorama", "game-layout__panorama", "game-panorama_panorama__rdhFg");
- }
- canvas = document.getElementById("mapbox-player");
- if (isBattleRoyale) {
- if (isDuel)
- {
- canvas.classList.add("inactive");
- }
- else if (isBullseye)
- {
- canvas.classList.add("game-panorama_panorama__ncMwh");
- }
- else if (isLiveChallenge)
- {
- canvas.classList.add("game-panorama_panorama__Qpsxl");
- }
- else
- {
- canvas.classList.add("br-game-layout__panorama");
- }
- }
- else {
- canvas.classList.add("game-layout__panorama");
- }
- if (rainLayer)
- {
- MapboxPlayer.resize();
- }
- // console.log(canvas);
-
- }
-
- function updateSunPosition(sunPos) {
- MapboxPlayer.setPaintProperty('sky', 'sky-atmosphere-sun', sunPos);
- }
-
- function getSunPosition(date) {
- const center = MapboxPlayer.getCenter();
- const sunPos = SunCalc.getPosition(
- date || Date.now(),
- center.lat,
- center.lng
- );
- const sunAzimuth = 180 + (sunPos.azimuth * 180) / Math.PI;
- const sunAltitude = 90 - (sunPos.altitude * 180) / Math.PI;
- return [sunAzimuth, sunAltitude];
- }
-
- // function handleRainLayer()
- // {
- // if (typeof RainLayer !== typeof undefined)
- // {
-
- // MapboxPlayer.addLayer(rainLayer);
-
- // console.log("Rain Layer loaded");
- // }
- // else
- // {
- // setTimeout(handleRainLayer, 1000);
- // }
- // }
-
- function skyLayer(reset, time, style)
- {
- try
- {
- if (reset == "reset")
- {
- let tm = [360, 30];
-
- MapboxPlayer.addLayer({
- 'id': 'sky',
- 'type': 'sky',
- 'paint': {
- 'sky-opacity': [
- 'interpolate',
- ['linear'],
- ['zoom'],
- 0,
- 0,
- 5,
- 0.3,
- 8,
- 1
- ],
- // set up the sky layer for atmospheric scattering
- 'sky-type': 'atmosphere',
- // explicitly set the position of the sun rather than allowing the sun to be attached to the main light source
- 'sky-atmosphere-sun': tm,
- // set the intensity of the sun as a light source (0-100 with higher values corresponding to brighter skies)
- 'sky-atmosphere-sun-intensity': 5
- }
- });
- time = tm;
- MapboxPlayer.addLayer(rainLayer)
- // handleRainLayer();
-
-
- // Reset Fog
- }
- let percentage;
- // console.log(time);
-
- if (time[1] <= 75)
- {
- percentage = 0;
- }
- else if (time[1] > 75 && time[1] <= 90)
- {
- percentage = (90 - time[1]) / 20;
- }
- else
- {
- percentage = 1;
- }
-
- // console.log(MapboxPlayer.getStyle());
-
- if (style == "Satellite")
- {
- MapboxPlayer.setPaintProperty(
- 'heatmap',
- 'heatmap-opacity',
- percentage * 0.35
- );
- MapboxPlayer.setPaintProperty(
- 'satellite',
- 'raster-brightness-max',
- 0.25 + (1 - percentage) * 0.75
- );
- MapboxPlayer.setPaintProperty(
- 'road-simple',
- 'line-opacity',
- percentage * 0.25
- );
- MapboxPlayer.setPaintProperty(
- 'bridge-case-simple',
- 'line-opacity',
- percentage * 0.25
- );
- MapboxPlayer.setPaintProperty(
- 'bridge-simple',
- 'line-opacity',
- percentage * 0.25
- );
- }
- let fogVal = 100 - percentage * 100;
- // console.log(`rgba(${parseInt(fogVal)}, ${parseInt(fogVal)}, ${parseInt(fogVal)}, 1.0)`)
- let val = [0, 5, 0.1];
- if (ms_radius < 10000)
- {
- val[1] = ms_radius / 10000 * 4 + 1;
- }
- MapboxPlayer.setFog({ 'color': `hsl(0, 0, ${fogVal}%)` , 'range': [val[0], val[1]],'horizon-blend': val[2]});
- // console.log(MapboxPlayer.getStyle());
- }
- catch (error) {
- console.error(error);
- // expected output: ReferenceError: nonExistentFunction is not defined
- // Note - error messages will vary depending on browser
- }
- }
-
-
- // function fetchTime(lat, lng)
- // {
- // return new Promise((resolve, reject) => {
- // fetch(`https://api.timezonedb.com/v2.1/get-time-zone?key=D95ISGQ041BQ&format=json&by=position&lat=${lat}&lng=${lng}`)
- // .then((response) => {resolve(response.json())})
- // .catch((error) => {console.log(error);});
- // });
- // }
- // fetchTime(global_lat, global_lng).then((data) => {
-
- function styleMapboxAll(initId, initDim, initStyle, endId, endDim, endStyle, resetDist)
- {
- let rtVal = false;
- const sunPositions = SunCalc.getTimes(
- Date.now(),
- global_lat,
- global_lng
- );
-
- if (resetDist)
- {
- let tempRadius;
- if (endDim == "3D" || endDim == "2.5D")
- {
- tempRadius = ms_radius * 0.5;
- }
- else
- {
- tempRadius = ms_radius;
- }
- let loc_centre = {lat: global_lat, lng: global_lng};
- let latlngBounds = getBBox2(loc_centre, tempRadius);
- // console.log([latlngBounds[0], latlngBounds[1]], [latlngBounds[2], latlngBounds[3]])
- let mpBounds = [
- [latlngBounds[1], latlngBounds[2]], // Southwest coordinates
- [latlngBounds[3], latlngBounds[0]] // Northeast coordinates
- ];
- MapboxPlayer.flyTo({center: [global_lng, global_lat], zoom: 9});
- MapboxMarker.setLngLat([global_lng, global_lat]);
- MapboxPlayer.setMaxBounds(mpBounds);
-
-
-
- }
- let sunPos = getSunPosition(sunPositions[endStyle]);
- updateSunPosition(sunPos);
-
- if (initId !== endId)
- {
- if (endId == "Satellite")
- {
- MapboxPlayer.setStyle("mapbox://styles/jupaoqq/cl0xjs63k003a15ml3essawbk");
- }
- else
- {
- MapboxPlayer.setStyle("mapbox://styles/jupaoqq/cl0ro0tm0001l14nyi17a91rs");
- }
- setTimeout(() => {
- skyLayer("reset", sunPos, endId);
- dimChange();
- }, 1000);
- rtVal = true;
- }
- else
- {
- skyLayer(endId, sunPos, endId);
- dimChange();
- }
-
- function dimChange()
- {
- if (initDim !== endDim || initId !== endId)
- {
- if (endDim.includes("2D"))
- {
- MapboxPlayer.setPitch(0);
- MapboxPlayer.dragRotate.disable();
- MapboxPlayer.touchZoomRotate.disableRotation();
- MapboxPlayer.setPaintProperty(
- 'building-extrusion',
- 'fill-extrusion-opacity',
- 0
- );
- rainLayer.setMeshOpacity(0);
- rainLayer.setRainColor("rgba(204, 204, 255, 0)");
- }
- else
- {
- MapboxPlayer.dragRotate.enable();
- MapboxPlayer.touchZoomRotate.enableRotation();
- if (endDim.includes("2.5D"))
- {
- MapboxPlayer.setPaintProperty(
- 'building-extrusion',
- 'fill-extrusion-opacity',
- 0
- );
- }
- else
- {
- MapboxPlayer.setPaintProperty(
- 'building-extrusion',
- 'fill-extrusion-opacity',
- 0.8
- );
- }
- rainLayer.setMeshOpacity(0.1);
- rainLayer.setRainColor("rgba(204, 204, 255, 1)");
- }
- if (!MapboxPlayer.getSource('mapbox-dem')) {
- MapboxPlayer.addSource('mapbox-dem', {
- 'type': 'raster-dem',
- 'url': 'mapbox://mapbox.mapbox-terrain-dem-v1',
- 'tileSize': 512,
- 'maxzoom': 14
- });
- // add the DEM source as a terrain layer with exaggerated height
- MapboxPlayer.setTerrain({ 'source': 'mapbox-dem', 'exaggeration': 1.5 });
- }
-
- }
- }
-
- return rtVal;
-
- }
-
- function injectMapboxPlayer() {
- return new Promise((resolve, reject) => {
- if (!MAPBOX_INJECTED) {
- if (MAPBOX_API_KEY === "") {
- let canvas = document.getElementById("player");
- console.log("No Mapbox Key")
- }
- else {
- let [teleportBtn, teleportReverse, teleportMenu, teleportMoreBtn, teleportLessBtn, teleportDistResetBtn, switchCovergeButton, mainMenuBtn, timeMachineBtn, timeMachineOlderBtn, timeMachineNewerBtn, MinimapBtn, OverlayBtn, HelpBtn, TeleportArisBtn, satelliteSwitchButton, mosaicBtn] = setButtons();
-
-
- let canvas = document.createElement("sat-map");
- canvas.id = "sat_map";
- canvas.classList.add("sat_map");
- changeInnerHTML(canvas, true);
-
-
- // mapbox://styles/jupaoqq/cl0rnlwp9001914mz2vpinynt
- // mapbox://styles/jupaoqq/cl0ro0tm0001l14nyi17a91rs
-
- let SCRIPT;
- if (!partialCreateMapbox)
- {
- const SCRIPT2 = document.createElement("script");
- SCRIPT2.type = "text/javascript";
- SCRIPT2.async = true;
- SCRIPT2.src = `https://cdnjs.cloudflare.com/ajax/libs/suncalc/1.8.0/suncalc.min.js`;
- document.body.appendChild(SCRIPT2);
-
- SCRIPT = document.createElement("script");
- SCRIPT.type = "text/javascript";
- SCRIPT.async = true;
- SCRIPT.src = `https://api.mapbox.com/mapbox-gl-js/v2.7.0/mapbox-gl.js`;
- document.body.appendChild(SCRIPT);
- document.querySelector('head').innerHTML += '<link href="https://api.mapbox.com/mapbox-gl-js/v2.7.0/mapbox-gl.css" rel="stylesheet"/>';
- SCRIPT.addEventListener('load', () => {
- const SCRIPT3 = document.createElement("script");
- SCRIPT3.type = "text/javascript";
- SCRIPT3.async = true;
- SCRIPT3.src = `https://cdn.jsdelivr.net/npm/mapbox-gl-rain-layer@latest/dist/mapbox-gl-rain-layer.min.js`;
- document.body.appendChild(SCRIPT3);
- SCRIPT3.addEventListener('load', () => {
- myHighlight("Mapbox API and Rainlayer Loaded");
- // resolve(BMap);
- mapboxgl.accessToken = MAPBOX_API_KEY;
- MapboxPlayer = new mapboxgl.Map({
- container: 'mapbox-player', // container ID
- style: 'mapbox://styles/jupaoqq/cl0xjs63k003a15ml3essawbk', // style URL
- center: [0, 0], // starting position [lng, lat]
- zoom: 15, // starting zoom
- pitch: 0
- });
- console.log("New Mapbox API Call");
- MapboxMarker = new mapboxgl.Marker()
- .setLngLat([0, 0])
- .addTo(MapboxPlayer);
- MapboxPlayer.addControl(new mapboxgl.NavigationControl(), 'top-left');
- MapboxPlayer.addControl(new mapboxgl.ScaleControl({}));
- MapboxPlayer.on('load', () => {
- MapboxPlayer.addSource('mapbox-dem', {
- 'type': 'raster-dem',
- 'url': 'mapbox://mapbox.mapbox-terrain-dem-v1',
- 'tileSize': 512,
- 'maxzoom': 14
- });
- // add the DEM source as a terrain layer with exaggerated height
- MapboxPlayer.setTerrain({ 'source': 'mapbox-dem', 'exaggeration': 1.5 });
- rainLayer = new RainLayer({
- id: 'rain',
- source: 'rainviewer',
- scale: 'noaa'
- });
- // TODO
- // MapboxPlayer.setFog({'range': [-1, 1.5], 'color': `rgba(255, 255, 255, 1.0)`,'horizon-blend': 0.1});
- skyLayer("reset", "", "Satellite");
-
-
- });
-
- });
- });
-
-
- MAPBOX_INJECTED = true;
- resolve();
-
- }
- else
- {
- resolve();
- }
- }
- }
- else {
- resolve();
- }
- });
- }
-
-
-
- function handleMapillary(latlng, options)
- {
- console.log("handleMapillary")
- handleMapillaryHelper(latlng, options).then((data) => {
- //console.log(data.data)
- let idToSet = 0;
- let curDist = 100000000;
- for (const element of data.data) {
- // console.log(element)
- if (element.hasOwnProperty("computed_geometry"))
- {
- try {
- let rCord = element.computed_geometry["coordinates"];
- let dist = distance(latlng.lat,latlng.lng,rCord[1],rCord[0])
- if (dist < curDist)
- {
- idToSet = element.id;
- curDist = dist
- }
- } catch (e) {
- console.log("Error")
- }
- }
- }
- if (idToSet !== 0)
- {
- MapillaryPlayer.moveTo(idToSet).then(
- image => { //console.log(image);
- },
- error => { console.log(error); });
- }}).catch((error) => {
- console.log(error);
- });
- }
-
- function handleMapillaryHelper(latlng, options)
- {
- return new Promise((resolve, reject) => {
- // console.log("1")
- let bbox = getBBox(latlng, options.meters);
- let URL = "https://graph.mapillary.com/images?access_token={0}&fields=id,computed_geometry&bbox={1}&limit={2}".replace('{0}', MAPILLARY_API_KEY).replace('{1}', bbox).replace('{2}', options.limit)
- // console.log(URL)
- fetch(URL)
- .then((response) => {resolve(response.json())})
- .catch((error) => {console.log(error);});
- });
- }
-
-
- /**
- * Minimap presets
- */
-
- let water_name_only =
- [
- {
- "elementType": "geometry",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "administrative",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "landscape",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "poi",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "road",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "transit",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- }
- ]
- let country_name_only =
- [
- {
- "elementType": "geometry",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "administrative",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "administrative.country",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "on"
- }
- ]
- },
- {
- "featureType": "landscape",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "poi",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "road",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "transit",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "water",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- }
- ]
-
- let no_label_or_terrain =
- [
- {
- "elementType": "geometry",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "administrative",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "landscape",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "poi",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "road",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "transit",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "water",
- "stylers": [
- {
- "visibility": "on"
- }
- ]
- },
- {
- "featureType": "water",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- }
- ]
-
- let no_label =
- [
- {
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "administrative",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- }
- ]
-
- let blank =
-
- [
- {
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- }
- ]
-
- let thick_border =
-
- [
- {
- "featureType": "administrative.country",
- "elementType": "geometry.stroke",
- "stylers": [
- {
- "weight": 1.5
- }
- ]
- },
- {
- "featureType": "administrative.province",
- "elementType": "geometry.stroke",
- "stylers": [
- {
- "weight": 3.5
- }
- ]
- }
- ]
-
- let Indonesia =
- [
- {
- "featureType": "administrative",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "landscape",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "poi.park",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "road",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "transit",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "water",
- "elementType": "labels",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- }
- ]
-
- let dark = [
- {
- "elementType": "geometry",
- "stylers": [
- {
- "color": "#212121"
- }
- ]
- },
- {
- "elementType": "labels.icon",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#757575"
- }
- ]
- },
- {
- "elementType": "labels.text.stroke",
- "stylers": [
- {
- "color": "#212121"
- }
- ]
- },
- {
- "featureType": "administrative",
- "elementType": "geometry",
- "stylers": [
- {
- "color": "#757575"
- }
- ]
- },
- {
- "featureType": "administrative.country",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#9e9e9e"
- }
- ]
- },
- {
- "featureType": "administrative.land_parcel",
- "stylers": [
- {
- "visibility": "off"
- }
- ]
- },
- {
- "featureType": "administrative.locality",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#bdbdbd"
- }
- ]
- },
- {
- "featureType": "poi",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#757575"
- }
- ]
- },
- {
- "featureType": "poi.park",
- "elementType": "geometry",
- "stylers": [
- {
- "color": "#181818"
- }
- ]
- },
- {
- "featureType": "poi.park",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#616161"
- }
- ]
- },
- {
- "featureType": "poi.park",
- "elementType": "labels.text.stroke",
- "stylers": [
- {
- "color": "#1b1b1b"
- }
- ]
- },
- {
- "featureType": "road",
- "elementType": "geometry.fill",
- "stylers": [
- {
- "color": "#2c2c2c"
- }
- ]
- },
- {
- "featureType": "road",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#8a8a8a"
- }
- ]
- },
- {
- "featureType": "road.arterial",
- "elementType": "geometry",
- "stylers": [
- {
- "color": "#373737"
- }
- ]
- },
- {
- "featureType": "road.highway",
- "elementType": "geometry",
- "stylers": [
- {
- "color": "#3c3c3c"
- }
- ]
- },
- {
- "featureType": "road.highway.controlled_access",
- "elementType": "geometry",
- "stylers": [
- {
- "color": "#4e4e4e"
- }
- ]
- },
- {
- "featureType": "road.local",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#616161"
- }
- ]
- },
- {
- "featureType": "transit",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#757575"
- }
- ]
- },
- {
- "featureType": "water",
- "elementType": "geometry",
- "stylers": [
- {
- "color": "#000000"
- }
- ]
- },
- {
- "featureType": "water",
- "elementType": "labels.text.fill",
- "stylers": [
- {
- "color": "#3d3d3d"
- }
- ]
- }
- ]
-
- let default_preset = []
-
- let presetMinimap = [[default_preset, "Default"],
- [blank, "Blank"],
- [water_name_only, "Oceanman"],
- [country_name_only, "Impossible"],
- [no_label_or_terrain, "Streaks"],
- [no_label, "Easy 5K"],
- [Indonesia, "POI only"],
- [dark, "Dark Mode"],
- [thick_border, "Borders"],
- [default_preset, "Satellite"],
- [default_preset, "Terrain"],
- [default_preset, "Hybrid"],
- [custom, "Custom", customMode]]
-
- let GEOJSON_INVISIBLE =
- {
- strokeOpacity: 0,
- fillOpacity: 0,
- clickable: false,
- }
-
- let presetOverlay = [["Clear",""],
- ["Coverage",""],
- ["Official",""],
- ["OSM",""],
- ["City Lights",""],
- ["Watercolor",""],
- ["Toner",""],
- ["Fire",""],
- ["Longitude", "https://raw.githubusercontent.com/Jupaoqq/Jupaoqq.github.io/main/lonl.json"],
- ["Latitude", "https://raw.githubusercontent.com/Jupaoqq/Jupaoqq.github.io/main/latl.json"],
- ["US County","https://raw.githubusercontent.com/CodeForCary/CountyDataUSA5m/master/cb_2017_us_county_5m.json"],
- ["France","https://raw.githubusercontent.com/gregoiredavid/france-geojson/master/departements.geojson"],
- ["Time Zone", "https://raw.githubusercontent.com/treyerl/timezones/master/timezones_wVVG8.geojson"],
- ["UK Parliament", "https://raw.githubusercontent.com/martinjc/UK-GeoJSON/master/json/electoral/gb/wpc.json"],
- ["Custom", YOUR_URL]]
-
- let satType = [["Satellite","2.5D"],
- ["Satellite","3D"],
- ["Satellite","2D"],
- ["Road", "3D"],
- ["Road", "2D"]]
-
- let satStyle = [["solarNoon","Noon"],
- ["sunriseEnd","Sunrise"],
- ["goldenHourEnd","Morning"],
- ["goldenHour","Evening"],
- ["sunsetStart","Sunset"],
- ["nadir","Midnight"],
- ["getlocal","Local Time"],
- ];
-
- let spaceMinimap = [["Earth",""],
- ["Moon", "https://s3.amazonaws.com/opmbuilder/301_moon/tiles/w/hillshaded-albedo/"],
- ["Moon (Labels)", "https://cartocdn-gusc.global.ssl.fastly.net/opmbuilder/api/v1/map/named/opm-moon-basemap-v0-1/all/"],
- ["Mars", "http://s3-eu-west-1.amazonaws.com/whereonmars.cartodb.net/celestia_mars-shaded-16k_global/"],
- ["Mars (Labels)", "https://cartocdn-gusc.global.ssl.fastly.net/opmbuilder/api/v1/map/named/opm-mars-basemap-v0-2/all/"],
- ["Mars-Viking", "http://s3-eu-west-1.amazonaws.com/whereonmars.cartodb.net/viking_mdim21_global/"],
- ]
-
- let spaceMinimap2 = [["Mercury", "mercury/mercury_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=MESSENGER_May2013"],
- ["Venus", "venus/venus_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=MAGELLAN_color"],
- ["Phobos", "mars/phobos_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=VIKING"],
- ["Deimos", "mars/deimos_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=VIKING"],
- ["Ceres", "asteroid_belt/ceres_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=Ceres_FC_global"],
- ["Vesta", "asteroid_belt/vesta_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=Dawn_HAMO_global"],
- ["Jupiter", "jupiter/jupiter_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI"],
- ["Callisto", "jupiter/callisto_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=GALILEO_VOYAGER"],
- ["Europa", "jupiter/europa_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=GALILEO_VOYAGER"],
- ["Ganymede", "jupiter/ganymede_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=GALILEO_VOYAGER"],
- ["Io", "jupiter/io_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=SSI_VGR_color"]
- ]
-
- let spaceMinimap3 = [["Saturn", "saturn/saturn_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI"],
- ["Dione", "saturn/dione_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI_VOYAGER"],
- ["Enceladus", "saturn/enceladus_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI"],
- ["Iapetus", "saturn/iapetus_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI_VOYAGER"],
- ["Mimas", "saturn/mimas_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI_MIMAS_MOSAIC"],
- ["Rhea", "saturn/rhea_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI_VOYAGER"],
- ["Tethys", "saturn/tethys_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI"],
- ["Titan", "saturn/titan_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=CASSINI"],
- ["Uranus", "uranus/uranus_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=JHT_VOYAGER_HST"],
- ["Neptune", "neptune/neptune_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=JHT_VOYAGER"],
- ["Pluto", "pluto/pluto_simp_cyl.map&SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=NEWHORIZONS_PLUTO_MOSAIC"],
- ]
-
- let spaceList = ["Moon", "Mars", "Mercury", "Venus", "Phobos", "Deimos", "Ceres", "Vesta", "Jupiter", "Callisto", "Europa", "Ganymede", "Io",
- "Saturn", "Dione", "Enceladus", "Iapetus", "Mimas", "Rhea", "Tethys", "Titan", "Uranus", "Neptune", "Pluto", "Solar System"];
-
- function handleSpURL(url, x1, y1, z1)
- {
- function tile2long(x,z) {
- return (x/Math.pow(2,z)*360-180);
- }
- function tile2lat(y,z) {
- var n=Math.PI-2*Math.PI*y/Math.pow(2,z);
- return (180/Math.PI*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));
- }
-
- let NWlon = tile2long(x1,z1)
- let NWlat = tile2lat(y1,z1)
- let SElon = tile2long(x1 + 1,z1)
- let SElat = tile2lat(y1 + 1,z1)
- return "https://planetarymaps.usgs.gov/cgi-bin/mapserv?map=/maps/" + url + "&WIDTH=256&HEIGHT=256&CRS=EPSG%3A4326&STYLES=&BBOX=" + `${SElat}%2C${NWlon}%2C${NWlat}%2C${SElon}`;
- }
-
- // return `https://tiles.mapgenie.io/games/gta5/los-santos/satellite/${z}/${x}/${y}.png`
- // return `https://mapsv0.bdimg.com/tile/?udt=20200825&qt=tile&styles=pl&x=${x}&y=${y}&z=${z+2}`
-
- let langDict = {
- "sn": ["fr"],
- "za": ["af"],
- "mg": ["mg", "fr"],
- "tn": ["ar"],
- "bd": ["bn"],
- "kh": ["km"],
- "in": ["hi"],
- "cn": ["zh"],
- "hk": ["zh"],
- "id": ["id"],
- "ir": ["fa"],
- "il": ["he"],
- "jp": ["ja"],
- "jo": ["ar"],
- "ky": ["ru", "ky"],
- "la": ["lo"],
- "my": ["ms"],
- "mn": ["mn"],
- "np": ["ne"],
- "ru": ["ru"],
- "sg": ["zh"],
- "kr": ["ko"],
- "lk": ["ta"],
- "tw": ["zh"],
- "th": ["th"],
- "ae": ["ar"],
- "vn": ["vi"],
- "al": ["sq"],
- "ad": ["es", "fr"],
- "at": ["de"],
- "be": ["nl", "fr"],
- "bg": ["bg"],
- "hr": ["hr"],
- "cy": ["el"],
- "cz": ["cs"],
- "dk": ["da"],
- "ee": ["et"],
- "fo": ["fo"],
- "fi": ["fi"],
- "fr": ["fr"],
- "de": ["de"],
- "gr": ["el"],
- "hu": ["hu"],
- "is": ["is"],
- "ie": ["ga"],
- "it": ["it"],
- "lv": ["lv"],
- "lt": ["lt"],
- "lu": ["lb", "fr", "de"],
- "mc": ["fr"],
- "nl": ["nl"],
- "mk": ["mk"],
- "no": ["no"],
- "pl": ["pl"],
- "pt": ["pt"],
- "ro": ["ro"],
- "sm": ["it"],
- "rs": ["sr"],
- "sk": ["sk"],
- "si": ["sl"],
- "es": ["es"],
- "se": ["sv"],
- "ch": ["de", "fr"],
- "tr": ["tr"],
- "ua": ["uk"],
- "cw": ["nl"],
- "do": ["es"],
- "gt": ["es"],
- "mx": ["es"],
- "pr": ["es"],
- "ar": ["es"],
- "bo": ["es"],
- "br": ["pt"],
- "cl": ["es"],
- "ec": ["es"],
- "pe": ["es"],
- "uy": ["es"]
- };
-
- // ch, lu, be, ad