diff options
Diffstat (limited to 'src/socketConnection.js')
-rw-r--r-- | src/socketConnection.js | 299 |
1 files changed, 299 insertions, 0 deletions
diff --git a/src/socketConnection.js b/src/socketConnection.js new file mode 100644 index 0000000..fbf6910 --- /dev/null +++ b/src/socketConnection.js @@ -0,0 +1,299 @@ +import WebsiteCommunicator from "./../soopyApis/websiteCommunicator" +import socketData from "../soopyApis/socketData" +import logger from "./logger" +import metadata from "./metadata" + +class SoopyV2Server extends WebsiteCommunicator { + constructor() { + super(socketData.serverNameToId.soopyv2) + + // this.spammedMessages = [] + + this.errorsToReport = [] + + this.lbdatathing = undefined + this.lbdatathingupdated = 0 + + this.reportErrorsSetting = undefined + + this.onPlayerStatsLoaded = undefined + this.apithingo = undefined + + this.userCosmeticPermissions = undefined + + this.eventData = undefined + + this.itemPricesCache = new Map() + this.itemPricesCache2 = new Map() + + this.cookieCount = 0 + this.cookieData = undefined + this.cookieDataUpdated = 0 + + this.chEvent = ["???", "???"] + + register("step", () => { + if (this.cookieDataUpdated && Date.now() - this.cookieDataUpdated > 60000) { + this.cookieData = 0 + this.cookieDataUpdated = 0 + } + }).setDelay(60) + + register("worldLoad", () => { + this.itemPricesCache2.clear() + for (let val of this.itemPricesCache.values()) { + this.itemPricesCache2.set(val[0], val[1]) + } + this.itemPricesCache.clear() + }) + } + + requestItemPrice(json, uuid) { + this.sendData({ + type: "loadItemWorth", + id: uuid, + itemData: json + }) + } + + joinApiQ() { + this.sendData({ + type: "apiready" + }) + } + + respondQueue(id, data) { + this.sendData({ + type: "api", + id, + data + }) + } + + onData(data) { + if (data.type === "updateCosmeticPermissions") { + this.userCosmeticPermissions = data.permissions + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.cosmetics) global.soopyv2featuremanagerthing.features.cosmetics.class.updateUserCosmeticPermissionSettings() + } + if (data.type === "updateCosmetics") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.cosmetics) global.soopyv2featuremanagerthing.features.cosmetics.class.setUserCosmeticsInformation(data.uuid, data.cosmetics) + } + // if(data.type === "spammedmessage"){ + // this.spammedMessages.push(...data.messages) + // } + if (data.type === "playerStatsQuick") { + if (this.onPlayerStatsLoaded) this.onPlayerStatsLoaded(data.data) + } + if (data.type === "updateLbDataThing") { + this.lbdatathing = data.data + this.lbdatathingupdated = data.lastUpdated + } + if (data.type === "dungeonMapData") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.dungeonMap) global.soopyv2featuremanagerthing.features.dungeonMap.class.updateDungeonMapData(data.data) + } + if (data.type === "dungeonMapData2") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.dungeonMap) global.soopyv2featuremanagerthing.features.dungeonMap.class.updateDungeonMapData2(data.data) + } + if (data.type === "slayerSpawnData") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.slayers) global.soopyv2featuremanagerthing.features.slayers.class.slayerLocationData(data.location, data.user) + } + if (data.type === "inquisData") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.events) global.soopyv2featuremanagerthing.features.events.class.inquisData(data.location, data.user) + } + if (data.type === "vancData") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.nether) global.soopyv2featuremanagerthing.features.nether.class.vanqData(data.location, data.user) + } + if (data.type === "cookies") { + this.cookieCount = data.cookies + } + if (data.type === "cookieLbData") { + this.cookieData = { + cookieLeaderboard: data.cookieLeaderboard, + clickingNow: data.clickingNow + } + + this.cookieDataUpdated = Date.now() + } + if (data.type === "joinEventResult") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.eventsGUI) global.soopyv2featuremanagerthing.features.eventsGUI.class.joinEventResult(data.response) + } + if (data.type === "eventData") { + this.eventData = data + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.eventsGUI) global.soopyv2featuremanagerthing.features.eventsGUI.class.eventsDataUpdated(data) + } + if (data.type === "pollEvent") { + if (global.soopyv2featuremanagerthing && global.soopyv2featuremanagerthing.features.eventsGUI) global.soopyv2featuremanagerthing.features.eventsGUI.class.pollEventData(data.admin) + } + if (data.type === "chEvent") { + this.chEvent = data.event + } + if (data.type === "api") { + if (this.apithingo) this.apithingo(data.uuid, data.packetId) + } + if (data.type === "itemWorth") { + this.itemPricesCache.set(data.id, data.price) + } + } + + onConnect() { + if (this.reportErrorsSetting && !this.reportErrorsSetting.getValue()) return + + this.errorsToReport.forEach(data => { + this.sendData({ + type: "error", + data: data + }) + }) + this.errorsToReport = [] + } + + updateCosmeticsData(data) { + this.sendData({ + type: "cosmeticSettings", + data: data + }) + } + + // sendMessageToServer(message, lobbyId){ + // this.sendData({ + // type: "chatMessage", + // message: message, + // lobbyId: lobbyId + // }) + // } + + reportError(error, description) { + // ChatLib.chat(JSON.stringify(error)) + return + if (this.reportErrorsSetting && !this.reportErrorsSetting.getValue()) return + let data = { + lineNumber: error.lineNumber, + fileName: error.fileName.replace(/file:.+?ChatTriggers/g, "file:"), //The replace is to not leak irl names thru windows acct name + message: error.message, + description: description, + stack: error.stack.replace(/file:.+?ChatTriggers/g, "file:"), + modVersion: metadata.version, + modVersionId: metadata.versionId, + } + + if (this.connected && this.reportErrorsSetting) { + this.sendData({ + type: "error", + data: data + }) + } else { + this.errorsToReport.push(data) + } + } + + requestPlayerStats(uuid, username) { + this.sendData({ + type: "loadStatsQuick", + uuid: uuid, + username: username + }) + } + + requestPlayerStatsCache(uuid, username) { + this.sendData({ + type: "loadStatsQuickCache", + uuid: uuid, + username: username + }) + } + + sendDungeonData(names, data) { + this.sendData({ + type: "dungeonMapData", + names: names, + data: data + }) + } + + sendDungeonData2(names, data) { + this.sendData({ + type: "dungeonMapData2", + names: names, + data: data + }) + } + + sendSlayerSpawnData(data) { + this.sendData({ + type: "slayerSpawnData", + data: data, + name: ChatLib.removeFormatting(Player.getDisplayName().text) + }) + } + sendInquisData(data) { + this.sendData({ + type: "inquisData", + data: data, + name: ChatLib.removeFormatting(Player.getDisplayName().text) + }) + } + + sendVancData(data) { + this.sendData({ + type: "vancData", + data: data, + name: ChatLib.removeFormatting(Player.getDisplayName().text) + }) + } + + setServer(server, area, areaFine) { + this.sendData({ + type: "server", + server, + area, + areaFine + }) + } + + cookiesGained(amount) { + this.cookieCount += amount + + this.sendData({ + type: "cookies", + amount: amount + }) + } + + joinEvent(code) { + this.sendData({ + type: "joinEvent", + code + }) + } + + pollEventData() { + this.sendData({ + type: "eventData" + }) + } + + pollEventCode(code) { + this.sendData({ + type: "pollEvent", + code + }) + } + + sendCHEventData(event, started) { + this.sendData({ + type: "chEvent2", + event, + started + }) + } +} + +if (!global.soopyV2Server) { + global.soopyV2Server = new SoopyV2Server() + + register("gameUnload", () => { + global.soopyV2Server = undefined + }) +} + +export default global.soopyV2Server
\ No newline at end of file |