module.exports = class { constructor(id, username, uuid, connectTime) { this.id = id; this.username = username; this.uuid = uuid; this.connectTime = connectTime; this.queue = new Buffer.alloc(0); this.playMode = 0; this.countryID = 0; this.spectators = []; this.spectating = 0; this.location = [0,0]; this.joinedChannels = []; this.currentMatch = null; this.matchSlotId = -1; // Presence data this.actionID = 0; this.actionText = ""; this.actionMods = 0; this.beatmapChecksum = ""; this.beatmapID = 0; this.currentMods = 0; // Cached db data this.rankedScore = 0; this.accuracy = 0; this.playCount = 0; this.totalScore = 0; this.rank = 0; this.pp = 0; } // Adds new actions to the user's queue addActionToQueue(newData) { this.queue = Buffer.concat([this.queue, newData], this.queue.length + newData.length); } // Updates the user's current action updatePresence(action) { this.actionID = action.status; this.actionText = action.statusText; this.beatmapChecksum = action.beatmapChecksum; this.currentMods = action.currentMods; this.actionMods = action.currentMods; this.playMode = action.playMode; this.beatmapID = action.beatmapId; } // Gets the user's score information from the database and caches it getNewUserInformationFromDatabase() { const userScoreDB = global.DatabaseHelper.getFromDB(`SELECT * FROM users_modes_info WHERE user_id = ${this.id} AND mode_id = ${this.playMode} LIMIT 1`); const userRankDB = global.DatabaseHelper.getFromDB(`SELECT user_id, pp_raw, FIND_IN_SET( pp_raw, ( SELECT GROUP_CONCAT( pp_raw ORDER BY pp_raw DESC ) FROM users_modes_info WHERE mode_id = ${this.playMode} ) ) AS rank FROM users_modes_info WHERE user_id = ${this.id} AND mode_id = ${this.playMode}`); if (userScoreDB == null || userRankDB == null) throw "fuck"; this.rankedScore = userScoreDB.ranked_score; this.totalScore = userScoreDB.total_score; this.accuracy = userScoreDB.avg_accuracy; this.playCount = userScoreDB.playcount; this.rank = userRankDB.rank; this.pp = userScoreDB.pp_raw; } // Clears out the user's queue clearQueue() { this.queue = new Buffer.alloc(0); } }