56 lines
2.3 KiB
JavaScript
56 lines
2.3 KiB
JavaScript
const GuildSearchResultStateChangedPacket = require("../Packets/GuildSearchResultStateChanged");
|
|
const GuildDataApplicantPacket = require("../Packets/GuildDataApplicant");
|
|
|
|
const Game = require("../Game/Game");
|
|
const { guilds } = Game;
|
|
|
|
const MAXIMUM_GUILD_REQUEST_MESSAGE_LENGTH = 256;
|
|
|
|
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 = ?";
|
|
|
|
module.exports = async function (ws, message, player) {
|
|
if (player.guild.id) return;
|
|
|
|
const guildID = message.getUint16(1);
|
|
|
|
const guild = guilds[guildID];
|
|
if (!guild) return;
|
|
|
|
// if (guild.hasRequested()) return
|
|
|
|
const requestMessageLength = message.getUint8(3);
|
|
if (requestMessageLength > MAXIMUM_GUILD_REQUEST_MESSAGE_LENGTH) return;
|
|
|
|
const requestMessage = requestMessageLength > 0 ? message.buffer.slice(4, 4 + requestMessageLength) : "test";
|
|
console.info(requestMessage, guildID, "GuildJoinRequestSubmitMessage");
|
|
const isRequestSuccessful = guild.addRequest(player.id, requestMessage);
|
|
if (!isRequestSuccessful) return console.info("shiitt");
|
|
|
|
const query = requestMessageLength > 0 ? QUERY_GUILD_REQUEST_SUBMIT : QUERY_GUILD_REQUEST_SUBMIT_DEFAULT;
|
|
const queryParameters = requestMessageLength > 0 ? [guildID, player.id, requestMessage, requestMessage] : [guildID, player.id, requestMessage];
|
|
|
|
const guildJoinRequestSubmitQuery = await execute(query, queryParameters);
|
|
console.info(guildJoinRequestSubmitQuery)
|
|
if (!guildJoinRequestSubmitQuery.data) return console.info("shit");
|
|
|
|
const guildSearchResultStateChanged = {
|
|
id: guildID,
|
|
hasApplied: true
|
|
};
|
|
|
|
const guildSearchResultStateChangedPacket = GuildSearchResultStateChangedPacket(guildSearchResultStateChanged);
|
|
player.map.registerIndividualNetworkPacket(player.id, guildSearchResultStateChangedPacket);
|
|
|
|
const guildDataApplicant = {
|
|
id: player.id,
|
|
pirateLevel: player.pirateLevel,
|
|
username: player.name
|
|
};
|
|
|
|
const guildDataApplicantPacket = GuildDataApplicantPacket(guildDataApplicant);
|
|
const topic = Game.getTopic(guild.topic);
|
|
topic.push(guildDataApplicantPacket);
|
|
};
|
|
|