geoipguesser/webroot/game.js

71 lines
1.9 KiB
JavaScript
Raw Normal View History

2022-01-12 03:01:48 +01:00
let score = 0;
let round = 0;
async function main() {
let map = L.map('map').setView([0, 0], 3);
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
maxZoom: 18,
tileSize: 256,
zoomOffset: 0
}).addTo(map);
document.querySelector(".load").style.display = "block";
const data = await fetch("/data").then((res)=>res.json())
console.log("???")
document.querySelector(".data").innerText = `IP Address: ${data.ip}
WHOIS result (redacted):
${data.whois}`;
document.querySelector(".traceroute").innerText = data.traceroute;
let marker = L.marker([data.lat, data.lon]).addTo(map);
marker.setOpacity(0);
document.querySelector(".load").style.display = "none";
let guessMarker = new L.marker([0,0], {draggable: true}).addTo(map);
map.on('click', addMarker);
function getDistance(from, to) {
return ((from.distanceTo(to)).toFixed(0)/1000);
}
function addMarker(e){
map.removeLayer(guessMarker)
guessMarker = new L.marker(e.latlng, {draggable: true}).addTo(map);
guessMarker.on('drag', markerDrag)
}
function markerDrag(e) {
getDistance(marker.getLatLng(), guessMarker.getLatLng());
}
function result() {
const latlngs = [
guessMarker.getLatLng(),
marker.getLatLng()
];
L.polyline(latlngs).addTo(map);
const distance = getDistance(marker.getLatLng(), guessMarker.getLatLng());
const points = Math.floor((20000**(-distance/20000))*5000) // best I could do XD
score += points;
round++;
document.querySelector(".scoring").innerText = `This round: ${points}
Score total: ${score}
Round: ${round}`
marker.setOpacity(1);
alert("You were " + distance + "km away from your target! This has earned you " + points + " points.")
main();
}
document.querySelector('.guess').addEventListener("click", result)
}
window.addEventListener('DOMContentLoaded', main)