diff --git a/src/Config/ToggleSetting.js b/src/Config/ToggleSetting.js index 56a7152..dee9c3d 100644 --- a/src/Config/ToggleSetting.js +++ b/src/Config/ToggleSetting.js @@ -1,49 +1,10 @@ -import saveFramework from '@cookiemonsterteam/cookiemonsterframework/src/saveDataFunctions/saveFramework'; -import settings from '../Data/settings'; +import { saveAndLoadingFunctions } from '@cookiemonsterteam/cookiemonsterframework/src/index'; /** Functions related to toggling or changing an individual setting */ /** Used to name certain DOM or outside facing elements and refer to them */ export const ConfigPrefix = 'CMConfig'; -/** - * This function toggles options by incrementing them with 1 and handling changes - * It is called by the onclick event of options of the "bool" type - * @param {string} config The name of the option - */ -export function ToggleConfig(config) { - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] += 1; - - if ( - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] === - settings[config].label.length - ) { - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] = 0; - if (settings[config].toggle) l(ConfigPrefix + config).className = 'option off'; - } else l(ConfigPrefix + config).className = 'option'; - - if (typeof settings[config].func !== 'undefined') { - settings[config].func(); - } - - saveFramework(); -} - -/** - * This function sets the value of the specified volume-option and updates the display in the options menu - * It is called by the oninput and onchange event of "vol" type options - * @param {string} config The name of the option - */ -export function ToggleConfigVolume(config) { - if (l(`slider${config}`) !== null) { - l(`slider${config}right`).innerHTML = `${l(`slider${config}`).value}%`; - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] = Math.round( - l(`slider${config}`).value, - ); - } - saveFramework(); -} - /** * This function toggles header options by incrementing them with 1 and handling changes * It is called by the onclick event of the +/- next to headers @@ -53,5 +14,5 @@ export function ToggleHeader(config) { Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[config] += 1; if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[config] > 1) Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[config] = 0; - saveFramework(); + saveAndLoadingFunctions.saveFramework(); } diff --git a/src/Disp/MenuSections/AddMenus.js b/src/Disp/MenuSections/AddMenus.js index f0c6659..2d610f5 100644 --- a/src/Disp/MenuSections/AddMenus.js +++ b/src/Disp/MenuSections/AddMenus.js @@ -1,5 +1,4 @@ import AddMenuStats from './Statistics/AddStatsPage'; -import AddMenuPref from './Settings/SettingsPage'; /** * This function adds the calll the functions to add extra info to the stats and options pages @@ -8,10 +7,7 @@ export default function AddMenu() { const title = document.createElement('div'); title.className = 'title'; - if (Game.onMenu === 'prefs') { - title.textContent = 'Cookie Monster Settings'; - AddMenuPref(title); - } else if (Game.onMenu === 'stats') { + if (Game.onMenu === 'stats') { if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Stats) { title.textContent = 'Cookie Monster Statistics'; AddMenuStats(title); diff --git a/src/Disp/MenuSections/createMenuOptions.js b/src/Disp/MenuSections/createMenuOptions.js new file mode 100644 index 0000000..0e8668a --- /dev/null +++ b/src/Disp/MenuSections/createMenuOptions.js @@ -0,0 +1,96 @@ +import { menuFunctions as mF } from '@cookiemonsterteam/cookiemonsterframework'; +import { ConfigGroups, ConfigGroupsNotification } from '../../Data/Sectionheaders.ts'; +import settings from '../../Data/settings'; +import UpdateColours from '../HelperFunctions/UpdateColours'; +import RefreshScale from '../HelperFunctions/RefreshScale'; + +/** + * Creates the
to be added to the Options section + * @returns {object} menuDiv Object of the
of Cookie Monster in options tab + */ +export default function createMenuOptions() { + const menuDiv = mF.createModMenuSection('cookieMonsterMod', 'Cookie Monster', 'optionsMenu'); + + if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.optionsMenu) { + Object.keys(ConfigGroups).forEach((group) => { + if (group === 'Favourite') { + if ( + Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.favouriteSettings.length !== + 0 && + Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings > 0 + ) { + menuDiv.appendChild( + mF.listings.createOptionsSubHeader('cookieMonsterMod', group, ConfigGroups[group]), + ); + if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[group]) + for ( + let index = 0; + index < + Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.favouriteSettings.length; + index++ + ) { + menuDiv.appendChild( + mF.listings.createOptionsListing( + 'cookieMonsterMod', + Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.favouriteSettings[ + index + ], + settings, + UpdateColours, + RefreshScale, + ), + ); + } + } + } else { + menuDiv.appendChild( + mF.listings.createOptionsSubHeader('cookieMonsterMod', group, ConfigGroups[group]), + ); + if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[group]) { + // 0 is show, 1 is collapsed + // Make sub-sections of Notification section + if (group === 'Notification') { + Object.keys(ConfigGroupsNotification).forEach((subGroup) => { + const subGroupObject = mF.listings.createOptionsSubHeader( + 'cookieMonsterMod', + subGroup, + ConfigGroupsNotification[subGroup], + ); + subGroupObject.style.fontSize = '15px'; + subGroupObject.style.opacity = '0.5'; + menuDiv.appendChild(subGroupObject); + if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[subGroup]) { + Object.keys(settings).forEach((option) => { + if (settings[option].group === subGroup) + menuDiv.appendChild( + mF.listings.createOptionsListing( + 'cookieMonsterMod', + option, + settings, + UpdateColours, + RefreshScale, + ), + ); + }); + } + }); + } else { + Object.keys(settings).forEach((option) => { + if (settings[option].group === group) + menuDiv.appendChild( + mF.listings.createOptionsListing( + 'cookieMonsterMod', + option, + settings, + UpdateColours, + RefreshScale, + ), + ); + }); + } + } + } + }); + } + return menuDiv; +} diff --git a/src/Main/Initialization.js b/src/Main/Initialization.js index 800830e..f0e883c 100644 --- a/src/Main/Initialization.js +++ b/src/Main/Initialization.js @@ -8,7 +8,6 @@ import CreateSectionHideButtons from '../Disp/Initialization/CreateSectionHideBu import CreateWrinklerButtons from '../Disp/Initialization/CreateWrinklerButton'; import CreateCssArea from '../Disp/Initialization/CssArea'; import UpdateBuildingUpgradeStyle from '../Disp/Initialization/UpdateBuildingUpgradeStyle'; -import CreateFlashScreen from '../Disp/Initialization/FlashScreen'; import { CreateFavicon } from '../Disp/TabTitle/FavIcon'; import { CreateSimpleTooltip } from '../Disp/Tooltips/Tooltip'; import { CMLastAscendState, TooltipText } from '../Disp/VariablesAndData'; // eslint-disable-line no-unused-vars @@ -20,6 +19,7 @@ import { LastModCount } from './VariablesAndData'; // eslint-disable-line no-unu import AddWrinklerAreaDetect from './WrinklerArea/AddDetectArea'; import CreateBuildingLockButtons from '../Disp/Buildings/CreateBuildingLockButtons'; import createMenuInfo from '../Disp/MenuSections/createMenuInfo'; +import createMenuOptions from '../Disp/MenuSections/createMenuOptions'; /** * Initialization loop of Cookie Monster @@ -30,6 +30,7 @@ export default function InitializeCookieMonster() { // Register listeners in Cookie Monster Mod Framework Game.mods.cookieMonsterFramework.listeners.infoMenu.push(createMenuInfo); + Game.mods.cookieMonsterFramework.listeners.optionsMenu.push(createMenuOptions); InitData(); CacheStatsCookies(); @@ -43,7 +44,6 @@ export default function InitializeCookieMonster() { CreateBotBar(); CreateTimerBar(); CreateUpgradeBar(); - CreateFlashScreen(); CreateSectionHideButtons(); CreateFavicon(); Object.keys(TooltipText).forEach((i) => {