started implementing new ready system

This commit is contained in:
Miodec 2021-01-27 03:12:05 +00:00
parent a1f4bf0d80
commit fcf1b7bc89
4 changed files with 124 additions and 28 deletions

View file

@ -2912,7 +2912,8 @@ function startTest() {
mp_sendTestProgress(wpmAndRaw.wpm, wpmAndRaw.raw, acc, progress);
if (
MP.state === 21 &&
MP.state >= 21 &&
MP.state <= 28 &&
time >= 5 &&
currentInput === "" &&
inputHistory.length === 0
@ -3270,6 +3271,7 @@ function changePage(page) {
$(".page").removeClass("active");
$("#wordsInput").focusout();
if (page == "test" || page == "") {
if (MP.state >= 20 && MP.state <= 29 && !MP.room.isTyping) return;
pageTransition = true;
swapElements(activePage, $(".page.pageTest"), 250, () => {
pageTransition = false;

View file

@ -75,13 +75,16 @@ function mp_refreshUserList() {
});
let sortedUsers = usersArray.sort((a, b) => b.points - a.points);
sortedUsers.forEach((user) => {
let star = "";
let icons = "";
if (user.isLeader) {
if (user.sid === MP.socket.id) {
MP.room.isLeader = true;
}
star = '<i class="fas fa-star"></i>';
icons += '<i class="fas fa-star"></i>';
}
if (user.isReady) {
icons += '<i class="fas fa-check"></i>';
}
let pointsString;
if (user.points == undefined) {
@ -93,14 +96,14 @@ function mp_refreshUserList() {
<div class='user ${user.sid === MP.id ? "me" : ""}'>
<div class='name'>${
user.name
} ${star}</div><div class='points'>${pointsString}</div>
} ${icons}</div><div class='points'>${pointsString}</div>
</div>
`);
$(".pageTest #result .tribeResultChat .userlist .list").append(`
<div class='user ${user.sid === MP.id ? "me" : ""}'>
<div class='name'>${
user.name
} ${star}</div><div class='points'>${pointsString}</div>
} ${icons}</div><div class='points'>${pointsString}</div>
</div>
`);
});
@ -122,6 +125,7 @@ function mp_resetLobby() {
function mp_resetRace() {
$(".pageTest .tribePlayers").empty().addClass("hidden");
$(".pageTribe .lobby .tribePlayers").empty().addClass("hidden");
hideCountdown();
hideResultCountdown();
$(".pageTest #result .tribeResult").addClass("hidden");
@ -249,25 +253,31 @@ function mp_sendTestProgress(wpm, raw, acc, progress) {
function mp_refreshTestUserList() {
$(".tribePlayers").empty();
Object.keys(MP.room.users).forEach((sid) => {
let user = MP.room.users[sid];
let me = "";
if (sid === MP.socket.id) {
me = " me";
if (
MP.room.users[sid].isTyping ||
MP.room.users[sid].isReady ||
MP.room.users[sid].isLeader
) {
let user = MP.room.users[sid];
let me = "";
if (sid === MP.socket.id) {
me = " me";
}
$(".tribePlayers").append(`
<tr class="player ${me}" sid="${sid}">
<td class="name">${user.name}</td>
<td class="progress">
<div class="barBg">
<div class="bar" style="width: 0%;"></div>
</div>
</td>
<td class="stats">
<div class="wpm">-</div>
<div class="acc">-</div>
</td>
</tr>
`);
}
$(".tribePlayers").append(`
<tr class="player ${me}" sid="${sid}">
<td class="name">${user.name}</td>
<td class="progress">
<div class="barBg">
<div class="bar" style="width: 0%;"></div>
</div>
</td>
<td class="stats">
<div class="wpm">-</div>
<div class="acc">-</div>
</td>
</tr>
`);
});
$(".tribePlayers").removeClass("hidden");
@ -739,7 +749,11 @@ MP.socket.on("connect_error", (f) => {
MP.socket.on("mp_room_joined", (data) => {
mp_playSound("join");
MP.room = data.room;
if (MP.room === undefined) {
MP.room = data.room;
} else {
MP.room.users[data.sid] = { sid: data.sid, name: data.name };
}
if (MP.room.users[MP.socket.id].isLeader) {
MP.room.isLeader = true;
}
@ -756,15 +770,20 @@ MP.socket.on("mp_room_joined", (data) => {
);
$(".pageTribe .lobby .inviteLink .link").text(link);
mp_changeActiveSubpage("lobby");
MP.state = 10;
MP.state = data.room.state;
if (MP.state >= 20 && MP.state < 29) {
mp_refreshTestUserList();
}
// swapElements($(".pageTribe .prelobby"), $(".pageTribe .lobby"), 250, () => {
// MP.state = 10;
// // $(".pageTribe .prelobby").addClass('hidden');
// });
if (MP.room.isLeader) {
$(".pageTribe .lobby .startTestButton").removeClass("hidden");
$(".pageTribe .lobby .userReadyButton").addClass("hidden");
} else {
$(".pageTribe .lobby .startTestButton").addClass("hidden");
$(".pageTribe .lobby .userReadyButton").removeClass("hidden");
}
}
});
@ -787,6 +806,7 @@ MP.socket.on("mp_room_user_left", (data) => {
MP.room.isLeader = true;
MP.room.users[MP.socket.id].isLeader = true;
$(".pageTribe .lobby .lobbyButtons .startTestButton").removeClass("hidden");
$(".pageTribe .lobby .userReadyButton").addClass("hidden");
$(".pageTest #result #backToLobbyButton").removeClass("hidden");
$(".pageTest #result #nextTestButton").removeClass("hidden");
}
@ -841,6 +861,7 @@ MP.socket.on("mp_system_message", (data) => {
});
MP.socket.on("mp_room_test_start", (data) => {
if (!MP.room.isTyping) return;
// changePage('');
// mp_testCountdown();
// startTest();
@ -856,6 +877,7 @@ MP.socket.on("mp_room_test_start", (data) => {
});
MP.socket.on("mp_room_test_countdown", (data) => {
if (!MP.room.isTyping) return;
focusWords();
updateCountdown(data.val);
if (data.val <= 3) mp_playSound("cd");
@ -876,12 +898,13 @@ MP.socket.on("mp_room_finishTimer_over", (data) => {
});
MP.socket.on("mp_room_test_init", (data) => {
mp_refreshTestUserList();
if (!MP.room.isReady && !MP.room.isLeader) return;
mp_playSound("start");
MP.room.userGraphs = {};
MP.room.userFinished = false;
destroyAllGraphs();
seedrandom(data.seed, { global: true });
mp_refreshTestUserList();
changePage("");
restartTest(false, true, true);
showCountdown();
@ -933,6 +956,7 @@ MP.socket.on("mp_room_user_test_progress_update", (data) => {
let graphs = [];
MP.socket.on("mp_room_user_finished", (data) => {
MP.room.users[data.sid].isFinished = true;
$(`.tribeResult`).removeClass("hidden");
$(`.tribeResult table .player[sid=${data.sid}] .wpm .text`).text(
data.result.wpm
@ -1124,6 +1148,16 @@ MP.socket.on("mp_room_back_to_lobby", (data) => {
changePage("tribe");
});
MP.socket.on("mp_room_user_info_update", (data) => {
Object.keys(data.values).forEach((bool) => {
MP.room.users[data.sid][bool] = data.values[bool];
if (data.sid === MP.socket.id) {
MP.room[bool] = data.values[bool];
}
});
mp_refreshUserList();
});
$(".pageTribe #createPrivateRoom").click((f) => {
// activateFunbox("none");
// setLanguage("english");
@ -1300,6 +1334,11 @@ $(".pageTribe .lobby .lobbyButtons .startTestButton").click((e) => {
mp_startTest();
});
$(".pageTribe .lobby .lobbyButtons .userReadyButton").click((e) => {
$(".pageTribe .lobby .lobbyButtons .userReadyButton").addClass("hidden");
MP.socket.emit("mp_user_ready");
});
$(".pageTest #result #backToLobbyButton").click((e) => {
MP.socket.emit("mp_room_back_to_lobby");
});

View file

@ -3034,6 +3034,7 @@ key {
.lobby {
display: grid;
grid-template-areas:
"players players"
"currentsettings lobbyButtons"
"chat userlist"
"inviteLink inviteLink";
@ -3048,7 +3049,8 @@ key {
flex-direction: column;
gap: 1rem;
justify-content: center;
.startTestButton {
.startTestButton,
.userReadyButton {
background: var(--main-color);
color: var(--bg-color);
&:hover {
@ -3094,9 +3096,57 @@ key {
cursor: pointer;
}
}
.tribePlayers {
grid-area: players;
td {
padding: 0 0.5rem;
}
tr td:first-child {
padding-left: 0;
padding-right: 0.5rem;
}
tr td:last-child {
padding-left: 0.5rem;
padding-right: 0;
}
.player {
&.failed {
opacity: 0.25;
}
.name {
color: var(--sub-color);
}
.progress {
width: 100%;
.barBg {
width: 100%;
height: 0.25rem;
background: rgba(0, 0, 0, 0.1);
border-radius: var(--roundness);
.bar {
height: 0.25rem;
background: var(--sub-color);
left: 0;
border-radius: var(--roundness);
}
}
}
.stats {
text-align: right;
grid-template-columns: auto auto;
color: var(--sub-color);
display: flex;
justify-content: flex-end;
min-width: 90px;
.acc {
margin-left: 1rem;
}
}
}
}
}
}
.pageAccount {
display: grid;
gap: 1rem;

View file

@ -3704,6 +3704,7 @@
</div>
</div>
<div class="lobby hidden">
<table class="tribePlayers"></table>
<div class="currentSettings">
<div class="title">current settings</div>
<div class="groups"></div>
@ -3713,6 +3714,10 @@
<i class="fas fa-keyboard"></i>
Start test
</div>
<div class="button userReadyButton">
<i class="fas fa-check"></i>
Ready
</div>
<div class="button leaveRoomButton">
<i class="fas fa-door-open"></i>
Leave room