diff options
Diffstat (limited to 'features/friendsGUI/index.js')
-rw-r--r-- | features/friendsGUI/index.js | 363 |
1 files changed, 0 insertions, 363 deletions
diff --git a/features/friendsGUI/index.js b/features/friendsGUI/index.js deleted file mode 100644 index bae266b..0000000 --- a/features/friendsGUI/index.js +++ /dev/null @@ -1,363 +0,0 @@ -/// <reference types="../../../CTAutocomplete" /> -/// <reference lib="es2015" /> -import { SoopyRenderEvent } from "../../../guimanager"; -import ButtonWithArrowAndDescription from "../../../guimanager/GuiElement/ButtonWithArrowAndDescription"; -import SoopyGuiElement from "../../../guimanager/GuiElement/SoopyGuiElement"; -import SoopyTextElement from "../../../guimanager/GuiElement/SoopyTextElement"; -import BoxWithLoading from "../../../guimanager/GuiElement/BoxWithLoading"; -import Feature from "../../featureClass/class"; -import GuiPage from "../soopyGui/GuiPage"; -import SoopyMouseClickEvent from "../../../guimanager/EventListener/SoopyMouseClickEvent"; -import ButtonWithArrow from "../../../guimanager/GuiElement/ButtonWithArrow"; -import ProgressBar from "../../../guimanager/GuiElement/ProgressBar"; -import logger from "../../logger"; -import SoopyMarkdownElement from "../../../guimanager/GuiElement/SoopyMarkdownElement"; - -class FriendsGui extends Feature { - constructor() { - super() - } - - onEnable() { - this.initVariables() - - this.GuiPage = new SettingPage() - - this.registerChat("&9&m-----------------------------------------------------&r&9${*}&r&9 ${*} &6Friends (Page ${pagenum} of ${maxpages})${friendslist}&r&9&m-----------------------------------------------------&r", (...args) => { this.GuiPage.friendListMessageEvent.call(this.GuiPage, ...args) }) - this.registerStep(true, 5, () => { this.GuiPage.regenGuiElements.call(this.GuiPage) }) - - this.registerStep(false, 1, () => { this.GuiPage.runComm.call(this.GuiPage) }) - } - - initVariables() { - this.GuiPage = undefined - } - - onDisable() { - this.initVariables() - } -} - - -class SettingPage extends GuiPage { - constructor() { - super(7) - - this.name = "Friends" - - this.pages = [this.newPage()] - - this.lastRender = 0 - - this.pages[0].addEvent(new SoopyRenderEvent().setHandler(() => { this.lastRender = Date.now() })) - - - let friendsTitle = new SoopyTextElement().setText("§0Friends").setMaxTextScale(3).setLocation(0.1, 0.05, 0.8, 0.1) - this.pages[0].addChild(friendsTitle) - - this.friendsArea = new SoopyGuiElement().setLocation(0.1, 0.2, 0.8, 0.8).setScrollable(true) - this.pages[0].addChild(this.friendsArea) - - this.loadedFriends = {} - - this.loadedPages = new Set() - - this.selectedFriends = new Set() - - this.allFriendsLoaded = false - - this.pageCount = undefined - - this.sidebar = new SoopyGuiElement() - - this.sidebarCustomPage = undefined - - this.sidebarMainPage = new SoopyGuiElement().setLocation(0, 0, 1, 1) - - this.heightPerFriend = 0.15 - this.loadingElement = new BoxWithLoading().setLocation(0, 0, 1, 0.175) - this.lastLoadedPage = 0 - this.maxLoadedPage = 0 - - this.unfriendMode = false - - this.loadingElement.addEvent(new SoopyRenderEvent().setHandler(() => { - if (Date.now() - this.lastLoadedPage > 1000) { - this.loadFriendPage(this.maxLoadedPage + 1) - } - })) - - this.commandQueue = [] - - this.updateSidebar() - - this.finaliseLoading() - } - - loadAllFriends() { - let commands = [] - for (let i = this.maxLoadedPage + 1; i < this.pageCount + 1; i++) { - commands.push("/friend list " + i) - } - - this.runCommandsArray(commands) - } - - runCommandsArray(commands, callback) { - this.sidebarCustomPage = new SoopyGuiElement().setLocation(0, 0, 1, 1) - - - this.sidebarCustomPage.addChild( - new ButtonWithArrow().setText("§0CANCEL!").setLocation(0.1, 0.20, 0.8, 0.1) - .addEvent(new SoopyMouseClickEvent().setHandler(() => { - this.commandQueue = [] - this.sidebarCustomPage = undefined - - this.updateSidebar() - - if (callback) callback() - }))) - - this.sidebarCustomPage.addChild(new SoopyTextElement().setText("§0Running commands...").setLocation(0.2, 0.1, 0.6, 0.1).setMaxTextScale(10)) - - - let progressBar = new ProgressBar().setProgress(0).setLocation(0.2, 0.3, 0.6, 0.1) - - let elements = [] - - this.sidebarCustomPage.addChild(progressBar) - for (let i = 0; i < commands.length; i++) { - let i2 = i - - elements.push(new SoopyTextElement().setText("§0" + commands[i]).setLocation(0.2, 0.4 + i * 0.025, 0.6, 0.025)) - - this.runCommand(commands[i], () => { - progressBar.setProgress((i2 + 1) / (commands.length), 1000) - - let e = elements.shift() - this.sidebarCustomPage.removeChild(e) - - elements.forEach((e, i) => { - e.location.location.y.set(0.4 + i * 0.025, 500) - }) - - if (i2 === commands.length - 1) { - this.sidebarCustomPage = undefined - - this.updateSidebar() - - if (callback) callback() - } - }) - } - - for (let e of elements) { - this.sidebarCustomPage.addChild(e) - } - } - - updateSidebar() { - this.sidebar.clearChildren() - if (this.sidebarCustomPage) { - this.sidebar.addChild(this.sidebarCustomPage) - return - } - - this.sidebarMainPage.clearChildren() - if (this.selectedFriends.size > 0) { - this.sidebarMainPage.addChild( - new SoopyTextElement().setText("§0" + this.selectedFriends.size + " friends selected").setMaxTextScale(2).setLocation(0.1, 0.05, 0.8, 0.1)) - - this.sidebarMainPage.addChild( - new ButtonWithArrow().setText("§0Deselect all").setLocation(0.1, 0.15, 0.8, 0.1) - .addEvent(new SoopyMouseClickEvent().setHandler(() => { - this.selectedFriends.clear() - - this.regenGuiElements() - this.updateSidebar() - }))) - this.sidebarMainPage.addChild( - new ButtonWithArrow().setText("§0Unfriend all").setLocation(0.1, 0.25, 0.8, 0.1) - .addEvent(new SoopyMouseClickEvent().setHandler(() => { - let commands = [] - - for (let f of this.selectedFriends) { - this.loadedFriends[f].exists = false - commands.push("/friend remove " + f) - } - this.selectedFriends.clear() - - this.runCommandsArray(commands) - this.updateSidebar() - }))) - - - } else { - if (!this.allFriendsLoaded) { - this.sidebarMainPage.addChild( - new ButtonWithArrow().setText("§0Load all friends").setLocation(0.1, 0.1, 0.8, 0.15) - .addEvent(new SoopyMouseClickEvent().setHandler(() => { - this.loadAllFriends() - - this.updateSidebar() - }))) - } else { - this.sidebarMainPage.addChild( - new ButtonWithArrow().setText("§0Select all").setLocation(0.1, 0.1, 0.8, 0.15) - .addEvent(new SoopyMouseClickEvent().setHandler(() => { - - Object.keys(this.loadedFriends).forEach((ign, i) => { - if (this.loadedFriends[ign].exists) { - this.selectedFriends.add(ign) - } - }) - - this.regenGuiElements() - this.updateSidebar() - }))) - } - } - - this.sidebar.addChild(this.sidebarMainPage) - } - - runCommand(command, callback) { - this.commandQueue.push([command, callback]) - } - - runComm() { - if (this.commandQueue.length > 0 && this.isOpen()) { - let [c, callback] = this.commandQueue.shift() - ChatLib.say(c) - logger.logMessage("running command " + c, 3) - callback() - } - } - - friendListMessageEvent(pagenum, maxpages, friendslist, event) { - if (Date.now() - this.lastLoadedPage < 3000 || this.isOpen()) { - cancel(event) - // console.log("Canceling") - } else { - return - } - - this.maxLoadedPage = parseInt(pagenum) - - this.pageCount = parseInt(maxpages) - - this.allFriendsLoaded = this.maxLoadedPage === this.pageCount - - friendslist = friendslist.replace(/\-\>newLine\<\-/g, "\n").split("\n") - friendslist.shift() - - friendslist.pop() - - friendslist.forEach((line, i) => { - let [name, location] = line.split(" is ") - - if (location) { - if (this.loadedFriends[ChatLib.removeFormatting(name)]) { - this.loadedFriends[ChatLib.removeFormatting(name)].nameWithFormatting = name - this.loadedFriends[ChatLib.removeFormatting(name)].exists = true - this.loadedFriends[ChatLib.removeFormatting(name)].currentGame = location.replace("in ", "").replace("currently offline", "&cCurrently offline") - this.loadedFriends[ChatLib.removeFormatting(name)].element.setText(name).setDesc("&7" + location.replace("in ", "").replace("currently offline", "&cCurrently offline")) - } else { - this.loadedFriends[ChatLib.removeFormatting(name)] = { - nameWithFormatting: name, - exists: true, - currentGame: location.replace("in ", "").replace("currently offline", "&cCurrently offline"), - element: new ButtonWithArrowAndDescription().setLocation(0, this.heightPerFriend * Object.keys(this.loadedFriends).length + 1, 1, this.heightPerFriend * 0.875).setText(name).setDesc("&7" + location.replace("in ", "").replace("currently offline", "&cCurrently offline")).addEvent(new SoopyMouseClickEvent().setHandler(() => { - this.clickedOn(ChatLib.removeFormatting(name)) - })) - } - this.loadedFriends[ChatLib.removeFormatting(name)].element.location.location.y.set(this.heightPerFriend * Object.keys(this.loadedFriends).length - this.heightPerFriend, 500 + 100 * i) - } - } - }); - - this.regenGuiElements() - } - - clickedOn(name) { - if (this.selectedFriends.has(name)) { - this.selectedFriends.delete(name) - } else { - this.selectedFriends.add(name) - } - // this.commandQueue.push("/friend remove " + ChatLib.removeFormatting(name)) - - // this.loadedFriends[ChatLib.removeFormatting(name)].exists = false - - this.regenGuiElements() - this.updateSidebar() - } - - regenGuiElements() { - if (Date.now() - this.lastRender < 1000) { - this.friendsArea.children = [] - - let scroll = this.friendsArea.location.scroll.y.get() / this.friendsArea.location.getHeightExact() - - let minY = -scroll - this.heightPerFriend * 0.875 - 0.5 - - let maxY = -scroll + 1.5 - - Object.keys(this.loadedFriends).forEach((ign, i) => { - /**@type {ButtonWithArrowAndDescription} */ - let e = this.loadedFriends[ign].element - - if (this.loadedFriends[ign].exists && e.location.location.y.get() > minY && e.location.location.y.get() < maxY) { - this.friendsArea.addChild(e) - - if (this.selectedFriends.has(ign)) { - e.setColor(100, 255, 100) - } else { - e.setColor(253, 255, 227) - } - } - }) - - this.loadingElement.location.location.y.set(this.heightPerFriend * Object.keys(this.loadedFriends).length, 500) - this.friendsArea.addChild(this.loadingElement) - - if (this.maxLoadedPage !== this.pageCount) { - this.loadingElement.visable = true - } else { - this.loadingElement.visable = false - } - } - } - - loadFriendPage(page, callback) { - if (this.loadedPages.has(page)) return - - this.loadedPages.add(page) - this.runCommand("/friends list " + page, () => { - this.lastLoadedPage = Date.now() - if (callback) callback() - }) - } - - onOpen() { - this.loadedFriends = {} - this.pageCount = undefined - this.lastLoadedPage = 0 - this.maxLoadedPage = 0 - - this.sidebarCustomPage = undefined - this.commandQueue = [] - - this.loadedPages.clear() - - this.regenGuiElements() - - this.loadFriendPage(1) - this.openSidebarPage(this.sidebar) - this.updateSidebar() - } -} - -module.exports = { - class: new FriendsGui() -}
\ No newline at end of file |