mirror of
https://github.com/MaciejkaG/statki.git
synced 2024-11-30 05:32:54 +01:00
a027313139
- Multiple visual improvements to animation - Added ship color dimming when they sunk - Added game ending (looks and works primitvely for now) - Added socket.io client error handling and alerts - Finished and improved hit registration and client hit display To-do: - Fix timers (currently resetting the timer is global, which by mistake affects other independent lobbies, critical bug) - Post-match stats - Improve many mechanics - Improve overall quality of the game
121 lines
3.2 KiB
JavaScript
121 lines
3.2 KiB
JavaScript
const socket = io();
|
|
|
|
// Handling server-sent events
|
|
socket.on("joined", (nick) => {
|
|
lockUI(true);
|
|
$("#oppNameField").html(nick);
|
|
switchView("preparingGame");
|
|
lockUI(false);
|
|
});
|
|
|
|
socket.on("player left", () => {
|
|
lockUI(true);
|
|
switchView("mainMenuView");
|
|
lockUI(false);
|
|
});
|
|
|
|
socket.on("gameReady", (gameId) => {
|
|
setTimeout(() => {
|
|
window.location.replace("/game?id=" + gameId);
|
|
}, 2000);
|
|
});
|
|
|
|
var nickname;
|
|
|
|
socket.emit("whats my nick", (myNickname) => {
|
|
nickname = myNickname;
|
|
});
|
|
|
|
socket.on("game start", (gameInfo) => {
|
|
let opp;
|
|
if (gameInfo.players[0]!==nickname) {
|
|
opp = gameInfo.players[0];
|
|
} else {
|
|
opp = gameInfo.players[1];
|
|
}
|
|
|
|
alert(`Grasz przeciwko: ${opp}`);
|
|
});
|
|
|
|
$("#createGameButton").on("click", function () {
|
|
lockUI(true);
|
|
socket.emit("create lobby", (response) => {
|
|
switch (response.status) {
|
|
case "ok":
|
|
$("#createGameCode").val(response.gameCode);
|
|
switchView("pvpCreateView");
|
|
lockUI(false);
|
|
break;
|
|
|
|
case "alreadyInLobby":
|
|
$("#createGameCode").val(response.gameCode);
|
|
switchView("pvpCreateView");
|
|
lockUI(false);
|
|
break;
|
|
|
|
default:
|
|
alert(`Wystąpił nieznany problem\nStatus: ${response.status}`);
|
|
lockUI(false);
|
|
break;
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#leaveGameButton").on("click", function () {
|
|
lockUI(true);
|
|
socket.emit("leave lobby", (response) => {
|
|
switch (response.status) {
|
|
case "ok":
|
|
switchView("mainMenuView");
|
|
lockUI(false);
|
|
break;
|
|
|
|
case "youreNotInLobby":
|
|
switchView("mainMenuView");
|
|
lockUI(false);
|
|
break;
|
|
|
|
default:
|
|
alert(`Wystąpił nieznany problem\nStatus: ${response.status}`);
|
|
switchView("mainMenuView");
|
|
lockUI(false);
|
|
break;
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#pvpMenuButton").on("click", function () {
|
|
switchView('pvpMenuView');
|
|
});
|
|
|
|
const form = document.getElementById('pvpJoinForm');
|
|
const input = document.getElementById('pvpJoinCode');
|
|
|
|
form.addEventListener('submit', (e) => {
|
|
e.preventDefault();
|
|
if (input.value && input.value.length === 6) {
|
|
lockUI(true);
|
|
socket.emit("join lobby", input.value, (response) => {
|
|
switch (response.status) {
|
|
case "ok":
|
|
$("#oppNameField").html(response.oppNickname);
|
|
switchView("preparingGame");
|
|
lockUI(false);
|
|
break;
|
|
|
|
//case "alreadyInLobby":
|
|
// $("#createGameCode").val(response.gameCode);
|
|
// switchView("pvpCreateView");
|
|
// lockUI(false);
|
|
// break;
|
|
|
|
default:
|
|
alert(`Wystąpił nieznany problem\nStatus: ${response.status}`);
|
|
lockUI(false);
|
|
switchView("mainMenuView");
|
|
break;
|
|
}
|
|
});
|
|
input.value = '';
|
|
}
|
|
}); |