diff options
Diffstat (limited to 'features/settings/index.js')
-rw-r--r-- | features/settings/index.js | 332 |
1 files changed, 0 insertions, 332 deletions
diff --git a/features/settings/index.js b/features/settings/index.js deleted file mode 100644 index 92fbeec..0000000 --- a/features/settings/index.js +++ /dev/null @@ -1,332 +0,0 @@ -/// <reference types="../../../CTAutocomplete" /> -/// <reference lib="es2015" /> -import Feature from "../../featureClass/class"; -import SoopyGuiElement from "../../../guimanager/GuiElement/SoopyGuiElement"; -import SoopyTextElement from "../../../guimanager/GuiElement/SoopyTextElement"; -import SoopyBoxElement from "../../../guimanager/GuiElement/SoopyBoxElement"; -import BoxWithToggleAndDescription from "../../../guimanager/GuiElement/BoxWithToggleAndDescription"; -import ButtonWithArrowAndDescription from "../../../guimanager/GuiElement/ButtonWithArrowAndDescription"; -import SoopyMouseClickEvent from "../../../guimanager/EventListener/SoopyMouseClickEvent"; -import SoopyContentChangeEvent from "../../../guimanager/EventListener/SoopyContentChangeEvent"; -import settingsCommunicator from "./settingsCommunicator"; -import GuiPage from "../soopyGui/GuiPage" -import { SoopyGui, SoopyRenderEvent } from "../../../guimanager"; -import TextBox from "../../../guimanager/GuiElement/TextBox"; -import locationSettingHolder from "./locationSettingHolder"; - - -class SettingsRenderer extends Feature { - constructor() { - super() - } - - onEnable() { - this.SettingPage = new SettingPage() - this.EditLocationsPage = new EditLocationsPage() - this.SettingPage.FeatureManager = this.FeatureManager - - this.registerStep(true, 1, () => { - if (!this.EditLocationsPage) return - - if (this.EditLocationsPage.needsExitPage) { - this.EditLocationsPage.goToPage(0, 500) - this.EditLocationsPage.needsExitPage = false - } - }) - - this.registerCommand("soopytogglesetting", (category, setting) => { - settingsCommunicator.settings?.[category]?.[setting]?.setValue(!settingsCommunicator.settings?.[category]?.[setting]?.getValue()) - }) - - } - - onDisable() { - this.EditLocationsPage = undefined - this.SettingPage = undefined - } -} - -class EditLocationsPage extends GuiPage { - - constructor() { - super(9) - - this.name = "Edit GUI Locations" - - this.needsExitPage = false - - this.soopyGui = new SoopyGui() - this.soopyGui._renderBackground = () => { } //remove background darkening - - - - this.soopyGui.ctGui.registerDraw((mouseX, mouseY, partialTicks) => { - this.renderGui(mouseX, mouseY) - this.soopyGui._render(mouseX, mouseY, partialTicks) - }) - this.soopyGui.ctGui.registerClicked((mouseX, mouseY, button) => { - this.clicked(mouseX, mouseY) - this.soopyGui._onClick(mouseX, mouseY, button) - }) - this.soopyGui.ctGui.registerMouseReleased((mouseX, mouseY) => { - this.released(mouseX, mouseY) - }) - - this.finaliseLoading() - } - - renderGui(mouseX, mouseY) { - for (let setting of locationSettingHolder.getData()) { - if (setting.parent) { - if (setting.parent.isEnabled()) { - setting.renderGui(mouseX, mouseY) - } - } else { - setting.renderGui(mouseX, mouseY) - } - } - } - - clicked(mouseX, mouseY) { - for (let setting of locationSettingHolder.getData()) { - if (setting.clicked(mouseX, mouseY)) return //dont allow the user to drag 2 locations at once - } - } - - released(mouseX, mouseY) { - for (let setting of locationSettingHolder.getData()) { - setting.released(mouseX, mouseY) - } - } - - onOpen() { - this.needsExitPage = true - - this.soopyGui.open() - } -} - -class SettingPage extends GuiPage { - constructor() { - super(10) - - this.name = "Settings" - - this.pages = [this.newPage(), this.newPage()] - - this.settingsCategoryArea = undefined - this.settingsTitle = undefined - this.settingsArea = undefined - this.modifyingFeature = false - this.featureLoadedTextBox = undefined - - this.SettingPage = undefined - - this.pages[0].addEvent(new SoopyRenderEvent().setHandler(() => { this.updateLocs() })) - - //############################################################################################### - // Settings Category Page - //############################################################################################### - - - let settingsCategoryTitle = new SoopyTextElement().setText("ยง0Settings").setMaxTextScale(3).setLocation(0.1, 0.05, 0.5, 0.1) - this.pages[0].addChild(settingsCategoryTitle) - - this.settingsCategorySearch = new TextBox().setPlaceholder("Search...").setLocation(0.6, 0.05 + 0.0125, 0.3, 0.075) - this.pages[0].addChild(this.settingsCategorySearch) - - this.settingsCategorySearch.text.addEvent(new SoopyContentChangeEvent().setHandler(() => { - this.updateSettingCategories() - })) - - this.settingsCategoryArea = new SoopyGuiElement().setLocation(0.1, 0.2, 0.8, 0.8).setScrollable(true) - this.pages[0].addChild(this.settingsCategoryArea) - - - //############################################################################################### - // Settings Page - //############################################################################################### - - this.settingsTitle = new SoopyTextElement().setMaxTextScale(3).setLocation(0.1, 0.05, 0.8, 0.1) - this.pages[1].addChild(this.settingsTitle) - - this.settingsArea = new SoopyGuiElement().setLocation(0.1, 0.2, 0.8, 0.8).setScrollable(true) - this.pages[1].addChild(this.settingsArea) - - - this.finaliseLoading() - } - - onOpen() { - this.updateSettingCategories() - this.settingsCategoryArea.location.scroll.x.set(0, 0) - this.settingsCategoryArea.location.scroll.y.set(0, 0) - this.settingsCategoryArea._scrollAmount = 0 - - this.settingsCategorySearch.setText("") - this.updateSettingCategories() - } - - onOpenPage(p) { - if (p === 1) this.updateSettingCategories() - - this.closeSidebarPage() - } - - updateSettingCategories() { - - let search = this.settingsCategorySearch.text.text - - this.settingsCategoryArea.children = [] - - let height = 0 - - Object.keys(this.FeatureManager.featureMetas).sort((a, b) => { return a.sortA - b.sortA }).forEach((f) => { - - let meta = this.FeatureManager.featureMetas[f] - - let showing = search.length === 0 - - if (!showing) { - showing = meta.name.toLowerCase().includes(search.toLowerCase()) || meta.description.toLowerCase().includes(search.toLowerCase()) - } - - if (!showing) { - settingsCommunicator.getModuleSettings(f).forEach(setting => { - - if (setting && (setting.name.toLowerCase().includes(search.toLowerCase()) || setting.description.toLowerCase().includes(search.toLowerCase()))) { - showing = true - } - }) - } - - if (!showing) return - - let isHidden = meta.isHidden - if (typeof isHidden === "string") { - isHidden = require("../" + f + "/" + isHidden).hidden(this.FeatureManager) - } - if (isHidden) return - - let category = new ButtonWithArrowAndDescription().setText("&0" + meta.name).setDesc("&0" + meta.description).setLocation(0, height, 1, 0.15) - category.addEvent(new SoopyMouseClickEvent().setHandler(() => { this.clickedOpenCategory(f) })) - - this.settingsCategoryArea.addChild(category) - - height += 0.175 - - - if (search.length > 0) { - settingsCommunicator.getModuleSettings(f).forEach(setting => { - - if (setting && (setting.name.toLowerCase().includes(search.toLowerCase()) || setting.description.toLowerCase().includes(search.toLowerCase()))) { - - setting.getGuiObject().location.location.y.set(height, 0) - this.settingsCategoryArea.addChild(setting.getGuiObject()) - - height += 0.025 + setting.getGuiObject().location.size.y.get() - - setting.update() - } - }) - } - }) - - - // this.FeatureManager.features = {}; enabled features - } - - updateSettings(category) { - let meta = this.FeatureManager.featureMetas[category] - - this.settingsArea.children = [] - - this.settingsTitle.setText("&0" + this.FeatureManager.featureMetas[category].name) - - let height = 0 - - if (meta.isTogglable) { - let toggle = new BoxWithToggleAndDescription().setLocation(0, height, 1, 0.15).setText("&0Main toggle").setDesc("&0This is the main toggle for the whole category") - this.settingsArea.addChild(toggle) - - toggle.toggle.setValue(this.FeatureManager.isFeatureLoaded(category), 0) - - toggle.toggle.addEvent(new SoopyContentChangeEvent().setHandler((newVal, oldVal, resetFun) => { - //dont allow editing if currenately loading/unloading it - if (this.modifyingFeature) { - resetFun() - return - } - - //toggle the feature - this.modifyingFeature = true - this.FeatureManager.featureSettingsData[category].enabled = newVal - this.FeatureManager.featureSettingsDataLastUpdated = true - - if (!newVal && this.FeatureManager.isFeatureLoaded(category)) { - this.FeatureManager.unloadFeature(category) - } - if (newVal && !this.FeatureManager.isFeatureLoaded(category)) { - this.FeatureManager.loadFeature(category) - } - - - this.modifyingFeature = false - - this.updateSettings(category) - })) - height += toggle.location.size.y.get() + 0.045 - } - - if (!this.FeatureManager.isFeatureLoaded(category)) { - - //only show if feature issnt loaded - - let textBox = new SoopyBoxElement().setLocation(0, height, 1, 0.15) - .addChild(new SoopyTextElement().setText("&0Feature not loaded").setLocation(0, 0, 1, 0.5)) - .addChild(new SoopyTextElement().setText("&0Load feature to access settings").setLocation(0, 0.5, 1, 0.5)) - this.settingsArea.addChild(textBox) - return; - } - - settingsCommunicator.getModuleSettings(category).forEach(setting => { - setting.getGuiObject().location.location.y.set(height, 0) - this.settingsArea.addChild(setting.getGuiObject()) - - height += 0.045 + setting.getGuiObject().location.size.y.get() - - setting.update() - }) - } - - updateLocs() { - let totalHeight = 0 - - this.settingsArea.children.forEach(e => { - e.location.location.y.set(totalHeight, 0) - - totalHeight += e.location.size.y.get() + Math.min(0.045, e.location.size.y.get()) - }) - - totalHeight = 0 - - this.settingsCategoryArea.children.forEach(e => { - e.location.location.y.set(totalHeight, 0) - - totalHeight += e.location.size.y.get() + Math.min(0.025, e.location.size.y.get()) - }) - } - - clickedOpenCategory(category) { - this.updateSettings(category) - this.goToPage(2) - - this.settingsArea.location.scroll.x.set(0, 0) - this.settingsArea.location.scroll.y.set(0, 0) - this.settingsArea._scrollAmount = 0 - } -} - -module.exports = { - class: new SettingsRenderer() -}
\ No newline at end of file |