Merge pull request #887 from DanielNoord/framework

Start using the CookieMonsterFramework
This commit is contained in:
Daniël van Noord
2021-07-11 12:57:12 +02:00
committed by GitHub
99 changed files with 1254 additions and 1070 deletions

View File

@@ -3,9 +3,13 @@ on: pull_request
jobs:
Check_linting_test_and_build:
runs-on: ubuntu-latest
env:
NPM_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Check out repository code
uses: actions/checkout@v2
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 12
- name: Install dependencies
run: npm ci
- name: Run ESLint

4
.npmrc Normal file
View File

@@ -0,0 +1,4 @@
always-auth=true
registry=https://registry.npmjs.org/
@cookiemonsterteam:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${NPM_TOKEN}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

825
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,7 @@
"name": "Cookie Monster"
},
"dependencies": {
"@eastdesire/jscolor": "^2.4.5"
"@eastdesire/jscolor": "^2.4.5",
"@cookiemonsterteam/cookiemonsterframework": "^0.1.0"
}
}

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import { ClickTimes, CookieTimes } from '../../Disp/VariablesAndData';
import {
CacheAverageClicks, // eslint-disable-line no-unused-vars
@@ -67,23 +66,31 @@ export default function CacheAvgCPS() {
CacheLastClicks = Game.cookieClicks;
// Get average gain over period of cpsLength seconds
const cpsLength = CookieTimes[CMOptions.AvgCPSHist];
const cpsLength =
CookieTimes[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist];
CacheAverageGainBank = CookiesDiff.calcAverage(cpsLength);
CacheAverageGainWrink = WrinkDiff.calcAverage(cpsLength);
CacheAverageGainWrinkFattest = WrinkFattestDiff.calcAverage(cpsLength);
CacheAverageGainChoEgg = ChoEggDiff.calcAverage(cpsLength);
CacheAverageCPS = CacheAverageGainBank;
if (CMOptions.CalcWrink === 1) CacheAverageCPS += CacheAverageGainWrink;
if (CMOptions.CalcWrink === 2) CacheAverageCPS += CacheAverageGainWrinkFattest;
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 1)
CacheAverageCPS += CacheAverageGainWrink;
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 2)
CacheAverageCPS += CacheAverageGainWrinkFattest;
const choEgg = Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg');
if (choEgg || CMOptions.CalcWrink === 0) {
if (
choEgg ||
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 0
) {
CacheAvgCPSWithChoEgg =
CacheAverageGainBank + CacheAverageGainWrink + (choEgg ? CacheAverageGainChoEgg : 0);
} else CacheAvgCPSWithChoEgg = CacheAverageCPS;
// eslint-disable-next-line no-unused-vars
CacheAverageClicks = ClicksDiff.calcAverage(ClickTimes[CMOptions.AvgClicksHist]);
CacheAverageClicks = ClicksDiff.calcAverage(
ClickTimes[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist],
);
}
}

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import GetWrinkConfigBank from '../../Disp/HelperFunctions/GetWrinkConfigBank';
import { ColourGray } from '../../Disp/VariablesAndData';
import {
@@ -18,14 +17,21 @@ import ColourOfPP from './ColourOfPP';
*/
function CacheColour(target, amount) {
Object.keys(target).forEach((i) => {
if (CMOptions.PPRigidelMode && amount === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode &&
amount === 1
) {
target[i].color = ColourGray; // eslint-disable-line no-param-reassign
return;
}
// eslint-disable-next-line no-param-reassign
target[i].color = ColourOfPP(target[i], Game.Objects[i].getSumPrice(amount));
// Colour based on excluding certain top-buildings
for (let j = 0; j < CMOptions.PPExcludeTop; j++) {
for (
let j = 0;
j < Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop;
j++
) {
if (target[i].pp === CachePPArray[j][0]) target[i].color = ColourGray; // eslint-disable-line no-param-reassign
}
});
@@ -39,7 +45,12 @@ function CachePP(target, amount) {
Math.max(price - (Game.cookies + GetWrinkConfigBank()), 0) / Game.cookiesPs +
price / target[i].bonus;
} else target[i].pp = price / target[i].bonus; // eslint-disable-line no-param-reassign
if (!(CMOptions.PPRigidelMode && amount === 1))
if (
!(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode &&
amount === 1
)
)
CachePPArray.push([target[i].pp, amount, price]);
});
}
@@ -51,7 +62,11 @@ function CachePP(target, amount) {
export default function CacheBuildingsPP() {
CacheMinPP = Infinity;
CachePPArray = [];
if (typeof CMOptions.PPExcludeTop === 'undefined') CMOptions.PPExcludeTop = 0; // Otherwise breaks during initialization
if (
typeof Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop ===
'undefined'
)
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop = 0; // Otherwise breaks during initialization
// Calculate PP and colors
CachePP(CacheObjects1, 1);
@@ -60,8 +75,8 @@ export default function CacheBuildingsPP() {
// Set CM.Cache.min to best non-excluded buidliung
CachePPArray.sort((a, b) => a[0] - b[0]);
let indexOfMin = CMOptions.PPExcludeTop;
if (CMOptions.PPOnlyConsiderBuyable) {
let indexOfMin = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop;
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPOnlyConsiderBuyable) {
while (CachePPArray[indexOfMin][2] > Game.cookies) {
indexOfMin += 1;
if (CachePPArray.length === indexOfMin + 1) {

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import GetCPS from '../../Disp/HelperFunctions/GetCPS';
import {
ColourBlue,
@@ -30,11 +29,21 @@ export default function ColourOfPP(me, price) {
else color = ColourPurple;
// Colour based on price in terms of CPS
if (Number(CMOptions.PPSecondsLowerLimit) !== 0) {
if (price / GetCPS() < Number(CMOptions.PPSecondsLowerLimit)) color = ColourBlue;
if (
Number(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPSecondsLowerLimit,
) !== 0
) {
if (
price / GetCPS() <
Number(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPSecondsLowerLimit,
)
)
color = ColourBlue;
}
// Colour based on being able to purchase
if (CMOptions.PPOnlyConsiderBuyable) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPOnlyConsiderBuyable) {
if (price - Game.cookies > 0) color = ColourRed;
}
return color;

View File

@@ -1,6 +1,5 @@
/** Section: Functions related to caching income */
import { CMOptions } from '../../Config/VariablesAndData';
import BuildingGetPrice from '../../Sim/SimulationEvents/BuyBuilding';
import BuyBuildingsBonusIncome from '../../Sim/SimulationEvents/BuyBuildingBonusIncome';
import BuyUpgradesBonusIncome from '../../Sim/SimulationEvents/BuyUpgrades';
@@ -44,8 +43,10 @@ function CacheUpgradeIncome() {
const bonusIncome = BuyUpgradesBonusIncome(i);
if (i === 'Elder Pledge') {
CacheUpgrades[i] = { bonus: Game.cookiesPs - CacheAverageGainBank };
if (CMOptions.CalcWrink === 1) CacheUpgrades[i].bonus -= CacheAverageGainWrink;
else if (CMOptions.CalcWrink === 2) CacheUpgrades[i].bonus -= CacheAverageGainWrinkFattest;
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 1)
CacheUpgrades[i].bonus -= CacheAverageGainWrink;
else if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 2)
CacheUpgrades[i].bonus -= CacheAverageGainWrinkFattest;
if (!Number.isFinite(CacheUpgrades[i].bonus)) CacheUpgrades[i].bonus = 0;
} else {
CacheUpgrades[i] = {};

View File

@@ -1,77 +0,0 @@
import ConfigDefault from '../../Data/SettingsDefault.ts';
import ConfigData from '../../Data/SettingsData';
import { CMOptions } from '../VariablesAndData';
import save from '../../InitSaveLoad/save';
import CMLoopHook from '../../Main/LoopHook';
import UpdateColours from '../../Disp/HelperFunctions/UpdateColours';
/** Functions related to saving, loading and restoring all settings */
/**
* This function saves the config of CookieMonster without saving any of the other save-data
* This allows saving in between the autosave intervals
* It is called by CM.Config.LoadConfig(), CM.Config.RestoreDefault(), CM.Config.ToggleConfig(),
* CM.ToggleConfigVolume() and changes in options with type "url", "color" or "numscale"
*/
export function SaveConfig() {
const saveString = b64_to_utf8(
unescape(localStorage.getItem('CookieClickerGame')).split('!END!')[0],
);
const CookieMonsterSave = saveString.match(/CookieMonster.*(;|$)/);
if (CookieMonsterSave !== null) {
const newSaveString = saveString.replace(CookieMonsterSave[0], `CookieMonster:${save()}`);
localStorage.setItem('CookieClickerGame', escape(`${utf8_to_b64(newSaveString)}!END!`));
}
}
/**
* This function loads the config of CookieMonster saved in localStorage and loads it into CMOptions
* It is called by CM.Main.DelayInit() and CM.Config.RestoreDefault()
*/
export function LoadConfig(settings) {
// This removes cookies left from earlier versions of CookieMonster
if (typeof localStorage.CMConfig !== 'undefined') {
delete localStorage.CMConfig;
}
if (settings !== undefined) {
CMOptions = settings;
if (typeof CMOptions.Colors !== 'undefined') {
delete CMOptions.Colors;
}
if (typeof CMOptions.Colours !== 'undefined') {
delete CMOptions.Colours;
}
// Check values
let mod = false;
Object.keys(ConfigDefault).forEach((i) => {
if (typeof CMOptions[i] === 'undefined') {
mod = true;
CMOptions[i] = ConfigDefault[i];
} else if (i === 'Header') {
Object.keys(ConfigDefault.Header).forEach((j) => {
if (
typeof CMOptions[i][j] === 'undefined' ||
!(CMOptions[i][j] > -1 && CMOptions[i][j] < 2)
) {
mod = true;
CMOptions[i][j] = ConfigDefault[i][j];
}
});
}
});
if (mod) SaveConfig();
CMLoopHook(); // Do loop once
Object.keys(ConfigDefault).forEach((i) => {
if (i !== 'Header' && typeof ConfigData[i].func !== 'undefined') {
ConfigData[i].func();
}
});
} else {
// Default values
LoadConfig(ConfigDefault);
}
Game.UpdateMenu();
UpdateColours();
}

View File

@@ -1,26 +1,35 @@
/** Called by the "func" of individual settings */
import UpdateBackground from '../Disp/HelperFunctions/UpdateBackground';
import { CMOptions } from './VariablesAndData';
/**
* This function changes the position of both the bottom and timer bar
*/
export function UpdateBotTimerBarPosition() {
if (CMOptions.BotBar === 1 && CMOptions.TimerBar === 1 && CMOptions.TimerBarPos === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos === 1
) {
l('CMBotBar').style.bottom = l('CMTimerBar').style.height;
l('game').style.bottom = `${Number(l('CMTimerBar').style.height.replace('px', '')) + 70}px`;
} else if (CMOptions.BotBar === 1) {
} else if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar === 1) {
l('CMBotBar').style.bottom = '0px';
l('game').style.bottom = '70px';
} else if (CMOptions.TimerBar === 1 && CMOptions.TimerBarPos === 1) {
} else if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos === 1
) {
l('game').style.bottom = l('CMTimerBar').style.height;
} else {
// No bars
l('game').style.bottom = '0px';
}
if (CMOptions.TimerBar === 1 && CMOptions.TimerBarPos === 0) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos === 0
) {
l('sectionLeft').style.top = l('CMTimerBar').style.height;
} else {
l('sectionLeft').style.top = '';
@@ -33,7 +42,8 @@ export function UpdateBotTimerBarPosition() {
* This function changes the visibility of the timer bar
*/
export function ToggleTimerBar() {
if (CMOptions.TimerBar === 1) l('CMTimerBar').style.display = '';
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar === 1)
l('CMTimerBar').style.display = '';
else l('CMTimerBar').style.display = 'none';
UpdateBotTimerBarPosition();
}
@@ -42,7 +52,7 @@ export function ToggleTimerBar() {
* This function changes the position of the timer bar
*/
export function ToggleTimerBarPos() {
if (CMOptions.TimerBarPos === 0) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos === 0) {
l('CMTimerBar').style.width = '30%';
l('CMTimerBar').style.bottom = '';
l('game').insertBefore(l('CMTimerBar'), l('sectionLeft'));

View File

@@ -1,6 +1,5 @@
import ConfigData from '../Data/SettingsData';
import { SaveConfig } from './SaveLoadReload/SaveLoadReloadSettings';
import { CMOptions } from './VariablesAndData';
import saveFramework from '@cookiemonsterteam/cookiemonsterframework/src/saveDataFunctions/saveFramework';
import settings from '../Data/settings';
/** Functions related to toggling or changing an individual setting */
@@ -13,18 +12,21 @@ export const ConfigPrefix = 'CMConfig';
* @param {string} config The name of the option
*/
export function ToggleConfig(config) {
CMOptions[config] += 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] += 1;
if (CMOptions[config] === ConfigData[config].label.length) {
CMOptions[config] = 0;
if (ConfigData[config].toggle) l(ConfigPrefix + config).className = 'option off';
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 ConfigData[config].func !== 'undefined') {
ConfigData[config].func();
if (typeof settings[config].func !== 'undefined') {
settings[config].func();
}
SaveConfig();
saveFramework();
}
/**
@@ -35,9 +37,11 @@ export function ToggleConfig(config) {
export function ToggleConfigVolume(config) {
if (l(`slider${config}`) !== null) {
l(`slider${config}right`).innerHTML = `${l(`slider${config}`).value}%`;
CMOptions[config] = Math.round(l(`slider${config}`).value);
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] = Math.round(
l(`slider${config}`).value,
);
}
SaveConfig();
saveFramework();
}
/**
@@ -46,7 +50,8 @@ export function ToggleConfigVolume(config) {
* @param {string} config The name of the header
*/
export function ToggleHeader(config) {
CMOptions.Header[config] += 1;
if (CMOptions.Header[config] > 1) CMOptions.Header[config] = 0;
SaveConfig();
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();
}

View File

@@ -1,13 +1,12 @@
import { UpdateBotBar } from '../../Disp/InfoBars/BottomBar';
import { UpdateBotTimerBarPosition } from '../SpecificToggles';
import { CMOptions } from '../VariablesAndData';
/**
* This function toggle the bottom bar
* It is called by CM.Disp.UpdateAscendState() and a change in CMOptions.BotBar
* It is called by CM.Disp.UpdateAscendState() and a change in Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar
*/
export default function ToggleBotBar() {
if (CMOptions.BotBar === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar === 1) {
l('CMBotBar').style.display = '';
UpdateBotBar();
} else {

View File

@@ -1,12 +1,12 @@
import { CMSayTime } from '../../Disp/VariablesAndData';
import { BackupFunctions } from '../../Main/VariablesAndData';
import { CMOptions } from '../VariablesAndData';
/**
* This function changes some of the time-displays in the game to be more detailed
* It is called by a change in CM.Options.DetailedTime
*/
export default function ToggleDetailedTime() {
if (CMOptions.DetailedTime === 1) Game.sayTime = CMSayTime;
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DetailedTime === 1)
Game.sayTime = CMSayTime;
else Game.sayTime = BackupFunctions.sayTime;
}

View File

@@ -1,13 +1,12 @@
import { CacheGoldenShimmersByID } from '../../Cache/VariablesAndData';
import { GCTimers } from '../../Disp/VariablesAndData';
import { CMOptions } from '../VariablesAndData';
/**
* This function toggles GC Timers are visible
* It is called by a change in CM.Options.GCTimer
*/
export default function ToggleGCTimer() {
if (CMOptions.GCTimer === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer === 1) {
Object.keys(GCTimers).forEach((i) => {
GCTimers[i].style.display = 'block';
GCTimers[i].style.left = CacheGoldenShimmersByID[i].l.style.left;

View File

@@ -1,11 +1,9 @@
import { CMOptions } from '../VariablesAndData';
/**
* This function updates the display setting of the two objects created by CM.Disp.CreateWrinklerButtons()
* It is called by changes in CM.Options.WrinklerButtons
*/
export default function ToggleSectionHideButtons() {
if (CMOptions.HideSectionsButtons) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HideSectionsButtons) {
l('CMSectionHidButtons').style.display = '';
} else {
l('CMSectionHidButtons').style.display = 'none';

View File

@@ -1,5 +1,3 @@
import { CMOptions } from '../VariablesAndData';
/**
* This function toggles the position of the warnings created by CM.Disp.TooltipCreateWarningSection()
* It is called by a change in CM.Options.ToolWarnPos
@@ -7,7 +5,7 @@ import { CMOptions } from '../VariablesAndData';
*/
export default function ToggleToolWarnPos() {
if (l('CMDispTooltipWarningParent') !== null) {
if (CMOptions.ToolWarnPos === 0) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos === 0) {
l('CMDispTooltipWarningParent').style.top = 'auto';
l('CMDispTooltipWarningParent').style.margin = '4px -4px';
l('CMDispTooltipWarningParent').style.padding = '3px 4px';

View File

@@ -1,16 +1,15 @@
import UpdateUpgrades from '../../Disp/BuildingsUpgrades/Upgrades';
import { CMOptions } from '../VariablesAndData';
/**
* This function toggles the upgrade bar and the colours of upgrades
* It is called by a change in CM.Options.UpBarColor
*/
export default function ToggleUpgradeBarAndColor() {
if (CMOptions.UpBarColor === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColor === 1) {
// Colours and bar on
l('CMUpgradeBar').style.display = '';
UpdateUpgrades();
} else if (CMOptions.UpBarColor === 2) {
} else if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColor === 2) {
// Colours on and bar off
l('CMUpgradeBar').style.display = 'none';
UpdateUpgrades();

View File

@@ -1,11 +1,11 @@
import { CMOptions } from '../VariablesAndData';
/**
* This function toggles the position of the upgrade bar from fixed or non-fixed mode
* It is called by a change in CM.Options.UpgradeBarFixedPos
*/
export default function ToggleUpgradeBarFixedPos() {
if (CMOptions.UpgradeBarFixedPos === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradeBarFixedPos === 1
) {
// Fix to top of screen when scrolling
l('CMUpgradeBar').style.position = 'sticky';
l('CMUpgradeBar').style.top = '0px';

View File

@@ -1,11 +1,12 @@
import { CMOptions } from '../VariablesAndData';
/**
* This function updates the display setting of the two objects created by CM.Disp.CreateWrinklerButtons()
* It is called by changes in CM.Options.WrinklerButtons
*/
export default function ToggleWrinklerButtons() {
if (CMOptions.WrinklerButtons && Game.elderWrath) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerButtons &&
Game.elderWrath
) {
l('PopAllNormalWrinklerButton').style.display = '';
l('PopFattestWrinklerButton').style.display = '';
} else {

View File

@@ -1,2 +1,2 @@
export let CMOptions = {}; // eslint-disable-line prefer-const
export const ConfigPrefix = 'CMConfig';
const ConfigPrefix = 'CMConfig';
export default ConfigPrefix;

View File

@@ -4,18 +4,15 @@ export const VersionMajor = '2.031';
export const VersionMinor = '9';
/** Information about Cookie Monster to be displayed in the info section */
export const ModDescription = `<div class="listing">
<a href="https://github.com/CookieMonsterTeam/CookieMonster" target="blank">Cookie Monster</a>
export const ModDescription = `<a href="https://github.com/CookieMonsterTeam/CookieMonster" target="blank">Cookie Monster</a>
offers a wide range of tools and statistics to enhance your game experience.
It is not a cheat interface although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.</br>
Progess on new updates and all previous release notes can be found on the GitHub page linked above!</br>
Please also report any bugs you may find over there!</br>
</div>
`;
/** Latest releasenotes of Cookie Monster to be displayed in the info section */
export const LatestReleaseNotes = `<div class="listing">
This update implements the following functions:</br>
export const LatestReleaseNotes = `This update implements the following functions:</br>
- HOTFIX: Fixed the possibility of clicking Golden Cookies multiple times with autoclickers</br>
- For developers: we now expose some data calculated by Cookie Monster to the global scope. You can access it through the CookieMonsterData object</br>
- The column with the most optimal building now has a green coloured indicator whenever colour coding is turned on</br>
@@ -29,5 +26,4 @@ This update fixes the following bugs:</br>
- Fixed some issues related to "left till achievement"</br>
- Fixed some cases where upgrades and buildings were not correctly sorted</br>
- Fixed the tooltip of "Pop all normal wrinklers" displaying an incorrect reward when Shiny's are present</br>
</div>
`;

View File

@@ -1,10 +1,13 @@
/** The basic setting class */
export default class Setting {
defaultValue: string | number;
type: string;
group: string;
constructor(type: string, group: string) {
constructor(defaultValue: string | number, type: string, group: string) {
this.defaultValue = defaultValue;
this.type = type;
this.group = group;
}

View File

@@ -4,8 +4,8 @@ import Setting from './BaseSetting';
export default class SettingColours extends Setting {
desc: string;
constructor(type: string, group: string, desc: string) {
super(type, group);
constructor(defaultValue: string | number,type: string, group: string, desc: string) {
super(defaultValue, type, group);
this.desc = desc;
}
}

View File

@@ -11,6 +11,7 @@ export default class SettingInputNumber extends Setting {
max: number;
constructor(
defaultValue: string | number,
type: string,
group: string,
label: string[],
@@ -18,7 +19,7 @@ export default class SettingInputNumber extends Setting {
min: number,
max: number,
) {
super(type, group);
super(defaultValue, type, group);
this.label = label;
this.desc = desc;
this.min = min;

View File

@@ -11,6 +11,7 @@ export default class SettingStandard extends Setting {
func: () => void;
constructor(
defaultValue: string | number,
type: string,
group: string,
label: string[],
@@ -18,7 +19,7 @@ export default class SettingStandard extends Setting {
toggle: boolean,
func?: () => void,
) {
super(type, group);
super(defaultValue, type, group);
this.label = label;
this.desc = desc;
this.toggle = toggle;

View File

@@ -6,8 +6,8 @@ export default class SettingVolume extends Setting {
desc: string;
constructor(type: string, group: string, label: string[], desc: string) {
super(type, group);
constructor(defaultValue: string | number,type: string, group: string, label: string[], desc: string) {
super(defaultValue, type, group);
this.label = label;
this.desc = desc;
for (let i = 0; i < 101; i++) {

View File

@@ -1,144 +0,0 @@
/** This array describes all default settings */
const ConfigDefault: {
[index: string]: string | number | { [index: string]: number };
} = {
CPSMode: 1,
AvgCPSHist: 3,
AvgClicksHist: 0,
CalcWrink: 0,
Scale: 2,
ScaleDecimals: 2,
ScaleSeparator: 0,
ScaleCutoff: 999999,
TimeFormat: 0,
DetailedTime: 1,
PPDisplayTime: 0,
BuildColour: 1,
PPOnlyConsiderBuyable: 0,
PPExcludeTop: 0,
PPRigidelMode: 0,
PPSecondsLowerLimit: 0,
ColourBlue: '#4bb8f0',
ColourGreen: '#00ff00',
ColourYellow: '#ffff00',
ColourOrange: '#ff7f00',
ColourRed: '#ff0000',
ColourPurple: '#ff00ff',
ColourGray: '#b3b3b3',
ColourPink: '#ff1493',
ColourBrown: '#8b4513',
BotBar: 1,
TimerBar: 1,
TimerBarPos: 0,
TimerBarOverlay: 2,
AutosaveTimerBar: 0,
UpBarColour: 1,
UpgradeBarFixedPos: 1,
SortBuildings: 0,
SortUpgrades: 0,
UpgradesNeverCollapse: 0,
DragonAuraInfo: 1,
GrimoireBar: 1,
GCTimer: 1,
Favicon: 1,
WrinklerButtons: 1,
HideSectionsButtons: 0,
TooltipBuildUpgrade: 1,
TooltipAmor: 0,
ToolWarnLucky: 1,
ToolWarnLuckyFrenzy: 1,
ToolWarnConjure: 1,
ToolWarnConjureFrenzy: 1,
ToolWarnEdifice: 1,
ToolWarnUser: 0,
ToolWarnBon: 1,
ToolWarnPos: 1,
TooltipGrim: 1,
TooltipWrink: 1,
TooltipLump: 1,
TooltipPlots: 1,
TooltipPantheon: 1,
TooltipAscendButton: 1,
Stats: 1,
MissingUpgrades: 1,
MissingAchievements: 0,
UpStats: 1,
HeavenlyChipsTarget: 1,
ShowMissedGC: 1,
Title: 1,
GeneralSound: 1,
GCNotification: 0,
GCFlash: 1,
ColourGCFlash: '#ffffff',
GCSound: 1,
GCVolume: 100,
GCSoundURL: 'https://freesound.org/data/previews/66/66717_931655-lq.mp3',
FortuneNotification: 0,
FortuneFlash: 1,
ColourFortuneFlash: '#ffffff',
FortuneSound: 1,
FortuneVolume: 100,
FortuneSoundURL: 'https://freesound.org/data/previews/174/174027_3242494-lq.mp3',
SeaNotification: 0,
SeaFlash: 1,
ColourSeaFlash: '#ffffff',
SeaSound: 1,
SeaVolume: 100,
SeaSoundURL: 'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3',
GardFlash: 1,
ColourGardFlash: '#ffffff',
GardSound: 1,
GardVolume: 100,
GardSoundURL: 'https://freesound.org/data/previews/103/103046_861714-lq.mp3',
MagicNotification: 0,
MagicFlash: 1,
ColourMagicFlash: '#ffffff',
MagicSound: 1,
MagicVolume: 100,
MagicSoundURL: 'https://freesound.org/data/previews/221/221683_1015240-lq.mp3',
WrinklerNotification: 0,
WrinklerFlash: 1,
ColourWrinklerFlash: '#ffffff',
WrinklerSound: 1,
WrinklerVolume: 100,
WrinklerSoundURL: 'https://freesound.org/data/previews/124/124186_8043-lq.mp3',
WrinklerMaxNotification: 0,
WrinklerMaxFlash: 1,
ColourWrinklerMaxFlash: '#ffffff',
WrinklerMaxSound: 1,
WrinklerMaxVolume: 100,
WrinklerMaxSoundURL: 'https://freesound.org/data/previews/152/152743_15663-lq.mp3',
BulkBuyBlock: 0,
FavouriteSettings: 1,
Header: {
Favourite: 1,
Calculation: 1,
Notation: 1,
Colours: 1,
BarsDisplay: 1,
Tooltip: 1,
Statistics: 1,
Notification: 1,
NotificationGeneral: 1,
NotificationGC: 1,
NotificationFC: 1,
NotificationSea: 1,
NotificationGard: 1,
NotificationMagi: 1,
NotificationWrink: 1,
NotificationWrinkMax: 1,
Miscellaneous: 1,
Lucky: 1,
Chain: 1,
Spells: 1,
Garden: 1,
Prestige: 1,
Wrink: 1,
Sea: 1,
Achievs: 1,
Misc: 1,
InfoTab: 1,
},
};
export default ConfigDefault;

33
src/Data/headers.js Normal file
View File

@@ -0,0 +1,33 @@
/** This includes all headers of Cookie Monster and their relevant data */
const headers = {
Favourite: 1,
Calculation: 1,
Notation: 1,
Colours: 1,
BarsDisplay: 1,
Tooltip: 1,
Statistics: 1,
Notification: 1,
NotificationGeneral: 1,
NotificationGC: 1,
NotificationFC: 1,
NotificationSea: 1,
NotificationGard: 1,
NotificationMagi: 1,
NotificationWrink: 1,
NotificationWrinkMax: 1,
Miscellaneous: 1,
Lucky: 1,
Chain: 1,
Spells: 1,
Garden: 1,
Prestige: 1,
Wrink: 1,
Sea: 1,
Achievs: 1,
Misc: 1,
infoMenu: 1,
optionsMenu: 1,
};
export default headers;

View File

@@ -8,7 +8,6 @@ import ToggleToolWarnPos from '../Config/Toggles/ToggleToolWarnPos';
import ToggleUpgradeBarAndColour from '../Config/Toggles/ToggleUpgradeBarAndColour';
import ToggleUpgradeBarFixedPos from '../Config/Toggles/ToggleUpgradeBarFixedPos';
import ToggleWrinklerButtons from '../Config/Toggles/ToggleWrinklerButtons';
import { CMOptions } from '../Config/VariablesAndData';
import UpdateBuildings from '../Disp/BuildingsUpgrades/Buildings';
import UpdateUpgradeSectionsHeight from '../Disp/BuildingsUpgrades/UpdateUpgradeSectionsHeight';
import UpdateUpgrades from '../Disp/BuildingsUpgrades/Upgrades';
@@ -21,9 +20,10 @@ import SettingStandard from './SettingClasses/SettingStandard.ts';
import SettingVolume from './SettingClasses/SettingVolume.ts';
/** This includes all options of CookieMonster and their relevant data */
const Config = {
const settings = {
// Calculation
CPSMode: new SettingStandard(
1,
'bool',
'Calculation',
['Current cookies per second', 'Average cookies per second'],
@@ -31,6 +31,7 @@ const Config = {
false,
),
AvgCPSHist: new SettingStandard(
3,
'bool',
'Calculation',
[
@@ -47,6 +48,7 @@ const Config = {
false,
),
AvgClicksHist: new SettingStandard(
0,
'bool',
'Calculation',
[
@@ -60,6 +62,7 @@ const Config = {
false,
),
CalcWrink: new SettingStandard(
0,
'bool',
'Calculation',
[
@@ -76,6 +79,7 @@ const Config = {
// Notation
Scale: new SettingStandard(
2,
'bool',
'Notation',
[
@@ -93,6 +97,7 @@ const Config = {
},
),
ScaleDecimals: new SettingStandard(
2,
'bool',
'Notation',
['1 decimals', '2 decimals', '3 decimals'],
@@ -103,6 +108,7 @@ const Config = {
},
),
ScaleSeparator: new SettingStandard(
0,
'bool',
'Notation',
['. for decimals (standard)', '. for thousands'],
@@ -113,6 +119,7 @@ const Config = {
},
),
ScaleCutoff: new SettingInputNumber(
999999,
'numscale',
'Notation',
'Notation cut-off point: ',
@@ -121,6 +128,7 @@ const Config = {
999999999,
),
TimeFormat: new SettingStandard(
0,
'bool',
'Notation',
['Time XXd, XXh, XXm, XXs', 'Time XX:XX:XX:XX:XX'],
@@ -128,6 +136,7 @@ const Config = {
false,
),
DetailedTime: new SettingStandard(
1,
'bool',
'Notation',
['Detailed time OFF', 'Detailed time ON'],
@@ -138,6 +147,7 @@ const Config = {
},
),
PPDisplayTime: new SettingStandard(
0,
'bool',
'Notation',
['PP as value (standard)', 'PP as time unit'],
@@ -147,6 +157,7 @@ const Config = {
// Colours
BuildColour: new SettingStandard(
1,
'bool',
'Colours',
['Building colours OFF', 'Building colours ON'],
@@ -157,6 +168,7 @@ const Config = {
},
),
PPOnlyConsiderBuyable: new SettingStandard(
0,
'bool',
'Colours',
["Don't ignore non-buyable", 'Ignore non-buyable'],
@@ -164,6 +176,7 @@ const Config = {
true,
),
PPExcludeTop: new SettingStandard(
0,
'bool',
'Colours',
[
@@ -176,6 +189,7 @@ const Config = {
true,
),
PPRigidelMode: new SettingStandard(
0,
'bool',
'Colours',
['Rigidel mode OFF', 'Rigidel mode ON'],
@@ -183,6 +197,7 @@ const Config = {
true,
),
PPSecondsLowerLimit: new SettingInputNumber(
0,
'numscale',
'Colours',
'Lower limit for PP (in seconds): ',
@@ -191,46 +206,55 @@ const Config = {
Infinity,
),
ColourBlue: new SettingColours(
'#4bb8f0',
'colour',
'Colours',
'Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels',
),
ColourGreen: new SettingColours(
'#00ff00',
'colour',
'Colours',
'Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels',
),
ColourYellow: new SettingColours(
'#ffff00',
'colour',
'Colours',
'Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels',
),
ColourOrange: new SettingColours(
'#ff7f00',
'colour',
'Colours',
'Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels',
),
ColourRed: new SettingColours(
'#ff0000',
'colour',
'Colours',
'Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels',
),
ColourPurple: new SettingColours(
'#ff00ff',
'colour',
'Colours',
'Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels',
),
ColourGray: new SettingColours(
'#b3b3b3',
'colour',
'Colours',
'Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar',
),
ColourPink: new SettingColours(
'#ff1493',
'colour',
'Colours',
'Standard colour is pink. Used for Dragonflight bar',
),
ColourBrown: new SettingColours(
'#8b4513',
'colour',
'Colours',
'Standard colour is brown. Used for Dragon Harvest bar',
@@ -238,6 +262,7 @@ const Config = {
// BarsDisplay
BotBar: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Bottom bar OFF', 'Bottom bar ON'],
@@ -248,6 +273,7 @@ const Config = {
},
),
TimerBar: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Timer bar OFF', 'Timer bar ON'],
@@ -258,6 +284,7 @@ const Config = {
},
),
TimerBarPos: new SettingStandard(
0,
'bool',
'BarsDisplay',
['Timer bar position (top left)', 'Timer bar position (bottom)'],
@@ -268,6 +295,7 @@ const Config = {
},
),
TimerBarOverlay: new SettingStandard(
2,
'bool',
'BarsDisplay',
['Timer bar overlay OFF', 'Timer bar overlay only seconds', 'Timer bar overlay full'],
@@ -275,6 +303,7 @@ const Config = {
true,
),
AutosaveTimerBar: new SettingStandard(
0,
'bool',
'BarsDisplay',
['Autosave timer bar OFF', 'Autosave timer bar ON'],
@@ -282,6 +311,7 @@ const Config = {
true,
),
UpBarColour: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Upgrade colours/bar OFF', 'Upgrade colours with bar ON', 'Upgrade colours without bar ON'],
@@ -292,6 +322,7 @@ const Config = {
},
),
UpgradeBarFixedPos: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Upgrade bar fixed position OFF', 'Upgrade bar fixed position ON'],
@@ -302,6 +333,7 @@ const Config = {
},
),
SortBuildings: new SettingStandard(
0,
'bool',
'BarsDisplay',
[
@@ -317,6 +349,7 @@ const Config = {
},
),
SortUpgrades: new SettingStandard(
0,
'bool',
'BarsDisplay',
['Sort upgrades: default', 'Sort upgrades: PP'],
@@ -327,6 +360,7 @@ const Config = {
},
),
UpgradesNeverCollapse: new SettingStandard(
0,
'bool',
'BarsDisplay',
['Upgrades always expanded OFF', 'Upgrades always expanded ON'],
@@ -337,6 +371,7 @@ const Config = {
},
),
DragonAuraInfo: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Extra dragon aura info OFF', 'Extra dragon aura info ON'],
@@ -344,6 +379,7 @@ const Config = {
true,
),
GrimoireBar: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Grimoire magic meter timer OFF', 'Grimoire magic meter timer ON'],
@@ -351,6 +387,7 @@ const Config = {
true,
),
GCTimer: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Golden cookie timer OFF', 'Golden cookie timer ON'],
@@ -361,6 +398,7 @@ const Config = {
},
),
Favicon: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Favicon OFF', 'Favicon ON'],
@@ -371,6 +409,7 @@ const Config = {
},
),
WrinklerButtons: new SettingStandard(
1,
'bool',
'BarsDisplay',
['Extra wrinkler buttons OFF', 'Extra wrinkler buttons ON'],
@@ -381,6 +420,7 @@ const Config = {
},
),
HideSectionsButtons: new SettingStandard(
0,
'bool',
'BarsDisplay',
['Hide buildings/upgrades button OFF', 'Hide buildings/upgrades button ON'],
@@ -393,6 +433,7 @@ const Config = {
// Tooltip
TooltipBuildUpgrade: new SettingStandard(
1,
'bool',
'Tooltip',
['Building/upgrade tooltip information OFF', 'Building/upgrade tooltip information ON'],
@@ -400,6 +441,7 @@ const Config = {
true,
),
TooltipAmor: new SettingStandard(
0,
'bool',
'Tooltip',
[
@@ -410,6 +452,7 @@ const Config = {
true,
),
ToolWarnLucky: new SettingStandard(
1,
'bool',
'Tooltip',
['Tooltip lucky warning OFF', 'Tooltip lucky warning ON'],
@@ -417,6 +460,7 @@ const Config = {
true,
),
ToolWarnLuckyFrenzy: new SettingStandard(
1,
'bool',
'Tooltip',
['Tooltip lucky frenzy warning OFF', 'Tooltip lucky frenzy warning ON'],
@@ -424,6 +468,7 @@ const Config = {
true,
),
ToolWarnConjure: new SettingStandard(
1,
'bool',
'Tooltip',
['Tooltip conjure warning OFF', 'Tooltip conjure warning ON'],
@@ -431,6 +476,7 @@ const Config = {
true,
),
ToolWarnConjureFrenzy: new SettingStandard(
1,
'bool',
'Tooltip',
['Tooltip conjure frenzy warning OFF', 'Tooltip conjure frenzy warning ON'],
@@ -438,6 +484,7 @@ const Config = {
true,
),
ToolWarnEdifice: new SettingStandard(
1,
'bool',
'Tooltip',
['Tooltip edifice warning OFF', 'Tooltip edifice warning ON'],
@@ -445,6 +492,7 @@ const Config = {
true,
),
ToolWarnUser: new SettingInputNumber(
0,
'numscale',
'Tooltip',
'Tooltip warning at x times CPS: ',
@@ -453,6 +501,7 @@ const Config = {
Infinity,
),
ToolWarnBon: new SettingStandard(
1,
'bool',
'Tooltip',
['Calculate tooltip warning with bonus CPS OFF', 'Calculate tooltip warning with bonus CPS ON'],
@@ -460,6 +509,7 @@ const Config = {
true,
),
ToolWarnPos: new SettingStandard(
1,
'bool',
'Tooltip',
['Tooltip warning position (left)', 'Tooltip warning position (bottom)'],
@@ -470,6 +520,7 @@ const Config = {
},
),
TooltipGrim: new SettingStandard(
1,
'bool',
'Tooltip',
['Grimoire tooltip information OFF', 'Grimoire tooltip information ON'],
@@ -477,6 +528,7 @@ const Config = {
true,
),
TooltipWrink: new SettingStandard(
1,
'bool',
'Tooltip',
['Wrinkler tooltip OFF', 'Wrinkler tooltip ON'],
@@ -484,6 +536,7 @@ const Config = {
true,
),
TooltipLump: new SettingStandard(
1,
'bool',
'Tooltip',
['Sugar lump tooltip OFF', 'Sugar lump tooltip ON'],
@@ -491,6 +544,7 @@ const Config = {
true,
),
TooltipPlots: new SettingStandard(
1,
'bool',
'Tooltip',
['Garden plots tooltip OFF', 'Garden plots tooltip ON'],
@@ -498,6 +552,7 @@ const Config = {
true,
),
TooltipPantheon: new SettingStandard(
1,
'bool',
'Tooltip',
['Pantheon tooltip OFF', 'Pantheon tooltip ON'],
@@ -505,6 +560,7 @@ const Config = {
true,
),
TooltipAscendButton: new SettingStandard(
1,
'bool',
'Tooltip',
['Show Extra Info Ascend Tooltip OFF', 'Show Extra Info Ascend Tooltip ON'],
@@ -514,6 +570,7 @@ const Config = {
// Statistics
Stats: new SettingStandard(
1,
'bool',
'Statistics',
['Statistics OFF', 'Statistics ON'],
@@ -521,6 +578,7 @@ const Config = {
true,
),
MissingUpgrades: new SettingStandard(
1,
'bool',
'Statistics',
['Missing upgrades OFF', 'Missing upgrades ON'],
@@ -528,6 +586,7 @@ const Config = {
true,
),
MissingAchievements: new SettingStandard(
0,
'bool',
'Statistics',
['Missing Achievements OFF', 'Missing Normal Achievements ON'],
@@ -535,6 +594,7 @@ const Config = {
true,
),
UpStats: new SettingStandard(
1,
'bool',
'Statistics',
['Statistics update rate (default)', 'Statistics update rate (1s)'],
@@ -542,6 +602,7 @@ const Config = {
false,
),
HeavenlyChipsTarget: new SettingInputNumber(
1,
'numscale',
'Statistics',
'Heavenly chips target: ',
@@ -550,6 +611,7 @@ const Config = {
Infinity,
),
ShowMissedGC: new SettingStandard(
1,
'bool',
'Statistics',
['Missed GC OFF', 'Missed GC ON'],
@@ -559,6 +621,7 @@ const Config = {
// Notification
Title: new SettingStandard(
1,
'bool',
'NotificationGeneral',
['Title OFF', 'Title ON', 'Title pinned tab highlight'],
@@ -566,6 +629,7 @@ const Config = {
true,
),
GeneralSound: new SettingStandard(
1,
'bool',
'NotificationGeneral',
['Consider game volume setting OFF', 'Consider game volume setting ON'],
@@ -573,16 +637,20 @@ const Config = {
true,
),
GCNotification: new SettingStandard(
0,
'bool',
'NotificationGC',
['Notification OFF', 'Notification ON'],
'Create a notification when golden cookie spawns',
true,
() => {
CheckNotificationPermissions(CMOptions.GCNotification);
CheckNotificationPermissions(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCNotification,
);
},
),
GCFlash: new SettingStandard(
1,
'bool',
'NotificationGC',
['Flash OFF', 'Flash ON'],
@@ -590,35 +658,42 @@ const Config = {
true,
),
ColourGCFlash: new SettingColours(
'#ffffff',
'colour',
'NotificationGC',
'The colour of the GC flash, standard colour is white',
),
GCSound: new SettingStandard(
1,
'bool',
'NotificationGC',
['Sound OFF', 'Sound ON'],
'Play a sound on golden cookie',
true,
),
GCVolume: new SettingVolume('vol', 'NotificationGC', [], 'Volume'),
GCVolume: new SettingVolume(100, 'vol', 'NotificationGC', [], 'Volume'),
GCSoundURL: new SettingStandard(
'https://freesound.org/data/previews/66/66717_931655-lq.mp3',
'url',
'NotificationGC',
'Sound URL:',
'URL of the sound to be played when a golden cookie spawns',
),
FortuneNotification: new SettingStandard(
0,
'bool',
'NotificationFC',
['Notification OFF', 'Notification ON'],
'Create a notification when fortune cookie is on the ticker',
true,
() => {
CheckNotificationPermissions(CMOptions.FortuneNotification);
CheckNotificationPermissions(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneNotification,
);
},
),
FortuneFlash: new SettingStandard(
1,
'bool',
'NotificationFC',
['Flash OFF', 'Flash ON'],
@@ -626,35 +701,42 @@ const Config = {
true,
),
ColourFortuneFlash: new SettingColours(
'#ffffff',
'colour',
'NotificationFC',
'The colour of the fortune flash, standard colour is white',
),
FortuneSound: new SettingStandard(
1,
'bool',
'NotificationFC',
['Sound OFF', 'Sound ON'],
'Play a sound on fortune cookie spawn',
true,
),
FortuneVolume: new SettingVolume('vol', 'NotificationFC', [], 'Volume'),
FortuneVolume: new SettingVolume(100, 'vol', 'NotificationFC', [], 'Volume'),
FortuneSoundURL: new SettingStandard(
'https://freesound.org/data/previews/174/174027_3242494-lq.mp3',
'url',
'NotificationFC',
'Sound URL:',
'URL of the sound to be played when the ticker has a fortune cookie',
),
SeaNotification: new SettingStandard(
0,
'bool',
'NotificationSea',
['Notification OFF', 'Notification ON'],
'Create a notification on season popup',
true,
() => {
CheckNotificationPermissions(CMOptions.SeaNotification);
CheckNotificationPermissions(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaNotification,
);
},
),
SeaFlash: new SettingStandard(
1,
'bool',
'NotificationSea',
['Flash OFF', 'Flash ON'],
@@ -662,25 +744,29 @@ const Config = {
true,
),
ColourSeaFlash: new SettingColours(
'#ffffff',
'colour',
'NotificationSea',
'The colour of the season popup flash, standard colour is white',
),
SeaSound: new SettingStandard(
1,
'bool',
'NotificationSea',
['Sound OFF', 'Sound ON'],
'Play a sound on season popup',
true,
),
SeaVolume: new SettingVolume('vol', 'NotificationSea', [], 'Volume'),
SeaVolume: new SettingVolume(100, 'vol', 'NotificationSea', [], 'Volume'),
SeaSoundURL: new SettingStandard(
'https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3',
'url',
'NotificationSea',
'Sound URL:',
'URL of the sound to be played when on season popup spawns',
),
GardFlash: new SettingStandard(
1,
'bool',
'NotificationGard',
['Garden Tick Flash OFF', 'Flash ON'],
@@ -688,35 +774,42 @@ const Config = {
true,
),
ColourGardFlash: new SettingColours(
'#ffffff',
'colour',
'NotificationGard',
'The colour of the garden flash, standard colour is white',
),
GardSound: new SettingStandard(
1,
'bool',
'NotificationGard',
['Sound OFF', 'Sound ON'],
'Play a sound on garden tick',
true,
),
GardVolume: new SettingVolume('vol', 'NotificationGard', [], 'Volume'),
GardVolume: new SettingVolume(100, 'vol', 'NotificationGard', [], 'Volume'),
GardSoundURL: new SettingStandard(
'https://freesound.org/data/previews/103/103046_861714-lq.mp3',
'url',
'NotificationGard',
'Garden Tick Sound URL:',
'URL of the sound to be played when the garden ticks',
),
MagicNotification: new SettingStandard(
0,
'bool',
'NotificationMagi',
['Notification OFF', 'Notification ON'],
'Create a notification when magic reaches maximum',
true,
() => {
CheckNotificationPermissions(CMOptions.MagicNotification);
CheckNotificationPermissions(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MagicNotification,
);
},
),
MagicFlash: new SettingStandard(
1,
'bool',
'NotificationMagi',
['Flash OFF', 'Flash ON'],
@@ -724,35 +817,42 @@ const Config = {
true,
),
ColourMagicFlash: new SettingColours(
'#ffffff',
'colour',
'NotificationMagi',
'The colour of the magic flash, standard colour is white',
),
MagicSound: new SettingStandard(
1,
'bool',
'NotificationMagi',
['Sound OFF', 'Sound ON'],
'Play a sound when magic reaches maximum',
true,
),
MagicVolume: new SettingVolume('vol', 'NotificationMagi', [], 'Volume'),
MagicVolume: new SettingVolume(100, 'vol', 'NotificationMagi', [], 'Volume'),
MagicSoundURL: new SettingStandard(
'https://freesound.org/data/previews/221/221683_1015240-lq.mp3',
'url',
'NotificationMagi',
'Sound URL:',
'URL of the sound to be played when magic reaches maxium',
),
WrinklerNotification: new SettingStandard(
0,
'bool',
'NotificationWrink',
['Notification OFF', 'Notification ON'],
'Create a notification when a wrinkler appears',
true,
() => {
CheckNotificationPermissions(CMOptions.WrinklerNotification);
CheckNotificationPermissions(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerNotification,
);
},
),
WrinklerFlash: new SettingStandard(
1,
'bool',
'NotificationWrink',
['Flash OFF', 'Flash ON'],
@@ -760,35 +860,42 @@ const Config = {
true,
),
ColourWrinklerFlash: new SettingColours(
'#ffffff',
'colour',
'NotificationWrink',
'The colour of the wrinkler flash, standard colour is white',
),
WrinklerSound: new SettingStandard(
1,
'bool',
'NotificationWrink',
['Sound OFF', 'Sound ON'],
'Play a sound when a wrinkler appears',
true,
),
WrinklerVolume: new SettingVolume('vol', 'NotificationWrink', [], 'Volume'),
WrinklerVolume: new SettingVolume(100, 'vol', 'NotificationWrink', [], 'Volume'),
WrinklerSoundURL: new SettingStandard(
'https://freesound.org/data/previews/124/124186_8043-lq.mp3',
'url',
'NotificationWrink',
'Sound URL:',
'URL of the sound to be played when a wrinkler appears',
),
WrinklerMaxNotification: new SettingStandard(
0,
'bool',
'NotificationWrinkMax',
['Notification OFF', 'Notification ON'],
'Create a notification when the maximum amount of wrinklers has appeared',
true,
() => {
CheckNotificationPermissions(CMOptions.WrinklerMaxNotification);
CheckNotificationPermissions(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification,
);
},
),
WrinklerMaxFlash: new SettingStandard(
1,
'bool',
'NotificationWrinkMax',
['Flash OFF', 'Flash ON'],
@@ -796,19 +903,22 @@ const Config = {
true,
),
ColourWrinklerMaxFlash: new SettingColours(
'#ffffff',
'colour',
'NotificationWrinkMax',
'The colour of the maximum wrinkler flash, standard colour is white',
),
WrinklerMaxSound: new SettingStandard(
1,
'bool',
'NotificationWrinkMax',
['Sound OFF', 'Sound ON'],
'Play a sound when the maximum amount of wrinklers has appeared',
true,
),
WrinklerMaxVolume: new SettingVolume('vol', 'NotificationWrinkMax', [], 'Volume'),
WrinklerMaxVolume: new SettingVolume(100, 'vol', 'NotificationWrinkMax', [], 'Volume'),
WrinklerMaxSoundURL: new SettingStandard(
'https://freesound.org/data/previews/152/152743_15663-lq.mp3',
'url',
'NotificationWrinkMax',
'Sound URL:',
@@ -817,6 +927,7 @@ const Config = {
// Miscellaneous
BulkBuyBlock: new SettingStandard(
1,
'bool',
'Miscellaneous',
['Block bulk buying OFF', 'Block bulk buying ON'],
@@ -824,6 +935,7 @@ const Config = {
true,
),
FavouriteSettings: new SettingStandard(
1,
'bool',
'Miscellaneous',
[
@@ -839,4 +951,4 @@ const Config = {
),
};
export default Config;
export default settings;

View File

@@ -1,6 +1,5 @@
/** General functions to format or beautify strings */
import { CMOptions } from '../../Config/VariablesAndData';
import { metric, shortScale, shortScaleAbbreviated } from '../../Data/Scales.ts';
import { BackupFunctions } from '../../Main/VariablesAndData';
@@ -12,14 +11,15 @@ import { BackupFunctions } from '../../Main/VariablesAndData';
* @returns {string} Formatted number
*/
export default function Beautify(num, floats, forced) {
const decimals = CMOptions.ScaleDecimals + 1;
const decimals =
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleDecimals + 1;
if (num === Infinity) {
return 'Infinity';
}
if (typeof num === 'undefined') {
return '0';
}
if (CMOptions.Scale === 0) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale === 0) {
return BackupFunctions.Beautify(num, floats);
}
if (Number.isFinite(num)) {
@@ -30,12 +30,20 @@ export default function Beautify(num, floats, forced) {
if (num === 0) {
return num.toString();
}
if (num > 0.001 && num < CMOptions.ScaleCutoff) {
if (CMOptions.ScaleSeparator) answer = num.toLocaleString('nl');
if (
num > 0.001 &&
num < Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleCutoff
) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleSeparator)
answer = num.toLocaleString('nl');
else answer = num.toLocaleString('en');
return answer;
}
if ((CMOptions.Scale === 4 && !forced) || forced === 4) {
if (
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale === 4 &&
!forced) ||
forced === 4
) {
// Scientific notation, 123456789 => 1.235E+8
answer = num.toExponential(decimals).toString().replace('e', 'E');
} else {
@@ -43,22 +51,38 @@ export default function Beautify(num, floats, forced) {
const AmountOfTenPowerThree = Math.floor(exponential.slice(exponential.indexOf('e') + 1) / 3);
answer = (num / Number(`1e${AmountOfTenPowerThree * 3}`)).toFixed(decimals);
// answer is now "xxx.xx" (e.g., 123456789 would be 123.46)
if ((CMOptions.Scale === 1 && !forced) || forced === 1) {
if (
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale === 1 &&
!forced) ||
forced === 1
) {
// Metric scale, 123456789 => 123.457 M
if (num >= 0.01 && num < Number(`1e${metric.length * 3}`)) {
answer += ` ${metric[AmountOfTenPowerThree]}`;
} else answer = Beautify(num, 0, 4); // If number is too large or little, revert to scientific notation
} else if ((CMOptions.Scale === 2 && !forced) || forced === 2) {
} else if (
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale === 2 &&
!forced) ||
forced === 2
) {
// Short scale, 123456789 => 123.457 M
if (num >= 0.01 && num < Number(`1e${shortScale.length * 3}`)) {
answer += ` ${shortScale[AmountOfTenPowerThree]}`;
} else answer = Beautify(num, 0, 4); // If number is too large or little, revert to scientific notation
} else if ((CMOptions.Scale === 3 && !forced) || forced === 3) {
} else if (
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale === 3 &&
!forced) ||
forced === 3
) {
// Short scale, 123456789 => 123.457 M
if (num >= 0.01 && num < Number(`1e${shortScaleAbbreviated.length * 3}`)) {
answer += ` ${shortScaleAbbreviated[AmountOfTenPowerThree]}`;
} else answer = Beautify(num, 0, 4); // If number is too large or little, revert to scientific notation
} else if ((CMOptions.Scale === 5 && !forced) || forced === 5) {
} else if (
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale === 5 &&
!forced) ||
forced === 5
) {
// Engineering notation, 123456789 => 123.457E+6
answer += `E${AmountOfTenPowerThree * 3}`;
}
@@ -68,7 +92,8 @@ export default function Beautify(num, floats, forced) {
console.log(`Could not beautify number with Cookie Monster Beautify: ${num}`);
answer = BackupFunctions.Beautify(num, floats);
}
if (CMOptions.ScaleSeparator) answer = answer.replace('.', ',');
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleSeparator)
answer = answer.replace('.', ',');
return answer;
}
console.log(`Could not beautify number with Cookie Monster Beautify: ${num}`); // eslint-disable-line no-console

View File

@@ -1,5 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
/**
* This function returns time as a string depending on TimeFormat setting
* @param {number} time Time to be formatted
@@ -17,7 +15,7 @@ export default function FormatTime(time, longFormat) {
const m = Math.floor((((formattedTime % 31536000) % 86400) % 3600) / 60);
const s = Math.floor((((formattedTime % 31536000) % 86400) % 3600) % 60);
let str = '';
if (CMOptions.TimeFormat) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat) {
if (formattedTime > 3155760000) return 'XX:XX:XX:XX:XX';
str += `${(y < 10 ? '0' : '') + y}:`;
str += `${(d < 10 ? '0' : '') + d}:`;

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import { ColourGreen, ColourOrange, ColourRed, ColourYellow } from '../VariablesAndData';
import FormatTime from './FormatTime';
@@ -11,7 +10,8 @@ export default function GetTimeColour(time) {
let color;
let text;
if (time <= 0) {
if (CMOptions.TimeFormat) text = '00:00:00:00:00';
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat)
text = '00:00:00:00:00';
else text = 'Done!';
color = ColourGreen;
} else {

View File

@@ -5,7 +5,6 @@ import {
CacheObjects100,
CacheObjectsNextAchievement,
} from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import BuildingSell from '../../Sim/SimulationEvents/SellBuilding';
import Beautify from '../BeautifyAndFormatting/Beautify';
import { ColoursOrdering, LastTargetBuildings } from '../VariablesAndData';
@@ -36,11 +35,15 @@ export default function UpdateBuildings() {
l(`storeBulk100`).style.removeProperty('color');
if (Game.buyMode === 1) {
if (CMOptions.BuildColour === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BuildColour === 1) {
Object.keys(target).forEach((i) => {
l(`productPrice${Game.Objects[i].id}`).style.color = CMOptions[`Colour${target[i].color}`];
l(`productPrice${Game.Objects[i].id}`).style.color =
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[
`Colour${target[i].color}`
];
});
l(`storeBulk${CacheMinPPBulk}`).style.color = CMOptions.ColourGreen;
l(`storeBulk${CacheMinPPBulk}`).style.color =
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen;
} else {
Object.keys(Game.Objects).forEach((i) => {
l(`productPrice${Game.Objects[i].id}`).style.removeProperty('color');
@@ -67,8 +70,11 @@ export default function UpdateBuildings() {
// Build array of pointers and sort according to the user's configured sort option.
// This regulates sorting of buildings.
let arr;
if (Game.buyMode !== 1 || !CMOptions.SortBuildings) {
arr = Object.keys(CacheObjects1).map(k => {
if (
Game.buyMode !== 1 ||
!Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings
) {
arr = Object.keys(CacheObjects1).map((k) => {
const o = {};
o.name = k;
o.id = Game.Objects[k].id;
@@ -76,8 +82,10 @@ export default function UpdateBuildings() {
});
// Sort using default order.
arr.sort((a, b) => a.id - b.id);
} else if (CMOptions.SortBuildings === 1) {
arr = Object.keys(CacheObjects1).map(k => {
} else if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings === 1
) {
arr = Object.keys(CacheObjects1).map((k) => {
const o = {};
o.name = k;
o.pp = CacheObjects1[k].pp;
@@ -88,10 +96,12 @@ export default function UpdateBuildings() {
arr.sort((a, b) =>
ColoursOrdering.indexOf(a.color) === ColoursOrdering.indexOf(b.color)
? a.pp - b.pp
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color)
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color),
);
} else if (CMOptions.SortBuildings === 2) {
arr = Object.keys(target).map(k => {
} else if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings === 2
) {
arr = Object.keys(target).map((k) => {
const o = {};
o.name = k;
o.pp = target[k].pp;
@@ -102,10 +112,12 @@ export default function UpdateBuildings() {
arr.sort((a, b) =>
ColoursOrdering.indexOf(a.color) === ColoursOrdering.indexOf(b.color)
? a.pp - b.pp
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color)
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color),
);
} else if (CMOptions.SortBuildings === 3) {
arr = Object.keys(CacheObjectsNextAchievement).map(k => {
} else if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings === 3
) {
arr = Object.keys(CacheObjectsNextAchievement).map((k) => {
const o = {};
o.name = k;
o.id = Game.Objects[k].id;
@@ -118,9 +130,10 @@ export default function UpdateBuildings() {
// Sort by price until next achievement.
// Buildings that aren't within 100 of an achievement are placed at the end, still in
// default order relative to each other because sort() is guaranteed stable.
arr.sort((a, b) =>
(a.amountUntilNext !== 101 ? a.priceUntilNext : Infinity) -
(b.amountUntilNext !== 101 ? b.priceUntilNext : Infinity)
arr.sort(
(a, b) =>
(a.amountUntilNext !== 101 ? a.priceUntilNext : Infinity) -
(b.amountUntilNext !== 101 ? b.priceUntilNext : Infinity),
);
}

View File

@@ -1,5 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
/**
* This function toggles the upgrade to be always expanded
* It is called by a change in CM.Options.ToolWarnPos
@@ -7,7 +5,10 @@ import { CMOptions } from '../../Config/VariablesAndData';
*/
export default function UpdateUpgradeSectionsHeight() {
Object.values(document.getElementsByClassName('storeSection')).forEach((section) => {
if (CMOptions.UpgradesNeverCollapse || section.id === 'products') {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradesNeverCollapse ||
section.id === 'products'
) {
section.style.height = 'auto'; // eslint-disable-line no-param-reassign
} else if (section.id === 'vaultUpgrades') {
section.style.height = ''; // eslint-disable-line no-param-reassign

View File

@@ -1,5 +1,4 @@
import { CacheUpgrades } from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import {
ColourBackPre,
ColourBlue,
@@ -20,7 +19,7 @@ import {
*/
export default function UpdateUpgrades() {
// This counts the amount of upgrades for each pp group and updates the Upgrade Bar
if (CMOptions.UpBarColour > 0) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour > 0) {
let blue = 0;
let green = 0;
let yellow = 0;
@@ -76,12 +75,12 @@ export default function UpdateUpgrades() {
arr.push(o);
}
if (CMOptions.SortUpgrades) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortUpgrades) {
// Sort by pp colour group, then by pp.
arr.sort((a, b) =>
ColoursOrdering.indexOf(a.color) === ColoursOrdering.indexOf(b.color)
? a.pp - b.pp
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color)
: ColoursOrdering.indexOf(a.color) - ColoursOrdering.indexOf(b.color),
);
} else {
arr.sort((a, b) => a.price - b.price);

View File

@@ -2,7 +2,6 @@
import CacheDragonCost from '../../Cache/Dragon/Dragon';
import { CacheCostDragonUpgrade } from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import CalculateChangeAura from '../../Sim/SimulationEvents/AuraChange';
import Beautify from '../BeautifyAndFormatting/Beautify';
import FormatTime from '../BeautifyAndFormatting/FormatTime';
@@ -12,7 +11,7 @@ import FormatTime from '../BeautifyAndFormatting/FormatTime';
* @param {number} aura The number of the aura currently selected by the mouse/user
*/
export function AddAuraInfo(aura) {
if (CMOptions.DragonAuraInfo === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DragonAuraInfo === 1) {
const [bonusCPS, priceOfChange] = CalculateChangeAura(aura);
const timeToRecover = FormatTime(priceOfChange / (bonusCPS + Game.cookiesPs));
let bonusCPSPercentage;

View File

@@ -1,5 +1,4 @@
import ToggleWrinklerButtons from '../Config/Toggles/ToggleWrinklerButtons';
import { CMOptions } from '../Config/VariablesAndData';
import Beautify from './BeautifyAndFormatting/Beautify';
import UpdateBuildings from './BuildingsUpgrades/Buildings';
import UpdateUpgradeSectionsHeight from './BuildingsUpgrades/UpdateUpgradeSectionsHeight';
@@ -20,7 +19,7 @@ export default function CMDrawHook() {
Game.prefs.autosave &&
Game.drawT % 10 === 0 && // with autosave ON and every 10 ticks
Game.onMenu === 'stats' &&
CMOptions.Stats // while being on the stats menu only
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Stats // while being on the stats menu only
) {
const timer = document.getElementById('CMStatsAutosaveTimer');
if (timer) {
@@ -53,7 +52,7 @@ export default function CMDrawHook() {
ToggleWrinklerButtons();
// Replace Cookies counter because Orteil uses very weird code to "pad" it...
if (CMOptions.Scale) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale) {
let str = l('cookies').innerHTML.replace(/.*(?=<br>)/i, Beautify(Game.cookies));
if (Game.prefs.monospace) str = `<span class="monospace">${str}</span>`;
l('cookies').innerHTML = str;

View File

@@ -1,6 +1,5 @@
/** Section: Functions related to the Golden Cookie Timers */
import { CMOptions } from '../../Config/VariablesAndData';
import { GCTimers } from '../VariablesAndData';
/**
@@ -21,7 +20,8 @@ export default function CreateGCTimer(cookie) {
GCTimer.style.cursor = 'pointer';
GCTimer.style.display = 'block';
GCTimer.style.pointerEvents = 'none';
if (CMOptions.GCTimer === 0) GCTimer.style.display = 'none';
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer === 0)
GCTimer.style.display = 'none';
GCTimer.style.left = cookie.l.style.left;
GCTimer.style.top = cookie.l.style.top;
GCTimer.onclick = function () {

View File

@@ -4,24 +4,26 @@ import {
CacheCurrWrinklerCPSMult,
CacheWrinklersFattest,
} from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
/**
* This function returns the cps as either current or average CPS depending on CM.Options.CPSMode
* @returns {number} The average or current cps
*/
export default function GetCPS() {
if (CMOptions.CPSMode) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CPSMode) {
return CacheAverageCPS;
}
if (CMOptions.CalcWrink === 0) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 0) {
return Game.cookiesPs * (1 - Game.cpsSucked);
}
if (CMOptions.CalcWrink === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 1) {
return Game.cookiesPs * (CacheCurrWrinklerCPSMult + (1 - CacheCurrWrinklerCount * 0.05));
}
if (CacheWrinklersFattest[1] !== null)
if (CMOptions.CalcWrink === 2 && Game.wrinklers[CacheWrinklersFattest[1]].type === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 2 &&
Game.wrinklers[CacheWrinklersFattest[1]].type === 1
) {
return (
Game.cookiesPs *
((CacheCurrWrinklerCPSMult * 3) / CacheCurrWrinklerCount +

View File

@@ -1,5 +1,4 @@
import { CacheWrinklersFattest, CacheWrinklersTotal } from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
/**
* This function returns the total amount stored in the Wrinkler Bank
@@ -7,10 +6,10 @@ import { CMOptions } from '../../Config/VariablesAndData';
* @returns {number} 0 or the amount of cookies stored (CM.Cache.WrinklersTotal)
*/
export default function GetWrinkConfigBank() {
if (CMOptions.CalcWrink === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 1) {
return CacheWrinklersTotal;
}
if (CMOptions.CalcWrink === 2) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink === 2) {
return CacheWrinklersFattest[0];
}
return 0;

View File

@@ -1,6 +1,6 @@
import { ToggleTimerBar } from '../../Config/SpecificToggles';
import ToggleBotBar from '../../Config/Toggles/ToggleBotBar';
import { CMOptions } from '../../Config/VariablesAndData';
import UpdateBackground from './UpdateBackground';
/**
@@ -10,8 +10,10 @@ import UpdateBackground from './UpdateBackground';
export default function UpdateAscendState() {
if (Game.OnAscend) {
l('game').style.bottom = '0px';
if (CMOptions.BotBar === 1) l('CMBotBar').style.display = 'none';
if (CMOptions.TimerBar === 1) l('CMTimerBar').style.display = 'none';
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar === 1)
l('CMBotBar').style.display = 'none';
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar === 1)
l('CMTimerBar').style.display = 'none';
} else {
ToggleBotBar();
ToggleTimerBar();

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import UpdateBuildings from '../BuildingsUpgrades/Buildings';
import {
ColourBackPre,
@@ -15,17 +14,23 @@ export default function UpdateColours() {
let str = '';
for (let i = 0; i < ColoursOrdering.length; i++) {
str += `.${ColourTextPre}${ColoursOrdering[i]} { color: ${
CMOptions[`Colour${ColoursOrdering[i]}`]
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[
`Colour${ColoursOrdering[i]}`
]
}; }\n`;
}
for (let i = 0; i < ColoursOrdering.length; i++) {
str += `.${ColourBackPre}${ColoursOrdering[i]} { background-color: ${
CMOptions[`Colour${ColoursOrdering[i]}`]
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[
`Colour${ColoursOrdering[i]}`
]
}; }\n`;
}
for (let i = 0; i < ColoursOrdering.length; i++) {
str += `.${ColourBorderPre}${ColoursOrdering[i]} { border: 1px solid ${
CMOptions[`Colour${ColoursOrdering[i]}`]
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[
`Colour${ColoursOrdering[i]}`
]
}; }\n`;
}
l('CMCSS').textContent = str;

View File

@@ -1,7 +1,6 @@
/** Functions related to the Bottom Bar */
import { CacheObjects1, CacheObjects10, CacheObjects100 } from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import { VersionMajor, VersionMinor } from '../../Data/Moddata.ts';
import Beautify from '../BeautifyAndFormatting/Beautify';
import FormatTime from '../BeautifyAndFormatting/FormatTime';
@@ -62,7 +61,11 @@ export function CreateBotBar() {
* This function updates the bonus-, pp-, and time-rows in the the bottom bar
*/
export function UpdateBotBar() {
if (CMOptions.BotBar === 1 && CacheObjects1 && Game.buyMode === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar === 1 &&
CacheObjects1 &&
Game.buyMode === 1
) {
let count = 0;
Object.keys(CacheObjects1).forEach((i) => {
let target = Game.buyBulk;
@@ -85,7 +88,8 @@ export function UpdateBotBar() {
l('CMBotBar').firstChild.firstChild.childNodes[2].childNodes[count].className =
ColourTextPre + target[i].color;
let PPString;
if (CMOptions.PPDisplayTime) PPString = FormatTime(Math.round(target[i].pp));
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime)
PPString = FormatTime(Math.round(target[i].pp));
else PPString = Beautify(Math.round(target[i].pp), 2);
l('CMBotBar').firstChild.firstChild.childNodes[2].childNodes[count].textContent = PPString;
const timeColour = GetTimeColour(

View File

@@ -1,7 +1,6 @@
/** Functions related to the Timer Bar */
import { UpdateBotTimerBarPosition } from '../../Config/SpecificToggles';
import { CMOptions } from '../../Config/VariablesAndData';
import {
BuffColours,
ColourBackPre,
@@ -55,14 +54,17 @@ export function CreateTimerBar() {
* This function updates indivudual timers in the timer bar
*/
export function UpdateTimerBar() {
if (CMOptions.TimerBar === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar === 1) {
// label width: 113, timer width: 30, div margin: 20
const maxWidthTwoBar = l('CMTimerBar').offsetWidth - 163;
// label width: 113, div margin: 20, calculate timer width at runtime
const maxWidthOneBar = l('CMTimerBar').offsetWidth - 133;
let numberOfTimers = 0;
if (CMOptions.AutosaveTimerBar && Game.prefs.autosave) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AutosaveTimerBar &&
Game.prefs.autosave
) {
const timeTillNextAutosave =
(Game.fps * 60 - (Game.OnAscend ? 0 : Game.T % (Game.fps * 60))) / Game.fps;
l('CMTimerBarAutosave').style.display = '';
@@ -71,7 +73,9 @@ export function UpdateTimerBar() {
(maxWidthOneBar - Math.ceil(timeTillNextAutosave).toString().length * 8)) /
60,
)}px`;
if (CMOptions.TimerBarOverlay >= 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay >= 1
) {
l('CMTimerBarAutosaveBar').textContent = Math.ceil(timeTillNextAutosave);
} else l('CMTimerBarAutosaveBar').textContent = '';
l('CMTimerBarAutosaveTime').textContent = Math.ceil(timeTillNextAutosave);
@@ -86,7 +90,7 @@ export function UpdateTimerBar() {
maxWidthTwoBar) /
Game.shimmerTypes.golden.maxTime,
)}px`;
if (CMOptions.TimerBarOverlay >= 1)
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay >= 1)
l('CMTimerBarGCMinBar').textContent = Math.ceil(
(Game.shimmerTypes.golden.minTime - Game.shimmerTypes.golden.time) / Game.fps,
);
@@ -106,7 +110,7 @@ export function UpdateTimerBar() {
maxWidthTwoBar) /
Game.shimmerTypes.golden.maxTime,
)}px`;
if (CMOptions.TimerBarOverlay >= 1)
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay >= 1)
l('CMTimerBarGCBar').textContent = Math.ceil(
Math.min(
Game.shimmerTypes.golden.maxTime - Game.shimmerTypes.golden.minTime,
@@ -128,7 +132,7 @@ export function UpdateTimerBar() {
maxWidthTwoBar) /
Game.shimmerTypes.reindeer.maxTime,
)}px`;
if (CMOptions.TimerBarOverlay >= 1)
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay >= 1)
l('CMTimerBarRenMinBar').textContent = Math.ceil(
(Game.shimmerTypes.reindeer.minTime - Game.shimmerTypes.reindeer.time) / Game.fps,
);
@@ -141,7 +145,7 @@ export function UpdateTimerBar() {
maxWidthTwoBar) /
Game.shimmerTypes.reindeer.maxTime,
)}px`;
if (CMOptions.TimerBarOverlay >= 1)
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay >= 1)
l('CMTimerBarRenBar').textContent = Math.ceil(
Math.min(
Game.shimmerTypes.reindeer.maxTime - Game.shimmerTypes.reindeer.minTime,
@@ -173,7 +177,9 @@ export function UpdateTimerBar() {
} else classColour = ColourPurple;
timer.lastChild.children[1].className = ColourBackPre + classColour;
timer.lastChild.children[1].style.color = 'black';
if (CMOptions.TimerBarOverlay === 2)
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay === 2
)
timer.lastChild.children[1].textContent = `${Math.round(
100 * (Game.buffs[i].time / Game.buffs[i].maxTime),
)}%`;

View File

@@ -1,6 +1,4 @@
import { CMOptions } from '../../Config/VariablesAndData';
import AddMenuStats from './Statistics/AddStatsPage';
import AddMenuInfo from './Info/InfoPage';
import AddMenuPref from './Settings/SettingsPage';
/**
@@ -14,12 +12,9 @@ export default function AddMenu() {
title.textContent = 'Cookie Monster Settings';
AddMenuPref(title);
} else if (Game.onMenu === 'stats') {
if (CMOptions.Stats) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Stats) {
title.textContent = 'Cookie Monster Statistics';
AddMenuStats(title);
}
} else if (Game.onMenu === 'log') {
title.textContent = 'Cookie Monster '; // To create space between name and button
AddMenuInfo(title);
}
}

View File

@@ -1,45 +0,0 @@
/** Functions related to the Stats page */
import { ToggleHeader } from '../../../Config/ToggleSetting';
import { CMOptions } from '../../../Config/VariablesAndData';
import { LatestReleaseNotes, ModDescription } from '../../../Data/Moddata.ts';
/**
* This function adds info about by CookieMonster to the info page
* @param {object} title On object that includes the title of the menu
*/
export default function AddMenuInfo(title) {
const info = document.createElement('div');
info.className = 'subsection';
const span = document.createElement('span');
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 = CMOptions.Header.InfoTab ? '-' : '+';
span.onclick = function () {
ToggleHeader('InfoTab');
Game.UpdateMenu();
};
title.appendChild(span);
info.appendChild(title);
if (CMOptions.Header.InfoTab) {
const description = document.createElement('div');
description.innerHTML = ModDescription;
info.appendChild(description);
const notes = document.createElement('div');
notes.innerHTML = LatestReleaseNotes;
info.appendChild(notes);
}
const menu = l('menu').children[1];
menu.insertBefore(info, menu.children[1]);
}

View File

@@ -1,12 +1,10 @@
import { CMOptions } from '../../Config/VariablesAndData';
/**
* This function refreshes the stats page, CM.Options.UpStats determines the rate at which that happens
* It is called by CM.Disp.Draw()
*/
export default function RefreshMenu() {
if (
CMOptions.UpStats &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpStats &&
Game.onMenu === 'stats' &&
(Game.drawT - 1) % (Game.fps * 5) !== 0 &&
(Game.drawT - 1) % Game.fps === 0

View File

@@ -1,5 +1,4 @@
import { ToggleHeader } from '../../../Config/ToggleSetting';
import { CMOptions } from '../../../Config/VariablesAndData';
/**
* This function creates a header-object for the options page
@@ -25,7 +24,9 @@ export default function CreatePrefHeader(config, text) {
span.style.color = 'black';
span.style.fontSize = '13px';
span.style.verticalAlign = 'middle';
span.textContent = CMOptions.Header[config] ? '-' : '+';
span.textContent = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[config]
? '-'
: '+';
span.onclick = function () {
ToggleHeader(config);
Game.UpdateMenu();

View File

@@ -1,10 +1,9 @@
import saveFramework from '@cookiemonsterteam/cookiemonsterframework/src/saveDataFunctions/saveFramework';
import jscolor, * as JsColor from '@eastdesire/jscolor';
import ToggleFavouriteSetting from '../../../Config/Toggles/ToggleFavourites';
import { SaveConfig } from '../../../Config/SaveLoadReload/SaveLoadReloadSettings';
import { ConfigPrefix, ToggleConfig, ToggleConfigVolume } from '../../../Config/ToggleSetting';
import { CMOptions } from '../../../Config/VariablesAndData';
import {} from '../../../Data/Sectionheaders.ts';
import Config from '../../../Data/SettingsData';
import settings from '../../../Data/settings';
import RefreshScale from '../../HelperFunctions/RefreshScale';
import UpdateColours from '../../HelperFunctions/UpdateColours';
import Flash from '../../Notifications/Flash';
@@ -26,7 +25,7 @@ function CreateFavouriteStar(config) {
FavStar.className = 'option';
FavStar.onclick = function () {
ToggleFavouriteSetting(config);
SaveConfig();
saveFramework();
Game.UpdateMenu();
};
FavStar.onmouseover = function () {
@@ -47,12 +46,15 @@ function CreateFavouriteStar(config) {
export default function CreatePrefOption(config) {
const div = document.createElement('div');
div.className = 'listing';
if (CMOptions.FavouriteSettings === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings === 1) {
div.appendChild(CreateFavouriteStar(config));
}
if (Config[config].type === 'bool') {
if (settings[config].type === 'bool') {
const a = document.createElement('a');
if (Config[config].toggle && CMOptions[config] === 0) {
if (
settings[config].toggle &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] === 0
) {
a.className = 'option off';
} else {
a.className = 'option';
@@ -62,25 +64,28 @@ export default function CreatePrefOption(config) {
ToggleConfig(config);
Game.UpdateMenu();
};
a.textContent = Config[config].label[CMOptions[config]];
a.textContent =
settings[config].label[
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config]
];
div.appendChild(a);
const label = document.createElement('label');
label.textContent = Config[config].desc;
label.textContent = settings[config].desc;
label.style.lineHeight = '1.6';
div.appendChild(label);
return div;
}
if (Config[config].type === 'vol') {
if (settings[config].type === 'vol') {
const volume = document.createElement('div');
volume.className = 'sliderBox';
const title = document.createElement('div');
title.style.float = 'left';
title.innerHTML = Config[config].desc;
title.innerHTML = settings[config].desc;
volume.appendChild(title);
const percent = document.createElement('div');
percent.id = `slider${config}right`;
percent.style.float = 'right';
percent.innerHTML = `${CMOptions[config]}%`;
percent.innerHTML = `${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config]}%`;
volume.appendChild(percent);
const slider = document.createElement('input');
slider.className = 'slider';
@@ -90,7 +95,7 @@ export default function CreatePrefOption(config) {
slider.min = '0';
slider.max = '100';
slider.step = '1';
slider.value = CMOptions[config];
slider.value = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config];
slider.oninput = function () {
ToggleConfigVolume(config);
Game.UpdateMenu();
@@ -105,7 +110,9 @@ export default function CreatePrefOption(config) {
a.className = 'option';
a.onclick = function () {
PlaySound(
CMOptions[config.replace('Volume', 'SoundURL')],
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[
config.replace('Volume', 'SoundURL')
],
config.replace('Volume', 'Sound'),
config,
true,
@@ -115,10 +122,10 @@ export default function CreatePrefOption(config) {
div.appendChild(a);
return div;
}
if (Config[config].type === 'url') {
if (settings[config].type === 'url') {
const span = document.createElement('span');
span.className = 'option';
span.textContent = `${Config[config].label} `;
span.textContent = `${settings[config].label} `;
span.style.lineHeight = '1.6';
div.appendChild(span);
const input = document.createElement('input');
@@ -126,7 +133,10 @@ export default function CreatePrefOption(config) {
input.className = 'option';
input.type = 'text';
input.readOnly = true;
input.setAttribute('value', CMOptions[config]);
input.setAttribute(
'value',
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config],
);
input.style.width = '300px';
div.appendChild(input);
div.appendChild(document.createTextNode(' '));
@@ -134,7 +144,10 @@ export default function CreatePrefOption(config) {
inputPrompt.id = `${ConfigPrefix + config}Prompt`;
inputPrompt.className = 'option';
inputPrompt.type = 'text';
inputPrompt.setAttribute('value', CMOptions[config]);
inputPrompt.setAttribute(
'value',
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config],
);
const a = document.createElement('a');
a.className = 'option';
a.onclick = function () {
@@ -142,8 +155,10 @@ export default function CreatePrefOption(config) {
[
'Save',
function () {
CMOptions[config] = l(`${ConfigPrefix}${config}Prompt`).value;
SaveConfig();
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] = l(
`${ConfigPrefix}${config}Prompt`,
).value;
saveFramework();
Game.ClosePrompt();
Game.UpdateMenu();
},
@@ -159,29 +174,33 @@ export default function CreatePrefOption(config) {
a.textContent = 'Edit';
div.appendChild(a);
const label = document.createElement('label');
label.textContent = Config[config].desc;
label.textContent = settings[config].desc;
label.style.lineHeight = '1.6';
div.appendChild(label);
return div;
}
if (Config[config].type === 'colour') {
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', CMOptions[config]);
input.setAttribute(
'value',
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config],
);
innerSpan.appendChild(input);
const change = function () {
CMOptions[this.targetElement.id] = this.toHEXString();
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[this.targetElement.id] =
this.toHEXString();
UpdateColours();
SaveConfig();
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 = Config[config].desc;
label.textContent = settings[config].desc;
label.style.lineHeight = '1.6';
innerSpan.appendChild(label);
if (config.includes('Flash')) {
@@ -197,29 +216,29 @@ export default function CreatePrefOption(config) {
jscolor.init();
return div;
}
if (Config[config].type === 'numscale') {
if (settings[config].type === 'numscale') {
const span = document.createElement('span');
span.className = 'option';
span.textContent = `${Config[config].label} `;
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 = CMOptions[config];
input.min = Config[config].min;
input.max = Config[config].max;
input.value = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config];
input.min = settings[config].min;
input.max = settings[config].max;
input.oninput = function () {
CMOptions[config] = this.value;
SaveConfig();
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 = Config[config].desc;
label.textContent = settings[config].desc;
label.style.lineHeight = '1.6';
div.appendChild(label);
return div;

View File

@@ -1,8 +1,5 @@
import { LoadConfig } from '../../../Config/SaveLoadReload/SaveLoadReloadSettings';
import { CMOptions } from '../../../Config/VariablesAndData';
import { ConfigGroups, ConfigGroupsNotification } from '../../../Data/Sectionheaders.ts';
import Config from '../../../Data/SettingsData';
import ConfigDefault from '../../../Data/SettingsDefault.ts';
import settings from '../../../Data/settings';
import { FavouriteSettings } from '../../VariablesAndData';
import CreatePrefHeader from './CreateHeader';
import CreatePrefOption from './CreateOption';
@@ -18,16 +15,19 @@ export default function AddMenuPref(title) {
Object.keys(ConfigGroups).forEach((group) => {
if (group === 'Favourite') {
if (FavouriteSettings.length !== 0 && CMOptions.FavouriteSettings > 0) {
if (
FavouriteSettings.length !== 0 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings > 0
) {
frag.appendChild(CreatePrefHeader(group, ConfigGroups[group])); // (group, display-name of group)
if (CMOptions.Header[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 (CMOptions.Header[group]) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[group]) {
// 0 is show, 1 is collapsed
// Make sub-sections of Notification section
if (group === 'Notification') {
@@ -36,32 +36,21 @@ export default function AddMenuPref(title) {
subGroupObject.style.fontSize = '15px';
subGroupObject.style.opacity = '0.5';
frag.appendChild(subGroupObject);
if (CMOptions.Header[subGroup]) {
Object.keys(Config).forEach((option) => {
if (Config[option].group === subGroup) frag.appendChild(CreatePrefOption(option));
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(Config).forEach((option) => {
if (Config[option].group === group) frag.appendChild(CreatePrefOption(option));
Object.keys(settings).forEach((option) => {
if (settings[option].group === group) frag.appendChild(CreatePrefOption(option));
});
}
}
}
});
const resDef = document.createElement('div');
resDef.className = 'listing';
const resDefBut = document.createElement('a');
resDefBut.className = 'option';
resDefBut.onclick = function () {
LoadConfig(ConfigDefault);
};
resDefBut.textContent = 'Restore Default';
resDef.appendChild(resDefBut);
frag.appendChild(resDef);
l('menu').childNodes[2].insertBefore(
frag,
l('menu').childNodes[2].childNodes[l('menu').childNodes[2].childNodes.length - 1],

View File

@@ -4,7 +4,6 @@ import { AddMissingUpgrades } from './CreateMissingUpgrades';
import * as CreateSections from './CreateStatsSections';
import * as CreateElements from './CreateDOMElements';
import * as GameData from '../../../Data/Gamedata.ts';
import { CMOptions } from '../../../Config/VariablesAndData';
import {
CacheAverageClicks,
@@ -31,37 +30,37 @@ export default function AddMenuStats(title) {
stats.appendChild(title);
stats.appendChild(CreateElements.StatsHeader('Lucky Cookies', 'Lucky'));
if (CMOptions.Header.Lucky) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Lucky) {
stats.appendChild(CreateSections.LuckySection());
}
stats.appendChild(CreateElements.StatsHeader('Chain Cookies', 'Chain'));
if (CMOptions.Header.Chain) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Chain) {
stats.appendChild(CreateSections.ChainSection());
}
if (Game.Objects['Wizard tower'].minigameLoaded) {
stats.appendChild(CreateElements.StatsHeader('Spells', 'Spells'));
if (CMOptions.Header.Spells) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Spells) {
stats.appendChild(CreateSections.SpellsSection());
}
}
if (Game.Objects.Farm.minigameLoaded) {
stats.appendChild(CreateElements.StatsHeader('Garden', 'Garden'));
if (CMOptions.Header.Garden) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Garden) {
stats.appendChild(CreateSections.GardenSection());
}
}
stats.appendChild(CreateElements.StatsHeader('Prestige', 'Prestige'));
if (CMOptions.Header.Prestige) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Prestige) {
stats.appendChild(CreateSections.PrestigeSection());
}
if (Game.cpsSucked > 0) {
stats.appendChild(CreateElements.StatsHeader('Wrinklers', 'Wrink'));
if (CMOptions.Header.Wrink) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Wrink) {
const popAllFrag = document.createDocumentFragment();
popAllFrag.appendChild(
document.createTextNode(
@@ -102,7 +101,7 @@ export default function AddMenuStats(title) {
stats.appendChild(CreateSections.SeasonSection());
stats.appendChild(CreateElements.StatsHeader('Achievements', 'Achievs'));
if (CMOptions.Header.Achievs) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Achievs) {
Object.keys(Game.Objects).forEach((i) => {
const ObjectsTillNext = CacheObjectsNextAchievement[i];
stats.appendChild(
@@ -110,7 +109,11 @@ export default function AddMenuStats(title) {
'basic',
i,
ObjectsTillNext.AmountNeeded < 101
? document.createTextNode(`Next achievement in ${ObjectsTillNext.AmountNeeded}, price: ${Beautify(ObjectsTillNext.price)}`)
? document.createTextNode(
`Next achievement in ${ObjectsTillNext.AmountNeeded}, price: ${Beautify(
ObjectsTillNext.price,
)}`,
)
: document.createTextNode('No new achievement for next 100 buildings'),
),
);
@@ -118,15 +121,26 @@ export default function AddMenuStats(title) {
}
stats.appendChild(CreateElements.StatsHeader('Miscellaneous', 'Misc'));
if (CMOptions.Header.Misc) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Misc) {
stats.appendChild(
CreateElements.StatsListing(
'basic',
`Average cookies per second (past ${
CookieTimes[CMOptions.AvgCPSHist] < 60
? `${CookieTimes[CMOptions.AvgCPSHist]} seconds`
: CookieTimes[CMOptions.AvgCPSHist] / 60 +
(CMOptions.AvgCPSHist === 3 ? ' minute' : ' minutes')
CookieTimes[
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist
] < 60
? `${
CookieTimes[
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist
]
} seconds`
: CookieTimes[
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist
] /
60 +
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist === 3
? ' minute'
: ' minutes')
})`,
document.createTextNode(Beautify(GetCPS(), 3)),
),
@@ -134,8 +148,14 @@ export default function AddMenuStats(title) {
stats.appendChild(
CreateElements.StatsListing(
'basic',
`Average cookie clicks per second (past ${ClickTimes[CMOptions.AvgClicksHist]}${
CMOptions.AvgClicksHist === 0 ? ' second' : ' seconds'
`Average cookie clicks per second (past ${
ClickTimes[
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist
]
}${
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist === 0
? ' second'
: ' seconds'
})`,
document.createTextNode(Beautify(CacheAverageClicks, 1)),
),
@@ -143,13 +163,22 @@ export default function AddMenuStats(title) {
stats.appendChild(
CreateElements.StatsListing(
'basic',
`Cookies from clicking (past ${ClickTimes[CMOptions.AvgClicksHist]}${
CMOptions.AvgClicksHist === 0 ? ' second' : ' seconds'
`Cookies from clicking (past ${
ClickTimes[
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist
]
}${
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist === 0
? ' second'
: ' seconds'
})`,
document.createTextNode(
Beautify(
CacheAverageCookiesFromClicks.calcSum(
CacheAverageClicks * ClickTimes[CMOptions.AvgClicksHist],
CacheAverageClicks *
ClickTimes[
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist
],
),
),
),
@@ -171,7 +200,7 @@ export default function AddMenuStats(title) {
),
);
}
if (CMOptions.ShowMissedGC) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ShowMissedGC) {
stats.appendChild(
CreateElements.StatsListing(
'basic',
@@ -193,10 +222,10 @@ export default function AddMenuStats(title) {
l('menu').insertBefore(stats, l('menu').childNodes[2]);
if (CMOptions.MissingUpgrades) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingUpgrades) {
AddMissingUpgrades();
}
if (CMOptions.MissingAchievements) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements) {
AddMissingAchievements();
}
}

View File

@@ -1,7 +1,7 @@
/** Section: Functions related to the creation of basic DOM elements page */
import { ToggleHeader } from '../../../Config/ToggleSetting';
import { CMOptions } from '../../../Config/VariablesAndData';
import { SimpleTooltipElements } from '../../VariablesAndData';
/**
@@ -30,7 +30,9 @@ export function StatsHeader(text, config) {
span.style.color = 'black';
span.style.fontSize = '13px';
span.style.verticalAlign = 'middle';
span.textContent = CMOptions.Header[config] ? '-' : '+';
span.textContent = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[config]
? '-'
: '+';
span.onclick = function () {
ToggleHeader(config);
Game.UpdateMenu();
@@ -99,7 +101,9 @@ export function StatsMissDispListing(type, name, text, current) {
const listingName = document.createElement('b');
listingName.textContent = name;
if (current === true) listingName.style.color = CMOptions.ColourGreen;
if (current === true)
listingName.style.color =
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen;
div.appendChild(listingName);
div.appendChild(document.createTextNode(': '));
div.appendChild(text);

View File

@@ -1,5 +1,3 @@
import { CMOptions } from '../../../Config/VariablesAndData';
function CrateTooltipLockedAchievements(me) {
const tags = [];
if (me.pool === 'shadow') tags.push('Shadow Achievement', '#9700cf');
@@ -51,7 +49,7 @@ export default function AddMissingAchievements() {
achievs = i.parentElement.querySelectorAll('div.listing.crateBox')[0];
}
});
if (CMOptions.MissingAchievements) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements) {
Object.values(achievs.children).forEach((achievsCrate) => {
if (!achievsCrate.className.includes('enabled')) {
const id = achievsCrate.onclick.toString().split(/\[(.*)\]/gi)[1];

View File

@@ -36,7 +36,6 @@ import {
CacheWrathCookiesMult,
CacheWrinklersTotal,
} from '../../../Cache/VariablesAndData';
import { CMOptions } from '../../../Config/VariablesAndData';
import ResetBonus from '../../../Sim/SimulationEvents/ResetAscension';
import GetCPS from '../../HelperFunctions/GetCPS';
import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank';
@@ -567,7 +566,9 @@ export function PrestigeSection() {
),
);
const HCTarget = Number(CMOptions.HeavenlyChipsTarget);
const HCTarget = Number(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HeavenlyChipsTarget,
);
if (!Number.isNaN(HCTarget)) {
const CookiesTillTarget =
HCTarget - Math.floor(Game.HowMuchPrestige(Game.cookiesReset + Game.cookiesEarned));
@@ -699,7 +700,7 @@ export function SeasonSection() {
if (Game.season === 'christmas' || specDisp || choEgg || centEgg) {
section.appendChild(StatsHeader('Season Specials', 'Sea'));
if (CMOptions.Header.Sea) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Sea) {
if (missingHalloweenCookies.length !== 0) {
section.appendChild(
StatsMissDispListing(

View File

@@ -0,0 +1,21 @@
import { menuFunctions } from '@cookiemonsterteam/cookiemonsterframework';
import { LatestReleaseNotes, ModDescription } from '../../Data/Moddata.ts';
/**
* Creates the <div> to be added to the Info section
* @returns {object} menuDiv Object of the <div> of Cookie Monster in info tab
*/
export default function createMenuInfo() {
const menuDiv = menuFunctions.createModMenuSection(
'cookieMonsterMod',
'Cookie Monster',
'infoMenu',
);
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.infoMenu) {
menuDiv.appendChild(menuFunctions.createInfoListing(ModDescription));
menuDiv.appendChild(menuFunctions.createInfoListing(LatestReleaseNotes));
}
return menuDiv;
}

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import { isInitializing } from '../../InitSaveLoad/Variables';
/**
@@ -12,10 +11,14 @@ import { isInitializing } from '../../InitSaveLoad/Variables';
export default function Flash(mode, config, forced) {
// The arguments check makes the sound not play upon initialization of the mod
if (
((CMOptions[config] === 1 || forced) && mode === 3 && isInitializing === false) ||
((Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[config] === 1 ||
forced) &&
mode === 3 &&
isInitializing === false) ||
mode === 1
) {
l('CMFlashScreen').style.backgroundColor = CMOptions[`Colour${config}`];
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';

View File

@@ -1,6 +1,3 @@
/** Functions related to the flashes/sound/notifications */
import { CMOptions } from '../../Config/VariablesAndData';
import { isInitializing } from '../../InitSaveLoad/Variables';
/**
@@ -13,7 +10,7 @@ import { isInitializing } from '../../InitSaveLoad/Variables';
export default function CreateNotification(notifyConfig, title, message) {
// The arguments check makes the sound not play upon initialization of the mod
if (
CMOptions[notifyConfig] === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[notifyConfig] === 1 &&
document.visibilityState === 'hidden' &&
isInitializing === false
) {

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import { isInitializing } from '../../InitSaveLoad/Variables';
/**
@@ -11,11 +10,20 @@ import { isInitializing } from '../../InitSaveLoad/Variables';
*/
export default function PlaySound(url, sndConfig, volConfig, forced) {
// The arguments check makes the sound not play upon initialization of the mod
if ((CMOptions[sndConfig] === 1 || forced) && isInitializing === false) {
if (
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[sndConfig] === 1 ||
forced) &&
isInitializing === false
) {
// eslint-disable-next-line new-cap
const sound = new Audio(url);
if (CMOptions.GeneralSound) sound.volume = (CMOptions[volConfig] / 100) * (Game.volume / 100);
else sound.volume = CMOptions[volConfig] / 100;
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();
}
}

View File

@@ -1,5 +1,4 @@
import { CacheSpawnedGoldenShimmer } from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import { LastGoldenCookieState } from '../../Main/VariablesAndData';
/**
@@ -18,7 +17,10 @@ export function CreateFavicon() {
* By relying on CM.Cache.spawnedGoldenShimmer it only changes for non-user spawned cookie
*/
export function UpdateFavicon() {
if (CMOptions.Favicon === 1 && LastGoldenCookieState > 0) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Favicon === 1 &&
LastGoldenCookieState > 0
) {
if (CacheSpawnedGoldenShimmer.wrath)
l('CMFavicon').href =
'https://CookieMonsterTeam.github.io/CookieMonster/favicon/wrathCookie.ico';

View File

@@ -1,7 +1,7 @@
/** Functions related to updating the tab in the browser's tab-bar */
import { CacheSeasonPopShimmer, CacheSpawnedGoldenShimmer } from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import { LastSeasonPopupState, LastTickerFortuneState } from '../../Main/VariablesAndData';
import { Title } from '../VariablesAndData';
@@ -10,9 +10,12 @@ import { Title } from '../VariablesAndData';
* It is called on every loop by Game.Logic() which also sets CM.Disp.Title to Game.cookies
*/
export default function UpdateTitle() {
if (Game.OnAscend || CMOptions.Title === 0) {
if (
Game.OnAscend ||
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title === 0
) {
document.title = Title;
} else if (CMOptions.Title === 1) {
} else if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title === 1) {
let addFC = false;
let addSP = false;
let titleGC;
@@ -50,7 +53,7 @@ export default function UpdateTitle() {
str = str.substring(str.lastIndexOf(']') + 1);
}
document.title = `${titleGC + (addFC ? titleFC : '') + (addSP ? titleSP : '')} ${str}`;
} else if (CMOptions.Title === 2) {
} else if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title === 2) {
let str = '';
let spawn = false;
if (CacheSpawnedGoldenShimmer) {

View File

@@ -3,7 +3,6 @@ import {
CacheLastHeavenlyChips,
CacheTimeTillNextPrestige,
} from '../../Cache/VariablesAndData';
import { CMOptions } from '../../Config/VariablesAndData';
import Beautify from '../BeautifyAndFormatting/Beautify';
/**
@@ -45,7 +44,7 @@ export default function ReplaceAscendTooltip() {
str += '<div class="line"></div>';
str += `You need <b>${Beautify(cookiesToNext)} more cookies</b> for the next level.<br>`;
str += `${
CMOptions.TooltipAscendButton
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAscendButton
? `<div class='line'></div>It takes ${CacheTimeTillNextPrestige} to reach the next level and you were making ${Beautify(
CacheHCPerSecond,
2,

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import {
ColourTextPre,
ColourBorderPre,
@@ -134,7 +133,7 @@ export function TooltipCreateWarningSection() {
'CMDispTooltipWarnUser',
ColourRed,
'Warning: ',
`Purchase of this item will put you under the number of Cookies equal to ${CMOptions.ToolWarnUser} seconds of CPS`,
`Purchase of this item will put you under the number of Cookies equal to ${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnUser} seconds of CPS`,
'CMDispTooltipWarnUserText',
),
);

View File

@@ -1,5 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
/**
* This function updates the location of the tooltip
* It is called by Game.tooltip.update() because of CM.Main.ReplaceNative()
@@ -8,8 +6,8 @@ export default function UpdateTooltipLocation() {
if (Game.tooltip.origin === 'store') {
let warnOffset = 0;
if (
CMOptions.ToolWarnLucky === 1 &&
CMOptions.ToolWarnPos === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnLucky === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos === 1 &&
l('CMDispTooltipWarningParent') !== null
) {
warnOffset = l('CMDispTooltipWarningParent').clientHeight - 4;

View File

@@ -1,6 +1,5 @@
import UpdateTooltips from './UpdateTooltips';
import { SimpleTooltipElements, TooltipName, TooltipType } from '../VariablesAndData'; // eslint-disable-line no-unused-vars
import { CMOptions } from '../../Config/VariablesAndData';
import BuildingGetPrice from '../../Sim/SimulationEvents/BuyBuilding';
import GetTimeColour from '../BeautifyAndFormatting/GetTimeColour';
import Beautify from '../BeautifyAndFormatting/Beautify';
@@ -40,7 +39,7 @@ export function CreateTooltip(type, name) {
// Buildings
l('tooltip').innerHTML = Game.Objects[name].tooltip();
// Adds amortization info to the list of info per building
if (CMOptions.TooltipAmor === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAmor === 1) {
const buildPrice = BuildingGetPrice(
Game.Objects[name],
Game.Objects[name].basePrice,

View File

@@ -5,7 +5,7 @@ import {
CacheObjects100,
CacheObjectsNextAchievement,
} from '../../../Cache/VariablesAndData';
import { CMOptions } from '../../../Config/VariablesAndData';
import BuyBuildingsBonusIncome from '../../../Sim/SimulationEvents/BuyBuildingBonusIncome';
import { SimObjects } from '../../../Sim/VariablesAndData';
import Beautify from '../../BeautifyAndFormatting/Beautify';
@@ -26,7 +26,10 @@ import * as Create from '../CreateTooltip';
* This function adds extra info to the Building tooltips
*/
export default function Building() {
if (CMOptions.TooltipBuildUpgrade === 1 && Game.buyMode === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipBuildUpgrade === 1 &&
Game.buyMode === 1
) {
const tooltipBox = l('CMTooltipBorder');
Create.TooltipCreateCalculationSection(tooltipBox);
@@ -43,18 +46,24 @@ export default function Building() {
TooltipPrice = Game.Objects[TooltipName].bulkPrice;
TooltipBonusIncome = target[TooltipName].bonus;
if (CMOptions.TooltipBuildUpgrade === 1 && Game.buyMode === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipBuildUpgrade ===
1 &&
Game.buyMode === 1
) {
l('CMTooltipIncome').textContent = Beautify(TooltipBonusIncome, 2);
const increase = Math.round((TooltipBonusIncome / Game.cookiesPs) * 10000);
if (Number.isFinite(increase) && increase !== 0) {
l('CMTooltipIncome').textContent += ` (${increase / 100}% of income)`;
} else {
l('CMTooltipIncome').textContent += ` (<0${
CMOptions.ScaleSeparator ? ',' : '.'
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleSeparator
? ','
: '.'
}01% of income)`;
}
l('CMTooltipBorder').className = ColourTextPre + target[TooltipName].color;
if (CMOptions.PPDisplayTime)
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime)
l('CMTooltipPP').textContent = FormatTime(target[TooltipName].pp);
else l('CMTooltipPP').textContent = Beautify(target[TooltipName].pp, 2);
l('CMTooltipPP').className = ColourTextPre + target[TooltipName].color;
@@ -110,7 +119,8 @@ export default function Building() {
)} / ${Beautify(ObjectsTillNext.price)} / `;
l('CMTooltipNextAchievement').style.color = 'white';
const PPFrag = document.createElement('span');
if (CMOptions.PPDisplayTime) PPFrag.textContent = FormatTime(PPOfAmount);
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime)
PPFrag.textContent = FormatTime(PPOfAmount);
else PPFrag.textContent = Beautify(PPOfAmount);
PPFrag.className = ColourTextPre + ColourOfPP({ pp: PPOfAmount }, ObjectsTillNext.price);
l('CMTooltipNextAchievement').appendChild(PPFrag);

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../../Config/VariablesAndData';
import Beautify from '../../BeautifyAndFormatting/Beautify';
import { TooltipName } from '../../VariablesAndData';
import * as Create from '../CreateTooltip';
@@ -9,7 +8,10 @@ import * as Create from '../CreateTooltip';
*/
export default function GardenPlots() {
const { minigame } = Game.Objects.Farm;
if (CMOptions.TooltipPlots && minigame.plot[TooltipName[1]][TooltipName[0]][0] !== 0) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipPlots &&
minigame.plot[TooltipName[1]][TooltipName[0]][0] !== 0
) {
const mature =
minigame.plot[TooltipName[1]][TooltipName[0]][1] >
minigame.plantsById[minigame.plot[TooltipName[1]][TooltipName[0]][0] - 1].mature;

View File

@@ -1,5 +1,5 @@
import { CacheNoGoldSwitchCookiesPS } from '../../../Cache/VariablesAndData';
import { CMOptions } from '../../../Config/VariablesAndData';
import Beautify from '../../BeautifyAndFormatting/Beautify';
import GetTimeColour from '../../BeautifyAndFormatting/GetTimeColour';
import CalculateGrimoireRefillTime from '../../HelperFunctions/CalculateGrimoireRefillTime';
@@ -15,7 +15,10 @@ export default function Grimoire() {
const { minigame } = Game.Objects['Wizard tower'];
const spellCost = minigame.getSpellCost(minigame.spellsById[TooltipName]);
if (CMOptions.TooltipGrim === 1 && spellCost <= minigame.magicM) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipGrim === 1 &&
spellCost <= minigame.magicM
) {
const tooltipBox = l('CMTooltipBorder');
// Time left till enough magic for spell

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../../Config/VariablesAndData';
import Beautify from '../../BeautifyAndFormatting/Beautify';
import * as Create from '../CreateTooltip';
@@ -9,7 +8,7 @@ import * as Create from '../CreateTooltip';
*/
export default function HarvestAll() {
const { minigame } = Game.Objects.Farm;
if (CMOptions.TooltipLump) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipLump) {
l('CMTooltipBorder').appendChild(Create.TooltipCreateHeader('Cookies gained from harvesting:'));
let totalGain = 0;
let mortal = 0;

View File

@@ -1,5 +1,4 @@
import { CacheGods } from '../../../Cache/VariablesAndData';
import { CMOptions } from '../../../Config/VariablesAndData';
import Beautify from '../../BeautifyAndFormatting/Beautify';
import { TooltipName, TooltipType } from '../../VariablesAndData';
import * as Create from '../CreateTooltip';
@@ -10,7 +9,7 @@ import * as Create from '../CreateTooltip';
* It adds to the additional information to l('CMTooltipArea')
*/
export default function PantheonGods() {
if (CMOptions.TooltipPantheon === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipPantheon === 1) {
const tooltipBox = l('CMTooltipBorder');
let GodID;
if (TooltipType === 'pas') GodID = TooltipName[1];
@@ -26,7 +25,11 @@ export default function PantheonGods() {
if (Number.isFinite(increase) && increase !== 0) {
cps1.textContent += ` (${increase / 100}% of income)`;
} else {
cps1.textContent += ` (<0${CMOptions.ScaleSeparator ? ',' : '.'}01% of income)`;
cps1.textContent += ` (<0${
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleSeparator
? ','
: '.'
}01% of income)`;
}
} else cps1.textContent = 'No effect to CPS';
tooltipBox.appendChild(cps1);
@@ -40,7 +43,11 @@ export default function PantheonGods() {
if (Number.isFinite(increase) && increase !== 0) {
cps2.textContent += ` (${increase / 100}% of income)`;
} else {
cps2.textContent += ` (<0${CMOptions.ScaleSeparator ? ',' : '.'}01% of income)`;
cps2.textContent += ` (<0${
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleSeparator
? ','
: '.'
}01% of income)`;
}
} else cps2.textContent = 'No effect to CPS';
tooltipBox.appendChild(cps2);
@@ -54,7 +61,11 @@ export default function PantheonGods() {
if (Number.isFinite(increase) && increase !== 0) {
cps3.textContent += ` (${increase / 100}% of income)`;
} else {
cps3.textContent += ` (<0${CMOptions.ScaleSeparator ? ',' : '.'}01% of income)`;
cps3.textContent += ` (<0${
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleSeparator
? ','
: '.'
}01% of income)`;
}
} else cps3.textContent = 'No effect to CPS';
tooltipBox.appendChild(cps3);

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../../Config/VariablesAndData';
import GetLumpColour from '../../HelperFunctions/GetLumpColour';
import { ColourTextPre } from '../../VariablesAndData';
import * as Create from '../CreateTooltip';
@@ -7,7 +6,7 @@ import * as Create from '../CreateTooltip';
* It adds to the additional information to l('CMTooltipArea')
*/
export default function SugarLump() {
if (CMOptions.TooltipLump === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipLump === 1) {
const tooltipBox = l('CMTooltipBorder');
tooltipBox.appendChild(Create.TooltipCreateHeader('Current Sugar Lump'));

View File

@@ -1,5 +1,5 @@
import { CacheLastChoEgg, CacheUpgrades } from '../../../Cache/VariablesAndData';
import { CMOptions } from '../../../Config/VariablesAndData';
import Beautify from '../../BeautifyAndFormatting/Beautify';
import FormatTime from '../../BeautifyAndFormatting/FormatTime';
import GetTimeColour from '../../BeautifyAndFormatting/GetTimeColour';
@@ -25,7 +25,9 @@ export default function Upgrade() {
TooltipPrice = Game.Upgrades[Game.UpgradesInStore[TooltipName].name].getPrice();
TooltipBonusMouse = CacheUpgrades[Game.UpgradesInStore[TooltipName].name].bonusMouse;
if (CMOptions.TooltipBuildUpgrade === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipBuildUpgrade === 1
) {
l('CMTooltipIncome').textContent = Beautify(TooltipBonusIncome, 2);
const increase = Math.round((TooltipBonusIncome / Game.cookiesPs) * 10000);
// Don't display certain parts of tooltip if not applicable
@@ -39,7 +41,9 @@ export default function Upgrade() {
l('CMTooltipIncome').textContent += ` (${increase / 100}% of income)`;
} else {
l('CMTooltipIncome').textContent += ` (<0${
CMOptions.ScaleSeparator ? ',' : '.'
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleSeparator
? ','
: '.'
}01% of income)`;
}
l('CMTooltipBorder').className =
@@ -59,7 +63,7 @@ export default function Upgrade() {
l('Payback PeriodTitle').style.display = 'block';
l('CMTooltipPP').style.display = 'block';
} else {
if (CMOptions.PPDisplayTime)
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime)
l('CMTooltipPP').textContent = FormatTime(
CacheUpgrades[Game.UpgradesInStore[TooltipName].name].pp,
);

View File

@@ -1,7 +1,6 @@
import GetCPSBuffMult from '../../../Cache/CPS/GetCPSBuffMult';
import { CacheEdifice, CacheLucky } from '../../../Cache/VariablesAndData';
import ToggleToolWarnPos from '../../../Config/Toggles/ToggleToolWarnPos';
import { CMOptions } from '../../../Config/VariablesAndData';
import Beautify from '../../BeautifyAndFormatting/Beautify';
import FormatTime from '../../BeautifyAndFormatting/FormatTime';
import GetCPS from '../../HelperFunctions/GetCPS';
@@ -19,21 +18,25 @@ export default function Warnings() {
ToggleToolWarnPos();
}
if (CMOptions.ToolWarnPos === 0) l('CMDispTooltipWarningParent').style.right = '0px';
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos === 0)
l('CMDispTooltipWarningParent').style.right = '0px';
else l('CMDispTooltipWarningParent').style.top = `${l('tooltip').offsetHeight}px`;
l('CMDispTooltipWarningParent').style.width = `${l('tooltip').offsetWidth - 6}px`;
const amount = Game.cookies + GetWrinkConfigBank() - TooltipPrice;
const bonusIncomeUsed = CMOptions.ToolWarnBon ? TooltipBonusIncome : 0;
const bonusIncomeUsed = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings
.ToolWarnBon
? TooltipBonusIncome
: 0;
let limitLucky = CacheLucky;
if (CMOptions.ToolWarnBon === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnBon === 1) {
let bonusNoFren = TooltipBonusIncome;
bonusNoFren /= GetCPSBuffMult();
limitLucky += (bonusNoFren * 60 * 15) / 0.15;
}
if (CMOptions.ToolWarnLucky === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnLucky === 1) {
if (amount < limitLucky && (TooltipType !== 'b' || Game.buyMode === 1)) {
l('CMDispTooltipWarnLucky').style.display = '';
l('CMDispTooltipWarnLuckyText').textContent = `${Beautify(
@@ -42,7 +45,9 @@ export default function Warnings() {
} else l('CMDispTooltipWarnLucky').style.display = 'none';
} else l('CMDispTooltipWarnLucky').style.display = 'none';
if (CMOptions.ToolWarnLuckyFrenzy === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnLuckyFrenzy === 1
) {
const limitLuckyFrenzy = limitLucky * 7;
if (amount < limitLuckyFrenzy && (TooltipType !== 'b' || Game.buyMode === 1)) {
l('CMDispTooltipWarnLuckyFrenzy').style.display = '';
@@ -52,7 +57,7 @@ export default function Warnings() {
} else l('CMDispTooltipWarnLuckyFrenzy').style.display = 'none';
} else l('CMDispTooltipWarnLuckyFrenzy').style.display = 'none';
if (CMOptions.ToolWarnConjure === 1) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnConjure === 1) {
const limitConjure = limitLucky * 2;
if (amount < limitConjure && (TooltipType !== 'b' || Game.buyMode === 1)) {
l('CMDispTooltipWarnConjure').style.display = '';
@@ -62,7 +67,10 @@ export default function Warnings() {
} else l('CMDispTooltipWarnConjure').style.display = 'none';
} else l('CMDispTooltipWarnConjure').style.display = 'none';
if (CMOptions.ToolWarnConjureFrenzy === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnConjureFrenzy ===
1
) {
const limitConjureFrenzy = limitLucky * 2 * 7;
if (amount < limitConjureFrenzy && (TooltipType !== 'b' || Game.buyMode === 1)) {
l('CMDispTooltipWarnConjureFrenzy').style.display = '';
@@ -72,7 +80,10 @@ export default function Warnings() {
} else l('CMDispTooltipWarnConjureFrenzy').style.display = 'none';
} else l('CMDispTooltipWarnConjureFrenzy').style.display = 'none';
if (CMOptions.ToolWarnEdifice === 1 && Game.Objects['Wizard tower'].minigameLoaded) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnEdifice === 1 &&
Game.Objects['Wizard tower'].minigameLoaded
) {
if (CacheEdifice && amount < CacheEdifice && (TooltipType !== 'b' || Game.buyMode === 1)) {
l('CMDispTooltipWarnEdifice').style.display = '';
l('CMDispTooltipWarnEdificeText').textContent = `${Beautify(
@@ -81,20 +92,27 @@ export default function Warnings() {
} else l('CMDispTooltipWarnEdifice').style.display = 'none';
} else l('CMDispTooltipWarnEdifice').style.display = 'none';
if (CMOptions.ToolWarnUser > 0) {
if (Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnUser > 0) {
if (
amount < CMOptions.ToolWarnUser * GetCPS() &&
amount <
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnUser *
GetCPS() &&
(TooltipType !== 'b' || Game.buyMode === 1)
) {
l('CMDispTooltipWarnUser').style.display = '';
// Need to update tooltip text dynamically
l(
'CMDispTooltipWarnUser',
).children[0].textContent = `Purchase of this item will put you under the number of Cookies equal to ${CMOptions.ToolWarnUser} seconds of CPS`;
).children[0].textContent = `Purchase of this item will put you under the number of Cookies equal to ${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnUser} seconds of CPS`;
l('CMDispTooltipWarnUserText').textContent = `${Beautify(
CMOptions.ToolWarnUser * GetCPS() - amount,
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnUser *
GetCPS() -
amount,
)} (${FormatTime(
(CMOptions.ToolWarnUser * GetCPS() - amount) / (GetCPS() + bonusIncomeUsed),
(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnUser *
GetCPS() -
amount) /
(GetCPS() + bonusIncomeUsed),
)})`;
} else l('CMDispTooltipWarnUser').style.display = 'none';
} else l('CMDispTooltipWarnUser').style.display = 'none';

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import { SimObjects } from '../../Sim/VariablesAndData';
import Beautify from '../BeautifyAndFormatting/Beautify';
import {
@@ -13,7 +12,10 @@ import {
* As wrinklers are not appended to the DOM we us a different system than for other tooltips
*/
export function CheckWrinklerTooltip() {
if (CMOptions.TooltipWrink === 1 && TooltipWrinklerArea === 1) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink === 1 &&
TooltipWrinklerArea === 1
) {
// Latter is set by CM.Main.AddWrinklerAreaDetect
let showingTooltip = false;
Object.keys(Game.wrinklers).forEach((i) => {
@@ -50,7 +52,10 @@ export function CheckWrinklerTooltip() {
* As wrinklers are not appended to the DOM we us a different system than for other tooltips
*/
export function UpdateWrinklerTooltip() {
if (CMOptions.TooltipWrink === 1 && l('CMTooltipWrinkler') !== null) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink === 1 &&
l('CMTooltipWrinkler') !== null
) {
let { sucked } = Game.wrinklers[TooltipWrinkler];
let toSuck = 1.1;
if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05;

View File

@@ -1,3 +1,4 @@
import { initFunctions } from '@cookiemonsterteam/cookiemonsterframework';
import { VersionMajor, VersionMinor } from '../Data/Moddata.ts';
import CMDrawHook from '../Disp/DrawHook';
import CMClickHook from '../Main/ClickHook';
@@ -14,6 +15,11 @@ import { isInitializing } from './Variables'; // eslint-disable-line no-unused-v
export default function init() {
isInitializing = true;
let proceed = true;
// Load Cookie Monster Mod Framework and register mod
initFunctions.initModFramework();
initFunctions.registerMod('cookieMonsterMod');
if (Game.version !== Number(VersionMajor)) {
// eslint-disable-next-line no-restricted-globals, no-alert
proceed = confirm(

View File

@@ -1,6 +1,10 @@
import { LoadConfig } from '../Config/SaveLoadReload/SaveLoadReloadSettings';
import loadMod from '@cookiemonsterteam/cookiemonsterframework/src/saveDataFunctions/loadMod';
import headers from '../Data/headers';
import { VersionMajor, VersionMinor } from '../Data/Moddata.ts';
import { FavouriteSettings } from '../Disp/VariablesAndData'; // eslint-disable-line no-unused-vars
import settings from '../Data/settings';
import UpdateColours from '../Disp/HelperFunctions/UpdateColours';
import CMLoopHook from '../Main/LoopHook';
import InitData from '../Sim/InitializeData/InitData';
/**
@@ -8,12 +12,13 @@ import InitData from '../Sim/InitializeData/InitData';
* "do stuff with the string data you saved previously"
*/
export default function load(str) {
const save = JSON.parse(str);
InitData();
// The if-statement is a failsafe for old saves
if (typeof save.favouriteSettings !== 'undefined') FavouriteSettings = save.favouriteSettings;
LoadConfig(save.settings);
if (save.version !== `${VersionMajor}.${VersionMinor}`) {
loadMod('cookieMonsterMod', str, settings, headers, CMLoopHook);
UpdateColours();
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.version !==
`${VersionMajor}.${VersionMinor}`
) {
if (Game.prefs.popups)
Game.Popup(
'A new version of Cookie Monster has been loaded, check out the release notes in the info tab!',

View File

@@ -1,6 +1,4 @@
import { CMOptions } from '../Config/VariablesAndData';
import { VersionMajor, VersionMinor } from '../Data/Moddata.ts';
import { FavouriteSettings } from '../Disp/VariablesAndData';
/**
* This creates a save function to the CM object. Per Game code/comments:
@@ -8,9 +6,7 @@ import { FavouriteSettings } from '../Disp/VariablesAndData';
* return 'a string to be saved';"
*/
export default function save() {
return JSON.stringify({
favouriteSettings: FavouriteSettings,
settings: CMOptions,
version: `${VersionMajor}.${VersionMinor}`,
});
const saveObject = Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod;
saveObject.version = `${VersionMajor}.${VersionMinor}`;
return JSON.stringify(saveObject);
}

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import Flash from '../../Disp/Notifications/Flash';
import PlaySound from '../../Disp/Notifications/Sound';
import { LastGardenNextStep } from '../VariablesAndData';
@@ -13,7 +12,12 @@ export default function CheckGardenTick() {
) {
if (LastGardenNextStep !== 0 && LastGardenNextStep < Date.now()) {
Flash(3, 'GardFlash', false);
PlaySound(CMOptions.GardSoundURL, 'GardSound', 'GardVolume', false);
PlaySound(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GardSoundURL,
'GardSound',
'GardVolume',
false,
);
}
LastGardenNextStep = Game.Objects.Farm.minigame.nextStep;
}

View File

@@ -1,5 +1,4 @@
import { CacheSpawnedGoldenShimmer, CacheGoldenShimmersByID } from '../../Cache/VariablesAndData'; // eslint-disable-line no-unused-vars
import { CMOptions } from '../../Config/VariablesAndData';
import CreateGCTimer from '../../Disp/GoldenCookieTimers/GoldenCookieTimers';
import Flash from '../../Disp/Notifications/Flash';
import CreateNotification from '../../Disp/Notifications/Notification';
@@ -46,7 +45,12 @@ export default function CheckGoldenCookie() {
if (LastGoldenCookieState) {
if (LastSpawnedGoldenCookieState < CurrSpawnedGoldenCookieState) {
Flash(3, 'GCFlash', false);
PlaySound(CMOptions.GCSoundURL, 'GCSound', 'GCVolume', false);
PlaySound(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCSoundURL,
'GCSound',
'GCVolume',
false,
);
CreateNotification(
'GCNotification',
'Golden Cookie Spawned',
@@ -63,7 +67,10 @@ export default function CheckGoldenCookie() {
UpdateFavicon();
LastSpawnedGoldenCookieState = CurrSpawnedGoldenCookieState;
if (CurrSpawnedGoldenCookieState === 0) CacheSpawnedGoldenShimmer = 0;
} else if (CMOptions.GCTimer === 1 && LastGoldenCookieState) {
} else if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer === 1 &&
LastGoldenCookieState
) {
Object.keys(GCTimers).forEach((i) => {
GCTimers[i].style.opacity = CacheGoldenShimmersByID[i].l.style.opacity;
GCTimers[i].style.transform = CacheGoldenShimmersByID[i].l.style.transform;

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import Flash from '../../Disp/Notifications/Flash';
import CreateNotification from '../../Disp/Notifications/Notification';
import PlaySound from '../../Disp/Notifications/Sound';
@@ -9,13 +8,21 @@ import { LastMagicBarFull } from '../VariablesAndData';
* It is called by CM.Main.Loop
*/
export default function CheckMagicMeter() {
if (Game.Objects['Wizard tower'].minigameLoaded && CMOptions.GrimoireBar === 1) {
if (
Game.Objects['Wizard tower'].minigameLoaded &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GrimoireBar === 1
) {
const { minigame } = Game.Objects['Wizard tower'];
if (minigame.magic < minigame.magicM) LastMagicBarFull = false;
else if (!LastMagicBarFull) {
LastMagicBarFull = true;
Flash(3, 'MagicFlash', false);
PlaySound(CMOptions.MagicSoundURL, 'MagicSound', 'MagicVolume', false);
PlaySound(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MagicSoundURL,
'MagicSound',
'MagicVolume',
false,
);
CreateNotification(
'MagicNotification',
'Magic Meter full',

View File

@@ -1,5 +1,4 @@
import { CacheSeasonPopShimmer } from '../../Cache/VariablesAndData'; // eslint-disable-line no-unused-vars
import { CMOptions } from '../../Config/VariablesAndData';
import Flash from '../../Disp/Notifications/Flash';
import CreateNotification from '../../Disp/Notifications/Notification';
import PlaySound from '../../Disp/Notifications/Sound';
@@ -18,7 +17,12 @@ export default function CheckSeasonPopup() {
}
});
Flash(3, 'SeaFlash', false);
PlaySound(CMOptions.SeaSoundURL, 'SeaSound', 'SeaVolume', false);
PlaySound(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaSoundURL,
'SeaSound',
'SeaVolume',
false,
);
CreateNotification(
'SeaNotification',
'Reindeer sighted!',

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import Flash from '../../Disp/Notifications/Flash';
import CreateNotification from '../../Disp/Notifications/Notification';
import PlaySound from '../../Disp/Notifications/Sound';
@@ -13,7 +12,12 @@ export default function CheckTickerFortune() {
LastTickerFortuneState = Game.TickerEffect && Game.TickerEffect.type === 'fortune';
if (LastTickerFortuneState) {
Flash(3, 'FortuneFlash', false);
PlaySound(CMOptions.FortuneSoundURL, 'FortuneSound', 'FortuneVolume', false);
PlaySound(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneSoundURL,
'FortuneSound',
'FortuneVolume',
false,
);
CreateNotification(
'FortuneNotification',
'Fortune Cookie found',

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import Flash from '../../Disp/Notifications/Flash';
import CreateNotification from '../../Disp/Notifications/Notification';
import PlaySound from '../../Disp/Notifications/Sound';
@@ -16,17 +15,36 @@ export default function CheckWrinklerCount() {
});
if (CurrentWrinklers > LastWrinklerCount) {
LastWrinklerCount = CurrentWrinklers;
if (CurrentWrinklers === Game.getWrinklersMax() && CMOptions.WrinklerMaxFlash) {
if (
CurrentWrinklers === Game.getWrinklersMax() &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxFlash
) {
Flash(3, 'WrinklerMaxFlash', false);
} else {
Flash(3, 'WrinklerFlash', false);
}
if (CurrentWrinklers === Game.getWrinklersMax() && CMOptions.WrinklerMaxSound) {
PlaySound(CMOptions.WrinklerMaxSoundURL, 'WrinklerMaxSound', 'WrinklerMaxVolume', false);
if (
CurrentWrinklers === Game.getWrinklersMax() &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSound
) {
PlaySound(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSoundURL,
'WrinklerMaxSound',
'WrinklerMaxVolume',
false,
);
} else {
PlaySound(CMOptions.WrinklerSoundURL, 'WrinklerSound', 'WrinklerVolume', false);
PlaySound(
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerSoundURL,
'WrinklerSound',
'WrinklerVolume',
false,
);
}
if (CurrentWrinklers === Game.getWrinklersMax() && CMOptions.WrinklerMaxNotification) {
if (
CurrentWrinklers === Game.getWrinklersMax() &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification
) {
CreateNotification(
'WrinklerMaxNotification',
'Maximum Wrinklers Reached',

View File

@@ -1,6 +1,5 @@
import InitCache from '../Cache/CacheInit';
import { CacheStatsCookies } from '../Cache/Stats/Stats';
import { LoadConfig } from '../Config/SaveLoadReload/SaveLoadReloadSettings';
import { VersionMajor, VersionMinor } from '../Data/Moddata.ts';
import CreateUpgradeBar from '../Disp/BuildingsUpgrades/UpgradeBar';
import { CreateBotBar } from '../Disp/InfoBars/BottomBar';
@@ -20,6 +19,7 @@ import ReplaceNative from './ReplaceGameFunctions/ReplaceNative';
import { LastModCount } from './VariablesAndData'; // eslint-disable-line no-unused-vars
import AddWrinklerAreaDetect from './WrinklerArea/AddDetectArea';
import CreateBuildingLockButtons from '../Disp/Buildings/CreateBuildingLockButtons';
import createMenuInfo from '../Disp/MenuSections/createMenuInfo';
/**
* Initialization loop of Cookie Monster
@@ -28,6 +28,9 @@ export default function InitializeCookieMonster() {
// Create global data object
window.CookieMonsterData = {};
// Register listeners in Cookie Monster Mod Framework
Game.mods.cookieMonsterFramework.listeners.infoMenu.push(createMenuInfo);
InitData();
CacheStatsCookies();
InitCache();
@@ -58,7 +61,6 @@ export default function InitializeCookieMonster() {
ReplaceNativeGrimoire();
Game.CalculateGains();
LoadConfig();
CMLastAscendState = Game.OnAscend;
if (Game.prefs.popups)

View File

@@ -1,4 +1,3 @@
import { CMOptions } from '../../Config/VariablesAndData';
import FormatTime from '../../Disp/BeautifyAndFormatting/FormatTime';
import CalculateGrimoireRefillTime from '../../Disp/HelperFunctions/CalculateGrimoireRefillTime';
import {
@@ -19,7 +18,10 @@ function ReplaceNativeGrimoireDraw() {
BackupGrimoireDraw = minigame.draw;
Game.Objects['Wizard tower'].minigame.draw = function () {
BackupGrimoireDraw();
if (CMOptions.GrimoireBar === 1 && minigame.magic < minigame.magicM) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GrimoireBar === 1 &&
minigame.magic < minigame.magicM
) {
minigame.magicBarTextL.innerHTML += ` (${FormatTime(
CalculateGrimoireRefillTime(minigame.magic, minigame.magicM, minigame.magicM),
)})`;

View File

@@ -1,12 +1,13 @@
import { CMOptions } from '../../Config/VariablesAndData';
/**
* This function fixes Game.mouseY as a result of bars that are added by CookieMonster
* It is called by Game.UpdateWrinklers(), Game.UpdateSpecial() and the .onmousover of the BigCookie
* before execution of their actual function
*/
export default function FixMouseY(target) {
if (CMOptions.TimerBar === 1 && CMOptions.TimerBarPos === 0) {
if (
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar === 1 &&
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos === 0
) {
const timerBarHeight = parseInt(l('CMTimerBar').style.height, 10);
Game.mouseY -= timerBarHeight;
target();

View File

@@ -1,5 +1,5 @@
import jscolor from '@eastdesire/jscolor';
import { CMOptions } from '../../Config/VariablesAndData';
import CMBeautify from '../../Disp/BeautifyAndFormatting/Beautify';
import FormatTime from '../../Disp/BeautifyAndFormatting/FormatTime';
import { AddAuraInfo, AddDragonLevelUpTooltip } from '../../Disp/Dragon/Dragon';
@@ -86,7 +86,7 @@ export default function ReplaceNative() {
*/
Game.ClickProduct = function (what) {
if (
!CMOptions.BulkBuyBlock ||
!Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BulkBuyBlock ||
Game.ObjectsById[what].bulkPrice < Game.cookies ||
Game.buyMode === -1
) {

View File

@@ -9,4 +9,5 @@ export const Game = {
LeftBackground: { canvas: { parentNode: {} } },
RebuildUpgrades() {},
UpgradesInStore: {},
mods: { cookieMonsterFramework: { saveData: { cookieMonsterMod: { settings: {} } } } },
};

View File

@@ -3,7 +3,6 @@ import { assert } from 'chai';
import { l, Game } from '../../GlobalsForTesting';
import ToggleBotBar from '../../../src/Config/Toggles/ToggleBotBar';
import { CMOptions } from '../../../src/Config/VariablesAndData';
describe('ToggleBotBar', () => {
global.l = l;
@@ -16,7 +15,7 @@ describe('ToggleBotBar', () => {
describe('BotBar = 0', () => {
before(() => {
CMOptions.BotBar = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar = 0;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMBotBar.style.display, 'none'); // eslint-disable-line no-undef
@@ -24,7 +23,7 @@ describe('ToggleBotBar', () => {
});
describe('BotBar = 1', () => {
before(() => {
CMOptions.BotBar = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar = 1;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMBotBar.style.display, ''); // eslint-disable-line no-undef

View File

@@ -2,7 +2,6 @@ import { before, beforeEach, describe, it } from 'mocha';
import { assert } from 'chai';
import { Game } from '../../GlobalsForTesting';
import { CMOptions } from '../../../src/Config/VariablesAndData';
import ToggleDetailedTime from '../../../src/Config/Toggles/ToggleDetailedTime';
import { BackupFunctions } from '../../../src/Main/VariablesAndData';
@@ -15,7 +14,7 @@ describe('ToggleDetailedTime', () => {
describe('DetailedTime = 0', () => {
before(() => {
CMOptions.DetailedTime = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DetailedTime = 0;
BackupFunctions.sayTime = 'BackupFunctions.sayTime';
});
it('Set correct time function', () => {
@@ -24,7 +23,7 @@ describe('ToggleDetailedTime', () => {
});
describe('DetailedTime = 1', () => {
before(() => {
CMOptions.DetailedTime = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DetailedTime = 1;
});
it('Set correct time function', () => {
assert.equal(Game.sayTime.name, 'CMSayTime');

View File

@@ -2,7 +2,6 @@ import { before, beforeEach, describe, it } from 'mocha';
import { assert } from 'chai';
import { l } from '../../GlobalsForTesting';
import { CMOptions } from '../../../src/Config/VariablesAndData';
import ToggleGCTimer from '../../../src/Config/Toggles/ToggleGCTimer';
import { GCTimers } from '../../../src/Disp/VariablesAndData';
import { CacheGoldenShimmersByID } from '../../../src/Cache/VariablesAndData';
@@ -25,7 +24,7 @@ describe('ToggleGCTimer', () => {
describe('GCTimer = 0', () => {
before(() => {
CMOptions.GCTimer = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer = 0;
});
it('Toggle style correctly', () => {
assert.equal(GCTimers[0].style.display, 'none');
@@ -34,7 +33,7 @@ describe('ToggleGCTimer', () => {
});
describe('GCTimer = 1', () => {
before(() => {
CMOptions.GCTimer = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer = 1;
});
it('Toggle style correctly', () => {
assert.equal(GCTimers[0].style.display, 'block');

View File

@@ -2,7 +2,6 @@ import { before, beforeEach, describe, it } from 'mocha';
import { assert } from 'chai';
import { l } from '../../GlobalsForTesting';
import { CMOptions } from '../../../src/Config/VariablesAndData';
import ToggleSectionHideButtons from '../../../src/Config/Toggles/ToggleSectionHideButtons';
describe('ToggleSectionHideButtons', () => {
@@ -15,7 +14,7 @@ describe('ToggleSectionHideButtons', () => {
describe('HideSectionsButtons = 0', () => {
before(() => {
CMOptions.HideSectionsButtons = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HideSectionsButtons = 0;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMSectionHidButtons.style.display, 'none'); // eslint-disable-line no-undef
@@ -23,7 +22,7 @@ describe('ToggleSectionHideButtons', () => {
});
describe('HideSectionsButtons = 1', () => {
before(() => {
CMOptions.HideSectionsButtons = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HideSectionsButtons = 1;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMSectionHidButtons.style.display, ''); // eslint-disable-line no-undef

View File

@@ -2,7 +2,6 @@ import { before, beforeEach, describe, it } from 'mocha';
import { assert } from 'chai';
import { l } from '../../GlobalsForTesting';
import { CMOptions } from '../../../src/Config/VariablesAndData';
import ToggleToolWarnPos from '../../../src/Config/Toggles/ToggleToolWarnPos';
describe('ToggleToolWarnPos', () => {
@@ -15,7 +14,7 @@ describe('ToggleToolWarnPos', () => {
describe('ToolWarnPos = 0', () => {
before(() => {
CMOptions.ToolWarnPos = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos = 0;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMDispTooltipWarningParent.style.top, 'auto'); // eslint-disable-line no-undef
@@ -25,7 +24,7 @@ describe('ToggleToolWarnPos', () => {
});
describe('ToolWarnPos = 1', () => {
before(() => {
CMOptions.ToolWarnPos = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos = 1;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMDispTooltipWarningParent.style.right, 'auto'); // eslint-disable-line no-undef

View File

@@ -2,7 +2,6 @@ import { before, beforeEach, describe, it } from 'mocha';
import { assert } from 'chai';
import { l, Game } from '../../GlobalsForTesting';
import { CMOptions } from '../../../src/Config/VariablesAndData';
import ToggleUpgradeBarAndColor from '../../../src/Config/Toggles/ToggleUpgradeBarAndColour';
describe('ToggleUpgradeBarAndColor', () => {
@@ -16,7 +15,7 @@ describe('ToggleUpgradeBarAndColor', () => {
describe('UpBarColor = 0', () => {
before(() => {
CMOptions.UpBarColor = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColor = 0;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMUpgradeBar.style.display, 'none'); // eslint-disable-line no-undef
@@ -24,7 +23,7 @@ describe('ToggleUpgradeBarAndColor', () => {
});
describe('UpBarColor = 1', () => {
before(() => {
CMOptions.UpBarColor = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColor = 1;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMUpgradeBar.style.display, ''); // eslint-disable-line no-undef
@@ -32,7 +31,7 @@ describe('ToggleUpgradeBarAndColor', () => {
});
describe('UpBarColor = 2', () => {
before(() => {
CMOptions.UpBarColor = 2;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColor = 2;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMUpgradeBar.style.display, 'none'); // eslint-disable-line no-undef

View File

@@ -2,7 +2,6 @@ import { before, beforeEach, describe, it } from 'mocha';
import { assert } from 'chai';
import { l } from '../../GlobalsForTesting';
import { CMOptions } from '../../../src/Config/VariablesAndData';
import ToggleUpgradeBarFixedPos from '../../../src/Config/Toggles/ToggleUpgradeBarFixedPos';
describe('ToggleUpgradeBarFixedPos', () => {
@@ -15,7 +14,7 @@ describe('ToggleUpgradeBarFixedPos', () => {
describe('UpgradeBarFixedPos = 0', () => {
before(() => {
CMOptions.UpgradeBarFixedPos = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradeBarFixedPos = 0;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMUpgradeBar.style.position, ''); // eslint-disable-line no-undef
@@ -23,7 +22,7 @@ describe('ToggleUpgradeBarFixedPos', () => {
});
describe('UpgradeBarFixedPos = 1', () => {
before(() => {
CMOptions.UpgradeBarFixedPos = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradeBarFixedPos = 1;
});
it('Toggle style correctly', () => {
assert.equal(domids.CMUpgradeBar.style.position, 'sticky'); // eslint-disable-line no-undef

View File

@@ -2,7 +2,6 @@ import { before, beforeEach, describe, it } from 'mocha';
import { assert } from 'chai';
import { l, Game } from '../../GlobalsForTesting';
import { CMOptions } from '../../../src/Config/VariablesAndData';
import ToggleWrinklerButtons from '../../../src/Config/Toggles/ToggleWrinklerButtons';
describe('ToggleWrinklerButtons', () => {
@@ -16,7 +15,7 @@ describe('ToggleWrinklerButtons', () => {
describe('WrinklerButtons = 0', () => {
before(() => {
CMOptions.WrinklerButtons = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerButtons = 0;
});
describe('Game.elderWrath = 0', () => {
before(() => {
@@ -39,7 +38,7 @@ describe('ToggleWrinklerButtons', () => {
});
describe('WrinklerButtons = 1', () => {
before(() => {
CMOptions.WrinklerButtons = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerButtons = 1;
});
describe('Game.elderWrath = 0', () => {
before(() => {

View File

@@ -2,7 +2,6 @@ import { before, describe, it } from 'mocha';
import { assert } from 'chai';
import FormatTime from '../../src/Disp/BeautifyAndFormatting/FormatTime';
import { CMOptions } from '../../src/Config/VariablesAndData';
describe('FormatTime', () => {
it('Format when time is Infinity', () => {
@@ -13,7 +12,7 @@ describe('FormatTime', () => {
});
describe('TimeFormat = 0', () => {
before(() => {
CMOptions.TimeFormat = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat = 0;
});
describe('Longformat = 0', () => {
it('Format when time is 0', () => {
@@ -70,7 +69,7 @@ describe('FormatTime', () => {
});
describe('TimeFormat = 1', () => {
before(() => {
CMOptions.TimeFormat = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat = 1;
});
it('Format when time is 0', () => {
assert.equal(FormatTime(0, 0), '00:00:00:00:00');

View File

@@ -2,7 +2,6 @@ import { before, describe, it } from 'mocha';
import { expect } from 'chai';
import GetTimeColour from '../../src/Disp/BeautifyAndFormatting/GetTimeColour';
import { CMOptions } from '../../src/Config/VariablesAndData';
describe('GetTimeColour', () => {
it('Format when time is less than 60', () => {
@@ -16,7 +15,7 @@ describe('GetTimeColour', () => {
});
describe('TimeFormat = 0', () => {
before(() => {
CMOptions.TimeFormat = 0;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat = 0;
});
it('Format when time is 0', () => {
expect(GetTimeColour(0)).to.deep.equal({ text: 'Done!', color: 'Green' });
@@ -30,7 +29,7 @@ describe('GetTimeColour', () => {
});
describe('TimeFormat = 1', () => {
before(() => {
CMOptions.TimeFormat = 1;
Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat = 1;
});
it('Format when time is 0', () => {
expect(GetTimeColour(0)).to.deep.equal({