- Add pokestops by dblclick on gmaps map
- Added heartbeat
- Added reconnect
This commit is contained in:
Felix 2016-08-28 21:31:00 +02:00
parent 00e2ed3fa7
commit d5f69faed0
4 changed files with 158 additions and 54 deletions

View File

@ -10,6 +10,13 @@ body {
overflow-x: hidden;
}
#map {
position: absolute;
left: calc(50% - 400px);
width: 800px;
height: 400px;
}
.view {
letter-spacing: 0px;
padding: 5px 25px !important;
@ -34,6 +41,14 @@ body {
text-align: left;
}
.ping {
position: absolute;
top: 0px;
left: 10px;
font-size: 18px;
letter-spacing: 0px;
}
.version {
font-size: 15px;
letter-spacing: 0px;

2
gmaps.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -9,9 +9,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="css/main.css">
<link rel="stylesheet" type="text/css" href="css/pure.min.css">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?key=X"></script>
<script src="./gmaps.js"></script>
</head>
<body class="body">
<p class="ping area" id="server_ping" style="position: absolute;top: 0px;left: 10px; display:none;">Ping: 0ms</p>
<div class="area">
<p>POGOserver</p>
<p id="version" class="version"> </p>
@ -30,6 +34,11 @@
<p class="info" id="connected_players">Connected players: 0</p>
<p class="login_area" style="padding-bottom: 15px;">World Manager</p>
<p><button class="btn color-1 view cmd_label label">Spawn</button><input class="btn color-1 view input login_input with_label" id="spawn_user" placeholder="Username" autocomplete="new-password"></input><input class="btn color-1 view input login_input with_label" autocomplete="new-password" id="spawn_pkmn" placeholder="Pokemon"></input><button id="submit_spawn" class="btn color-1 view login_input with_label submit">Submit</button></p>
<br/>
</div>
<div class="area" id="fort_manager" style="padding-bottom:500px;opacity:0;">
<div id="map"></div>
</div>
<script language="javascript" src="ajax.js"></script>

186
main.js
View File

@ -1,72 +1,150 @@
var loggedIn = false;
var loginTimeout = null;
(function() {
function setStatus(txt, color) {
connection_status.innerHTML = txt;
connection_status.style.color = color;
}
var loggedIn = false;
var loginTimeout = null;
setStatus("Connecting", "yellow");
var heartInterval = null;
var heartTimeout = null;
var heartTimedOut = true;
send({
action: "init"
}, function(res) {
if (res.success) {
setStatus("Connected!", "green");
var map = new GMaps({
el: "#map",
lat: 39.18875480450959,
lng: -96.58109955489635,
disableDoubleClickZoom: true,
dblclick: addFort
});
map.setZoom(20);
function addFort(e) {
let latLng = e.latLng.toString().split(",");
let lat = latLng[0].substring(1);
let lng = latLng[1].substring(0, latLng[1].length - 1);
let name = prompt("Enter fort name: ");
let description = prompt("Enter fort description: ");
send({
action: "addFortToPosition",
lat: lat,
lng: lng,
zoom: map.zoom,
name: name,
desc: description
}, function(res) {
console.log(res);
});
}
else {
setStatus("Connection failed!", "red");
return void 0;
function setStatus(txt, color) {
connection_status.innerHTML = txt;
connection_status.style.color = color;
}
});
login_attempt.addEventListener("click", function() {
var username = login_username.value;
var password = login_password.value;
setStatus("Connecting", "yellow");
send({
action: "login",
username: username,
password: password
action: "init"
}, function(res) {
if (res.success) {
login();
setStatus("Connected!", "green");
}
else {
setStatus("Login failed!", "red");
clearTimeout(loginTimeout);
loginTimeout = setTimeout(function() {
setStatus("Connected!", "green");
}, 3e3);
setStatus("Connection failed!", "red");
return void 0;
}
});
});
login_attempt.addEventListener("click", login);
submit_spawn.addEventListener("click", function() {
send({
action: "spawnPkmnToPlayer",
player: spawn_user.value,
pkmn: spawn_pkmn.value
}, function(res) {
console.log(res);
submit_spawn.addEventListener("click", function() {
send({
action: "spawnPkmnToPlayer",
player: spawn_user.value,
pkmn: spawn_pkmn.value
}, function(res) {
console.log(res);
});
});
});
function login() {
loggedIn = true;
login_area.style.display = "none";
setStatus("Logged in!", "green");
world_manager.style.display = "block";
send({
action: "getConnectedPlayers"
}, function(res) {
connected_players.innerHTML = "Connected players: " + res.connected_players;
});
send({
action: "getServerVersion"
}, function(res) {
server_version.innerHTML = "Server version: v" + res.version;
});
}
function login() {
var username = login_username.value;
var password = login_password.value;
send({
action: "login",
username: username,
password: password
}, function(res) {
if (res.success) {
afterLogin();
}
else {
setStatus("Login failed!", "red");
clearTimeout(loginTimeout);
loginTimeout = setTimeout(function() {
if (loggedIn) {
setStatus("Connected!", "green");
}
}, 3e3);
}
});
}
function afterLogin() {
loggedIn = true;
login_area.style.display = "none";
setStatus("Logged in!", "green");
world_manager.style.display = "block";
server_ping.style.display = "block";
fort_manager.style.opacity = 1;
initHeartBeat();
refreshConnectedPlayers();
getServerVersion();
}
function refreshConnectedPlayers() {
send({
action: "getConnectedPlayers"
}, function(res) {
connected_players.innerHTML = "Connected players: " + res.connected_players;
});
}
function getServerVersion() {
send({
action: "getServerVersion"
}, function(res) {
server_version.innerHTML = "Server version: v" + res.version;
});
}
function initHeartBeat() {
clearInterval(heartInterval);
heartInterval = setInterval(function() {
heartTimedOut = true;
var now = +new Date();
heartTimeout = setTimeout(function() {
if (heartTimedOut) {
console.error("Heartbeat timeout!");
loggedIn = false;
setStatus("Reconnecting..", "yellow");
login();
}
}, 5e3);
send({
action: "heartBeat",
timestamp: now
}, function(res) {
if (res.timestamp) {
heartTimedOut = false;
clearTimeout(heartTimeout);
var ping = res.timestamp - now;
server_ping.innerHTML = "Ping: " + ping + "ms";
refreshConnectedPlayers();
}
});
}, 3e3);
}
})();