aboutsummaryrefslogtreecommitdiff
path: root/features/settings/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'features/settings/index.js')
-rw-r--r--features/settings/index.js332
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