papercats/client.js

103 lines
3.0 KiB
JavaScript
Raw Normal View History

2019-01-16 03:57:36 -05:00
/* global $ */
var io = require("socket.io-client");
var client = require("./src/game-client");
2019-02-22 00:22:21 -05:00
var config = require("./config.json");
2019-01-16 03:57:36 -05:00
function run(port, flag) {
2019-04-18 12:25:36 -04:00
client.renderer = flag ? require("./src/mode/god") : require("./src/mode/player");
client.connectGame("//" + window.location.hostname + ":" + port, $("#name").val(), function(success, msg) {
2019-01-16 03:57:36 -05:00
if (success) {
$("#main-ui").fadeIn(1000);
2019-02-22 03:09:27 -05:00
$("#begin, #wasted").fadeOut(1000);
2019-01-16 03:57:36 -05:00
}
else {
2019-02-21 11:19:33 -05:00
$("#error").text(msg);
2019-01-16 03:57:36 -05:00
}
2019-02-22 00:22:21 -05:00
}, flag);
2019-01-16 03:57:36 -05:00
}
2019-02-21 11:19:33 -05:00
2019-03-27 09:53:43 -04:00
$(document).ready(function() {
var err = $("#error");
2019-01-16 03:57:36 -05:00
if (!window.WebSocket) {
err.text("Your browser does not support WebSockets!");
2019-01-16 03:57:36 -05:00
return;
}
err.text("Loading... Please wait"); //TODO: show loading screen
2019-11-30 00:24:45 -05:00
(function() {
var port = location.port;
var socket = io(`//${location.hostname}${port ? ":" + port : ""}`, {
forceNew: true,
upgrade: false,
transports: ["websocket"]
});
socket.on("connect", function() {
socket.emit("pings");
});
socket.on("pongs", function() {
socket.disconnect();
err.text("All done, have fun!");
$("#name").keypress(function(evt) {
if (evt.which === 13) run();
});
2019-11-30 00:24:45 -05:00
$(".start").removeAttr("disabled").click(function(evt) {
run(port);
});
2019-11-30 00:24:45 -05:00
$(".spectate").removeAttr("disabled").click(function(evt) {
run(port, true);
});
2019-11-30 00:24:45 -05:00
});
socket.on("connect_error", function() {
err.text("Cannot connect with server. This probably is due to misconfigured proxy server. (Try using a different browser)");
});
})();
2019-01-16 03:57:36 -05:00
});
//Event listeners
$(document).keydown(function(e) {
var newHeading = -1;
switch (e.which) {
case 38: newHeading = 0; break; //UP
case 87: newHeading = 0; break; //UP (W)
case 39: newHeading = 1; break; //RIGHT
case 68: newHeading = 1; break; //RIGHT (D)
case 40: newHeading = 2; break; //DOWN
case 83: newHeading = 2; break; //DOWN (S)
case 37: newHeading = 3; break; //LEFT
case 65: newHeading = 3; break; //LEFT (A)
default: return; //Exit handler for other keys
}
client.changeHeading(newHeading);
2019-02-22 07:26:25 -05:00
//e.preventDefault();
2019-01-16 03:57:36 -05:00
});
$(document).on("touchmove", function(e) {
e.preventDefault();
});
$(document).on("touchstart", function (e1) {
var x1 = e1.targetTouches[0].pageX;
var y1 = e1.targetTouches[0].pageY;
$(document).one("touchend", function (e2) {
var x2 = e2.changedTouches[0].pageX;
var y2 = e2.changedTouches[0].pageY;
var deltaX = x2 - x1;
var deltaY = y2 - y1;
var newHeading = -1;
if (deltaY < 0 && Math.abs(deltaY) > Math.abs(deltaX)) newHeading = 0;
else if (deltaX > 0 && Math.abs(deltaY) < deltaX) newHeading = 1;
else if (deltaY > 0 && Math.abs(deltaX) < deltaY) newHeading = 2;
else if (deltaX < 0 && Math.abs(deltaX) > Math.abs(deltaY)) newHeading = 3;
client.changeHeading(newHeading);
});
});
2019-02-22 03:09:27 -05:00
2019-02-22 04:35:16 -05:00
$(".menu").on("click", function() {
2019-02-22 07:26:25 -05:00
client.disconnect();
2019-02-22 03:09:27 -05:00
$("#main-ui, #wasted").fadeOut(1000);
$("#begin").fadeIn(1000);
});
2019-02-22 07:26:25 -05:00
$(".toggle").on("click", function() {
$("#settings").slideToggle();
});