Files
CookieMonster/src/Main/LoopHook.js
2021-05-06 21:45:58 +02:00

89 lines
3.1 KiB
JavaScript

import InitCache from '../Cache/CacheInit';
import LoopCache from '../Cache/CacheLoop';
import CacheNoGoldSwitchCPS from '../Cache/CPS/NoGoldSwitchCPS';
import CacheSellAllForChoEgg from '../Cache/CPS/SellChoEgg';
import CacheDragonCost from '../Cache/Dragon/Dragon';
import CachePantheonGods from '../Cache/PantheonGods/CacheGods';
import { CacheBuildingsPrices, CacheIncome } from '../Cache/PriceAndIncome/PriceAndIncome';
import { CacheChain } from '../Cache/Stats/ChainCookies';
import CacheAllMissingUpgrades from '../Cache/Stats/MissingUpgrades';
import CacheSeasonSpec from '../Cache/Stats/Reindeer';
import { CacheGoldenAndWrathCookiesMults, CacheStatsCookies } from '../Cache/Stats/Stats';
import AllAmountTillNextAchievement from '../Cache/TillNextAchievement/AllAmountTillNextAchievement';
import { CacheDoRemakeBuildPrices, CacheHadBuildAura } from '../Cache/VariablesAndData';
import UpdateAscendState from '../Disp/HelperFunctions/UpdateAscendState';
import { LastAscendState } from '../Disp/VariablesAndData';
import InitData from '../Sim/InitializeData/InitData';
import { SimDoSims } from '../Sim/VariablesAndData';
import CheckGardenTick from './CheckStates/Garden';
import CheckGoldenCookie from './CheckStates/GoldenCookie';
import CheckMagicMeter from './CheckStates/Grimoire';
import CheckSeasonPopup from './CheckStates/Season';
import CheckTickerFortune from './CheckStates/Ticker';
import CheckWrinklerCount from './CheckStates/Wrinkler';
import { LastModCount } from './VariablesAndData';
/**
* Main loop of Cookie Monster
* CM.init registers it to the "logic" hook provided by the modding api
*/
export default function CMLoopHook() {
if (LastAscendState !== Game.OnAscend) {
LastAscendState = Game.OnAscend;
UpdateAscendState();
}
if (!Game.OnAscend && Game.AscendTimer === 0) {
// Check if any other mods have been loaded
if (LastModCount !== Object.keys(Game.mods).length) {
InitData();
InitCache();
LastModCount = Object.keys(Game.mods).length;
}
// CM.Sim.DoSims is set whenever CPS has changed
if (SimDoSims) {
AllAmountTillNextAchievement(true);
CacheIncome();
CacheNoGoldSwitchCPS(); // Needed first
CacheGoldenAndWrathCookiesMults();
CacheStatsCookies();
CacheAllMissingUpgrades();
CacheChain();
CacheDragonCost();
CachePantheonGods();
CacheSeasonSpec();
CacheSellAllForChoEgg();
SimDoSims = 0;
}
// Check for aura change to recalculate buildings prices
const hasBuildAura = Game.auraMult('Fierce Hoarder') > 0;
if (!CacheHadBuildAura && hasBuildAura) {
CacheHadBuildAura = true;
CacheDoRemakeBuildPrices = 1;
} else if (CacheHadBuildAura && !hasBuildAura) {
CacheHadBuildAura = false;
CacheDoRemakeBuildPrices = 1;
}
if (CacheDoRemakeBuildPrices) {
CacheBuildingsPrices();
CacheDoRemakeBuildPrices = 0;
}
LoopCache();
// Check all changing minigames and game-states
CheckTickerFortune();
CheckSeasonPopup();
CheckGardenTick();
CheckMagicMeter();
CheckWrinklerCount();
}
// To remove Timers when ascending
CheckGoldenCookie();
}