Initial commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
const LeaderboardPagePacket = require("../Packets/LeaderboardPage");
|
||||
|
||||
const leaderboards = require("../Data/leaderboard");
|
||||
|
||||
module.exports = async function (ws, message, player) {
|
||||
const leaderboardID = message.getUint8(1);
|
||||
const leaderboard = leaderboards[leaderboardID];
|
||||
if (!leaderboard) return console.time("leaderboard 1");
|
||||
|
||||
const page = message.getUint16(2);
|
||||
|
||||
if (!leaderboard.size) {
|
||||
const leaderboardCountFromDB = await execute(`SELECT COUNT(*) AS count FROM leaderboard_${leaderboardID + 1}`);
|
||||
if (!leaderboardCountFromDB.data) return console.info("leaderboard 2");
|
||||
|
||||
leaderboard.size = leaderboardCountFromDB.data[0].count;
|
||||
};
|
||||
|
||||
const lastPage = Math.ceil(leaderboard.size / 10);
|
||||
if (page <= 0 || page > lastPage) return;
|
||||
|
||||
let entries = null;
|
||||
|
||||
const startingFrom = (page - 1) * 10;
|
||||
const cachedEntries = leaderboard.cache[page];
|
||||
if (cachedEntries) entries = cachedEntries;
|
||||
else {
|
||||
const leaderboardFromDB = await query(`SELECT accounts.id, accounts.username, leaderboard_${leaderboardID + 1}.amount FROM leaderboard_${leaderboardID + 1} INNER JOIN accounts ON accounts.id = leaderboard_${leaderboardID + 1}.id ORDER BY amount DESC LIMIT ?, 10`, [startingFrom])
|
||||
if (!leaderboardFromDB.data) return console.info("leaderboard 3");
|
||||
|
||||
entries = leaderboardFromDB.data
|
||||
leaderboard.cache[page] = entries;
|
||||
};
|
||||
|
||||
const leaderboardPacket = LeaderboardPagePacket.init(leaderboardID, entries.length);
|
||||
entries.forEach(e => leaderboardPacket.update({
|
||||
username: e.username,
|
||||
amount: e.amount
|
||||
}));
|
||||
|
||||
player.map.registerIndividualNetworkPacket(player.id, leaderboardPacket.get());
|
||||
};
|
||||
Reference in New Issue
Block a user