diff --git a/src/Config/Toggles/ToggleFavourites.js b/src/Config/Toggles/ToggleFavourites.js deleted file mode 100644 index 32f1010..0000000 --- a/src/Config/Toggles/ToggleFavourites.js +++ /dev/null @@ -1,11 +0,0 @@ -import { FavouriteSettings } from '../../Disp/VariablesAndData'; - -/** - * This function toggles whether a setting is part of the favourites section in setting or not - * @param {string} config The name of the toggleable config option - */ -export default function ToggleFavouriteSetting(config) { - if (FavouriteSettings.includes(config)) - FavouriteSettings = FavouriteSettings.filter((ele) => ele !== config); - else FavouriteSettings.push(config); -} diff --git a/src/Config/VariablesAndData.js b/src/Config/VariablesAndData.js deleted file mode 100644 index 401050f..0000000 --- a/src/Config/VariablesAndData.js +++ /dev/null @@ -1,2 +0,0 @@ -const ConfigPrefix = 'CMConfig'; -export default ConfigPrefix; diff --git a/src/Disp/MenuSections/Prompt.js b/src/Disp/MenuSections/Prompt.js deleted file mode 100644 index b481990..0000000 --- a/src/Disp/MenuSections/Prompt.js +++ /dev/null @@ -1,22 +0,0 @@ -/** Creates a Prompt similar to the base game without some of the stuff breaking them */ -export default function CookieMonsterPrompt(content, options) { - Game.promptWrapL.className = 'framed'; - const str = content; - Game.promptL.innerHTML = `${str}
`; - Object.keys(options).forEach((i) => { - const option = document.createElement('a'); - option.id = `promptOption${i}`; - option.className = 'option'; - option.onclick = function () { - PlaySound('snd/tick.mp3'); - options[i][1](); - }; - option.textContent = options[i][0]; - Game.promptL.children[1].appendChild(option); - }); - Game.promptAnchorL.style.display = 'block'; - Game.darkenL.style.display = 'block'; - Game.promptL.focus(); - Game.promptOn = 1; - Game.UpdatePrompt(); -} diff --git a/src/Disp/MenuSections/Settings/CreateHeader.js b/src/Disp/MenuSections/Settings/CreateHeader.js deleted file mode 100644 index 8646f4a..0000000 --- a/src/Disp/MenuSections/Settings/CreateHeader.js +++ /dev/null @@ -1,36 +0,0 @@ -import { ToggleHeader } from '../../../Config/ToggleSetting'; - -/** - * This function creates a header-object for the options page - * @param {string} config The name of the Config-group - * @param {string} text The to-be displayed name of the header - * @returns {object} div The header object - */ -export default function CreatePrefHeader(config, text) { - const div = document.createElement('div'); - div.className = 'title'; - - div.style.opacity = '0.7'; - div.style.fontSize = '17px'; - div.appendChild(document.createTextNode(`${text} `)); - const span = document.createElement('span'); // Creates the +/- button - span.style.cursor = 'pointer'; - span.style.display = 'inline-block'; - span.style.height = '14px'; - span.style.width = '14px'; - span.style.borderRadius = '7px'; - span.style.textAlign = 'center'; - span.style.backgroundColor = '#C0C0C0'; - span.style.color = 'black'; - span.style.fontSize = '13px'; - span.style.verticalAlign = 'middle'; - span.textContent = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[config] - ? '-' - : '+'; - span.onclick = function () { - ToggleHeader(config); - Game.UpdateMenu(); - }; - div.appendChild(span); - return div; -} diff --git a/src/Disp/MenuSections/Settings/CreateOption.js b/src/Disp/MenuSections/Settings/CreateOption.js deleted file mode 100644 index 590f31a..0000000 --- a/src/Disp/MenuSections/Settings/CreateOption.js +++ /dev/null @@ -1,247 +0,0 @@ -import saveFramework from '@cookiemonsterteam/cookiemonsterframework/src/saveDataFunctions/saveFramework'; -import jscolor, * as JsColor from '@eastdesire/jscolor'; -import ToggleFavouriteSetting from '../../../Config/Toggles/ToggleFavourites'; -import { ConfigPrefix, ToggleConfig, ToggleConfigVolume } from '../../../Config/ToggleSetting'; -import {} from '../../../Data/Sectionheaders.ts'; -import settings from '../../../Data/settings'; -import RefreshScale from '../../HelperFunctions/RefreshScale'; -import UpdateColours from '../../HelperFunctions/UpdateColours'; -import Flash from '../../Notifications/Flash'; -import PlaySound from '../../Notifications/Sound'; -import { FavouriteSettings, SimpleTooltipElements } from '../../VariablesAndData'; -import CookieMonsterPrompt from '../Prompt'; - -/** - * This function creates the favourite setting star object - * @param {string} config The name of the option - * @returns {object} div The option object - */ -function CreateFavouriteStar(config) { - const FavStar = document.createElement('a'); - if (FavouriteSettings.includes(config)) { - FavStar.innerText = '★'; - FavStar.style.color = 'yellow'; - } else FavStar.innerText = '☆'; - FavStar.className = 'option'; - FavStar.onclick = function () { - ToggleFavouriteSetting(config); - saveFramework(); - Game.UpdateMenu(); - }; - FavStar.onmouseover = function () { - Game.tooltip.draw(this, escape(SimpleTooltipElements.FavouriteSettingPlaceholder.innerHTML)); - }; - FavStar.onmouseout = function () { - Game.tooltip.hide(); - }; - FavStar.appendChild(document.createTextNode(' ')); - return FavStar; -} - -/** - * This function creates an option-object for the options page - * @param {string} config The name of the option - * @returns {object} div The option object - */ -export default function CreatePrefOption(config) { - const div = document.createElement('div'); - div.className = 'listing'; - if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings === 1) { - div.appendChild(CreateFavouriteStar(config)); - } - if (settings[config].type === 'bool') { - const a = document.createElement('a'); - if ( - settings[config].toggle && - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] === 0 - ) { - a.className = 'option off'; - } else { - a.className = 'option'; - } - a.id = ConfigPrefix + config; - a.onclick = function () { - ToggleConfig(config); - Game.UpdateMenu(); - }; - a.textContent = - settings[config].label[ - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] - ]; - div.appendChild(a); - const label = document.createElement('label'); - label.textContent = settings[config].desc; - label.style.lineHeight = '1.6'; - div.appendChild(label); - return div; - } - if (settings[config].type === 'vol') { - const volume = document.createElement('div'); - volume.className = 'sliderBox'; - const title = document.createElement('div'); - title.style.float = 'left'; - title.innerHTML = settings[config].desc; - volume.appendChild(title); - const percent = document.createElement('div'); - percent.id = `slider${config}right`; - percent.style.float = 'right'; - percent.innerHTML = `${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config]}%`; - volume.appendChild(percent); - const slider = document.createElement('input'); - slider.className = 'slider'; - slider.id = `slider${config}`; - slider.style.clear = 'both'; - slider.type = 'range'; - slider.min = '0'; - slider.max = '100'; - slider.step = '1'; - slider.value = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config]; - slider.oninput = function () { - ToggleConfigVolume(config); - Game.UpdateMenu(); - }; - slider.onchange = function () { - ToggleConfigVolume(config); - Game.UpdateMenu(); - }; - volume.appendChild(slider); - div.appendChild(volume); - const a = document.createElement('a'); - a.className = 'option'; - a.onclick = function () { - PlaySound( - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[ - config.replace('Volume', 'SoundURL') - ], - config.replace('Volume', 'Sound'), - config, - true, - ); - }; - a.textContent = 'Test sound'; - div.appendChild(a); - return div; - } - if (settings[config].type === 'url') { - const span = document.createElement('span'); - span.className = 'option'; - span.textContent = `${settings[config].label} `; - span.style.lineHeight = '1.6'; - div.appendChild(span); - const input = document.createElement('input'); - input.id = ConfigPrefix + config; - input.className = 'option'; - input.type = 'text'; - input.readOnly = true; - input.setAttribute( - 'value', - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config], - ); - input.style.width = '300px'; - div.appendChild(input); - div.appendChild(document.createTextNode(' ')); - const inputPrompt = document.createElement('input'); - inputPrompt.id = `${ConfigPrefix + config}Prompt`; - inputPrompt.className = 'option'; - inputPrompt.type = 'text'; - inputPrompt.setAttribute( - 'value', - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config], - ); - const a = document.createElement('a'); - a.className = 'option'; - a.onclick = function () { - CookieMonsterPrompt(inputPrompt.outerHTML, [ - [ - 'Save', - function () { - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] = l( - `${ConfigPrefix}${config}Prompt`, - ).value; - saveFramework(); - Game.ClosePrompt(); - Game.UpdateMenu(); - }, - ], - [ - 'Cancel', - function () { - Game.ClosePrompt(); - }, - ], - ]); - }; - a.textContent = 'Edit'; - div.appendChild(a); - const label = document.createElement('label'); - label.textContent = settings[config].desc; - label.style.lineHeight = '1.6'; - div.appendChild(label); - return div; - } - if (settings[config].type === 'colour') { - const innerSpan = document.createElement('span'); - innerSpan.className = 'option'; - const input = document.createElement('input'); - input.id = config; - input.style.width = '65px'; - input.setAttribute( - 'value', - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config], - ); - innerSpan.appendChild(input); - const change = function () { - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[this.targetElement.id] = - this.toHEXString(); - UpdateColours(); - saveFramework(); - Game.UpdateMenu(); - }; - // eslint-disable-next-line no-new - new JsColor(input, { hash: true, position: 'right', onInput: change }); - const label = document.createElement('label'); - label.textContent = settings[config].desc; - label.style.lineHeight = '1.6'; - innerSpan.appendChild(label); - if (config.includes('Flash')) { - const a = document.createElement('a'); - a.className = 'option'; - a.onclick = function () { - Flash(3, config.replace('Colour', ''), true); - }; - a.textContent = 'Test flash'; - innerSpan.appendChild(a); - } - div.appendChild(innerSpan); - jscolor.init(); - return div; - } - if (settings[config].type === 'numscale') { - const span = document.createElement('span'); - span.className = 'option'; - span.textContent = `${settings[config].label} `; - span.style.lineHeight = '1.6'; - div.appendChild(span); - const input = document.createElement('input'); - input.id = ConfigPrefix + config; - input.className = 'option'; - input.type = 'number'; - input.value = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config]; - input.min = settings[config].min; - input.max = settings[config].max; - input.oninput = function () { - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] = this.value; - saveFramework(); - RefreshScale(); - Game.UpdateMenu(); - }; - div.appendChild(input); - div.appendChild(document.createTextNode(' ')); - const label = document.createElement('label'); - label.textContent = settings[config].desc; - label.style.lineHeight = '1.6'; - div.appendChild(label); - return div; - } - return div; -} diff --git a/src/Disp/MenuSections/Settings/SettingsPage.js b/src/Disp/MenuSections/Settings/SettingsPage.js deleted file mode 100644 index 2df77f9..0000000 --- a/src/Disp/MenuSections/Settings/SettingsPage.js +++ /dev/null @@ -1,58 +0,0 @@ -import { ConfigGroups, ConfigGroupsNotification } from '../../../Data/Sectionheaders.ts'; -import settings from '../../../Data/settings'; -import { FavouriteSettings } from '../../VariablesAndData'; -import CreatePrefHeader from './CreateHeader'; -import CreatePrefOption from './CreateOption'; - -/** - * This function adds the options/settings of CookieMonster to the options page - * It is called by CM.Disp.AddMenu - * @param {object} title On object that includes the title of the menu - */ -export default function AddMenuPref(title) { - const frag = document.createDocumentFragment(); - frag.appendChild(title); - - Object.keys(ConfigGroups).forEach((group) => { - if (group === 'Favourite') { - if ( - FavouriteSettings.length !== 0 && - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings > 0 - ) { - frag.appendChild(CreatePrefHeader(group, ConfigGroups[group])); // (group, display-name of group) - if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[group]) - for (let index = 0; index < FavouriteSettings.length; index++) { - frag.appendChild(CreatePrefOption(FavouriteSettings[index])); - } - } - } else { - frag.appendChild(CreatePrefHeader(group, ConfigGroups[group])); // (group, display-name of 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 = CreatePrefHeader(subGroup, ConfigGroupsNotification[subGroup]); // (group, display-name of group) - subGroupObject.style.fontSize = '15px'; - subGroupObject.style.opacity = '0.5'; - frag.appendChild(subGroupObject); - if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[subGroup]) { - Object.keys(settings).forEach((option) => { - if (settings[option].group === subGroup) frag.appendChild(CreatePrefOption(option)); - }); - } - }); - } else { - Object.keys(settings).forEach((option) => { - if (settings[option].group === group) frag.appendChild(CreatePrefOption(option)); - }); - } - } - } - }); - - l('menu').childNodes[2].insertBefore( - frag, - l('menu').childNodes[2].childNodes[l('menu').childNodes[2].childNodes.length - 1], - ); -} diff --git a/src/Disp/Notifications/Flash.js b/src/Disp/Notifications/Flash.js deleted file mode 100644 index 5e8e2c8..0000000 --- a/src/Disp/Notifications/Flash.js +++ /dev/null @@ -1,39 +0,0 @@ -import { isInitializing } from '../../InitSaveLoad/Variables'; - -/** - * This function creates a flash depending on configs. It is called by all functions - * that check game-events and which have settings for Flashes (e.g., Golden Cookies appearing, Magic meter being full) - * @param {number} mode Sets the intensity of the flash, used to recursively dim flash - * All calls of function have use mode === 3 - * @param {string} config The setting in CM.Options that is checked before creating the flash - * @param {bool} forced Whether the sound should play regardless of settings, used to test the sound - */ -export default function Flash(mode, config, forced) { - // The arguments check makes the sound not play upon initialization of the mod - if ( - ((Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] === 1 || - forced) && - mode === 3 && - isInitializing === false) || - mode === 1 - ) { - l('CMFlashScreen').style.backgroundColor = - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[`Colour${config}`]; - l('CMFlashScreen').style.opacity = '0.5'; - if (mode === 3) { - l('CMFlashScreen').style.display = 'inline'; - setTimeout(() => { - Flash(2, config, true); - }, 1000 / Game.fps); - } else { - setTimeout(() => { - Flash(0, config, true); - }, 1000 / Game.fps); - } - } else if (mode === 2) { - l('CMFlashScreen').style.opacity = '1'; - setTimeout(() => { - Flash(1, config, true); - }, 1000 / Game.fps); - } else if (mode === 0) l('CMFlashScreen').style.display = 'none'; -} diff --git a/src/Disp/Notifications/Notification.js b/src/Disp/Notifications/Notification.js deleted file mode 100644 index cffd8d3..0000000 --- a/src/Disp/Notifications/Notification.js +++ /dev/null @@ -1,21 +0,0 @@ -import { isInitializing } from '../../InitSaveLoad/Variables'; - -/** - * This function creates a notifcation depending on configs. It is called by all functions - * that check game-events and which have settings for notifications (e.g., Golden Cookies appearing, Magic meter being full) - * @param {string} notifyConfig The setting in CM.Options that is checked before creating the notification - * @param {string} title The title of the to-be created notifications - * @param {string} message The text of the to-be created notifications - */ -export default function CreateNotification(notifyConfig, title, message) { - // The arguments check makes the sound not play upon initialization of the mod - if ( - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[notifyConfig] === 1 && - document.visibilityState === 'hidden' && - isInitializing === false - ) { - const CookieIcon = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; - // eslint-disable-next-line no-new - new Notification(title, { body: message, badge: CookieIcon }); - } -} diff --git a/src/Disp/Notifications/Sound.js b/src/Disp/Notifications/Sound.js deleted file mode 100644 index 0987061..0000000 --- a/src/Disp/Notifications/Sound.js +++ /dev/null @@ -1,29 +0,0 @@ -import { isInitializing } from '../../InitSaveLoad/Variables'; - -/** - * This function plays a sound depending on configs. It is called by all functions - * that check game-events and which have settings for sound (e.g., Golden Cookies appearing, Magic meter being full) - * @param {variable} url A variable that gives the url for the sound (e.g., CM.Options.GCSoundURL) - * @param {string} sndConfig The setting in CM.Options that is checked before creating the sound - * @param {string} volConfig The setting in CM.Options that is checked to determine volume - * @param {bool} forced Whether the sound should play regardless of settings, used to test the sound - */ -export default function PlaySound(url, sndConfig, volConfig, forced) { - // The arguments check makes the sound not play upon initialization of the mod - if ( - (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[sndConfig] === 1 || - forced) && - isInitializing === false - ) { - // eslint-disable-next-line new-cap - const sound = new Audio(url); - if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GeneralSound) - sound.volume = - (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[volConfig] / 100) * - (Game.volume / 100); - else - sound.volume = - Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[volConfig] / 100; - sound.play(); - } -} diff --git a/src/InitSaveLoad/Variables.js b/src/InitSaveLoad/Variables.js deleted file mode 100644 index bb4f806..0000000 --- a/src/InitSaveLoad/Variables.js +++ /dev/null @@ -1,3 +0,0 @@ -/** Variable that shows if Cookie Moonster is initzializing */ -export let isInitializing = false; // eslint-disable-line prefer-const -export let test; diff --git a/test/t_Config/t_Toggles/t_ToggleFavourites.js b/test/t_Config/t_Toggles/t_ToggleFavourites.js deleted file mode 100644 index 3bce7b8..0000000 --- a/test/t_Config/t_Toggles/t_ToggleFavourites.js +++ /dev/null @@ -1,17 +0,0 @@ -import { beforeEach, describe, it } from 'mocha'; -import { assert } from 'chai'; - -import ToggleFavouriteSetting from '../../../src/Config/Toggles/ToggleFavourites'; -import { FavouriteSettings } from '../../../src/Disp/VariablesAndData'; - -describe('ToggleFavouriteSetting', () => { - beforeEach(() => { - global.domids = {}; - }); - // TODO: Can't write test for checking existing config due to Babel/Typescript problem - it('New config', () => { - FavouriteSettings.push('TestConfig'); - ToggleFavouriteSetting('TestConfig2'); - assert.deepEqual(FavouriteSettings, ['TestConfig', 'TestConfig2']); - }); -});