44 lines
2.0 KiB
JavaScript
44 lines
2.0 KiB
JavaScript
const Game = require("../Game/Game");
|
|
const { players, guilds } = Game;
|
|
const buffer = new ArrayBuffer(3 + 250);
|
|
const view = new DataView(buffer);
|
|
|
|
const MAXIMUM_GUILD_REQUEST_MESSAGE_LENGTH = 256;
|
|
view.setUint8(0, 10);
|
|
view.setUint16(1, 213);
|
|
|
|
const QUERY_GUILD_REQUEST_SUBMIT = "INSERT INTO guildrequests (guildID, playerID, message) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE message = ?";
|
|
const QUERY_GUILD_REQUEST_SUBMIT_DEFAULT = "INSERT INTO guildrequests (guildID, playerID) VALUES (?, ?) ON DUPLICATE KEY UPDATE message = ?";
|
|
|
|
let str = new Array(250).fill("a").join("");
|
|
for (let i = 0, strLen = str.length; i < strLen; i++) {
|
|
const charCode = str.charCodeAt(i);
|
|
view.setUint8(3 + i, charCode);
|
|
};
|
|
|
|
module.exports = function (ws, message, player) {
|
|
const guildID = view.getUint16(1);
|
|
const guild = guilds[guildID];
|
|
if (!guild) return;
|
|
|
|
const playerID = 45; // player.id
|
|
const requestingPlayer = players[playerID];
|
|
// if (!requestingPlayer) return;
|
|
|
|
// if (requestingPlayer.guild) return console.log("has guild, can't request");
|
|
if (guild.hasRequested(playerID)) return console.log("has already requested");
|
|
|
|
const requestMessageLength = view.byteLength - 3;
|
|
console.log(requestMessageLength)
|
|
if (requestMessageLength > MAXIMUM_GUILD_REQUEST_MESSAGE_LENGTH) return console.log("request message length is > 256");
|
|
|
|
const requestMessage = view.byteLength > 3 ? view.buffer.slice(3, view.byteLength) : null;
|
|
const isRequestSuccessful = guild.addRequest(playerID, requestMessage);
|
|
if (!isRequestSuccessful) return console.log("request was unsuccessful");
|
|
|
|
const query = view.byteLength > 3 ? QUERY_GUILD_REQUEST_SUBMIT : QUERY_GUILD_REQUEST_SUBMIT_DEFAULT;
|
|
const queryParameters = view.byteLength > 3 ? [guildID, playerID, requestMessage, requestMessage] : [guildID, playerID, requestMessage];
|
|
console.log(requestMessage)
|
|
|
|
db.execute(query, queryParameters).then(_ => console.log("guild request is in the db"));
|
|
}; |