Rewrote Missing Upgrades code

This commit is contained in:
Daniel van Noord
2020-12-21 11:24:23 +01:00
parent 1a0f9ed1a2
commit 1cffb822fb
5 changed files with 270 additions and 178 deletions

View File

@@ -44,6 +44,7 @@ CM.Cache.InitCache = function() {
CM.Cache.CacheDragonAuras(); CM.Cache.CacheDragonAuras();
CM.Cache.CacheWrinklers(); CM.Cache.CacheWrinklers();
CM.Cache.CacheStats(); CM.Cache.CacheStats();
CM.Cache.CacheMissingUpgrades();
} }
/******** /********
@@ -146,6 +147,43 @@ CM.Cache.CacheStats = function() {
} }
} }
/**
* This functions caches variables related to missing upgrades
* It is called by CM.Loop() and CM.Cache.InitCache()
* @global {string} CM.Cache.MissingUpgrades String containig the HTML to create the "crates" for missing normal upgrades
* @global {string} CM.Cache.MissingUpgradesCookies String containig the HTML to create the "crates" for missing cookie upgrades
* @global {string} CM.Cache.MissingUpgradesPrestige String containig the HTML to create the "crates" for missing prestige upgrades
*/
CM.Cache.CacheMissingUpgrades = function() {
CM.Cache.MissingUpgrades = "";
CM.Cache.MissingUpgradesCookies = "";
CM.Cache.MissingUpgradesPrestige = "";
var list = [];
//sort the upgrades
for (var i in Game.Upgrades) {
list.push(Game.Upgrades[i]);
}
var sortMap = function(a, b) {
if (a.order>b.order) return 1;
else if (a.order<b.order) return -1;
else return 0;
}
list.sort(sortMap);
for (var i in list) {
var me = list[i];
if (me.bought == 0) {
var str = '';
str += CM.Disp.crateMissing(me);
if (me.pool == 'prestige') CM.Cache.MissingUpgradesPrestige += str;
else if (me.pool == 'cookie') CM.Cache.MissingUpgradesCookies += str;
else if (me.pool != 'toggle' && me.pool != 'unused') CM.Cache.MissingUpgrades += str;
}
}
}
/******** /********
* Section: UNSORTED */ * Section: UNSORTED */
@@ -558,22 +596,34 @@ CM.Cache.UpdateAvgCPS = function() {
} }
} }
CM.Cache.CalcMissingUpgrades = function() { CM.Cache.CacheMissingUpgrades = function() {
var currentMissingUpgrades = [] CM.Cache.MissingUpgrades = "";
for (var i in CM.Cache.MissingUpgrades) { CM.Cache.MissingUpgradesCookies = "";
if ((CM.Cache.MissingUpgrades[i].pool == "" || CM.Cache.MissingUpgrades[i].pool == "tech") && CM.Cache.MissingUpgrades[i].bought != 1) { CM.Cache.MissingUpgradesPrestige = "";
currentMissingUpgrades.push(CM.Cache.MissingUpgrades[i]) var list = [];
//sort the upgrades
for (var i in Game.Upgrades) {
list.push(Game.Upgrades[i]);
} }
var sortMap = function(a, b) {
if (a.order>b.order) return 1;
else if (a.order<b.order) return -1;
else return 0;
} }
CM.Cache.MissingUpgrades = currentMissingUpgrades list.sort(sortMap);
var currentMissingCookies = [] for (var i in list) {
for (var i in CM.Cache.MissingCookies) { var me = list[i];
if (CM.Cache.MissingCookies[i].pool == "cookie" && CM.Cache.MissingCookies[i].bought != 1) {
currentMissingCookies.push(CM.Cache.MissingCookies[i]) if (me.bought == 0) {
var str = '';
str += CM.Disp.crateMissing(me);
if (me.pool == 'prestige') CM.Cache.MissingUpgradesPrestige += str;
else if (me.pool == 'cookie') CM.Cache.MissingUpgradesCookies += str;
else if (me.pool != 'toggle' && me.pool != 'unused') CM.Cache.MissingUpgrades += str;
} }
} }
CM.Cache.MissingCookies = currentMissingCookies
} }
CM.Cache.min = -1; CM.Cache.min = -1;
@@ -850,7 +900,7 @@ CM.ConfigGroups = {
Calculation: "Calculation", Calculation: "Calculation",
Notification: "Notification", Notification: "Notification",
Tooltip: "Tooltips", Tooltip: "Tooltips",
Statistics: "Statitics", Statistics: "Statistics",
Notation: "Notation"}, Notation: "Notation"},
/******** /********
@@ -1053,7 +1103,7 @@ CM.Data.ConfigDefault = {
TooltipLump: 1, TooltipLump: 1,
DragonAuraInfo: 1, DragonAuraInfo: 1,
Stats: 1, Stats: 1,
MissingUpgrades: 0, MissingUpgrades: 1,
UpStats: 1, UpStats: 1,
TimeFormat: 0, TimeFormat: 0,
DetailedTime: 1, DetailedTime: 1,
@@ -3163,7 +3213,6 @@ CM.Disp.UpdateColors = function() {
/******** /********
* Section: Functions related to the Stats page * Section: Functions related to the Stats page
* TODO: Annotate last functions */
/** /**
* This function adds stats created by CookieMonster to the stats page * This function adds stats created by CookieMonster to the stats page
@@ -3682,84 +3731,80 @@ CM.Disp.CreateStatsPrestigeSection = function() {
return section; return section;
} }
// TODO: Fix and annotate this function.
/** /**
* This function creates the missing upgrades sections for prestige, normal and cookie upgrades
* It is called by CM.Disp.AddMenuStats() when CM.Options.MissingUpgrades is set
*/
CM.Disp.AddMissingUpgrades = function() { CM.Disp.AddMissingUpgrades = function() {
if (CM.Cache.UpgradesOwned != Game.UpgradesOwned) { if (CM.Cache.MissingUpgradesPrestige) {
CM.Cache.CalcMissingUpgrades(); var prestigeUpgradesOwned = Game.PrestigeUpgrades.length - l('menu').children[5].children[3].children.length;
CM.Cache.MissingUpgradesString = null; var title = document.createElement('div');
CM.Cache.MissingCookiesString = null; title.id = "CMMissingUpgradesPrestigeTitle";
title.className = "listing";
titlefrag = document.createElement('div');
titlefrag.innerHTML = '<b>Missing Prestige upgrades:</b> '+ prestigeUpgradesOwned + '/' + Game.PrestigeUpgrades.length + ' (' + Math.floor((prestigeUpgradesOwned / Game.PrestigeUpgrades.length) * 100) + '%)';
title.appendChild(titlefrag)
l('menu').children[5].appendChild(title)
upgrades = document.createElement('div');
upgrades.className = "listing crateBox";
upgrades.innerHTML = CM.Cache.MissingUpgradesPrestige;
l('menu').children[5].appendChild(upgrades)
} }
if (CM.Cache.MissingUpgrades) {
// Sort the lists of missing cookies & upgrades var normalUpgradesOwned = Game.UpgradesByPool[""].length + Game.UpgradesByPool["tech"].length - l('menu').children[6].childNodes[2].children.length;
var sortMap = function(a,b) { var title = document.createElement('div');
if (a.order > b.order) return 1; title.id = "CMMissingUpgradesTitle";
else if (a.order < b.order) return -1; title.className = "listing";
else return 0; titlefrag = document.createElement('div');
titlefrag.innerHTML = '<b>Missing normal upgrades:</b> '+ normalUpgradesOwned + '/' + (Game.UpgradesByPool[""].length + Game.UpgradesByPool["tech"].length) + ' (' + Math.floor((normalUpgradesOwned / ( Game.UpgradesByPool[""].length + Game.UpgradesByPool["tech"].length)) * 100) + '%)';
title.appendChild(titlefrag)
l('menu').children[6].insertBefore(title, l('menu').children[6].childNodes[3])
upgrades = document.createElement('div');
upgrades.className = "listing crateBox";
upgrades.innerHTML = CM.Cache.MissingUpgrades;
l('menu').children[6].insertBefore(upgrades, document.getElementById("CMMissingUpgradesTitle").nextSibling)
} }
CM.Cache.MissingUpgrades.sort(sortMap); if (CM.Cache.MissingUpgradesCookies) {
CM.Cache.MissingCookies.sort(sortMap);; var cookieUpgradesOwned = Game.UpgradesByPool["cookie"].length - l('menu').children[6].lastChild.children.length;
var title = document.createElement('div');
title.id = "CMMissingUpgradesCookiesTitle";
title.className = "listing";
titlefrag = document.createElement('div');
titlefrag.innerHTML = '<b>Missing Cookie upgrades:</b> '+ cookieUpgradesOwned + '/' + Game.UpgradesByPool["cookie"].length + ' (' + Math.floor((cookieUpgradesOwned / Game.UpgradesByPool["cookie"].length) * 100) + '%)';
title.appendChild(titlefrag)
l('menu').children[6].appendChild(title)
upgrades = document.createElement('div');
upgrades.className = "listing crateBox";
upgrades.innerHTML = CM.Cache.MissingUpgradesCookies;
l('menu').children[6].appendChild(upgrades)
// Find Upgrades-section of stats menu
var upgradesMenu = null;
for (var i = 0; i < l("menu").getElementsByClassName("subsection").length && upgradesMenu == null; i++)
{
if (l("menu").getElementsByClassName("subsection")[i].getElementsByClassName("title")[0].textContent === "Upgrades")
{
upgradesMenu = l("menu").getElementsByClassName("subsection")[i];
} }
} }
// This function creates div element from given object. It also adds tooltip for it. /**
var createUpgradeElement = function (me) { * This function returns the "crates" (icons) for missing upgrades in the stats sections
return '<div class="crate upgrade disabled noFrame" ' + * It returns a html string that gets appended to the respective CM.Cache.MissingUpgrades-variable by CM.Cache.CacheMissingUpgrades()
Game.getTooltip( * It is also called by CM.Cache.CacheMissingUpgrades() for every non bought upgrade
'<div style="padding:8px 4px;min-width:350px;">' + * @param {object} me The upgrade object
'<div class="icon" style="float:left;margin-left:-8px;margin-top:-8px;' + (me.icon[2] ? 'background-image:url(' + me.icon[2] + ');' : '') + 'background-position:' + (-me.icon[0] * 48) + 'px ' + (-me.icon[1] * 48) + 'px;"></div>' + * @returns {string} ? The HTML string that creates the icon.
'<div style="float:right;"><span class="price">' + Beautify(Math.round(me.getPrice())) + '</span></div>' + */
'<div class="name">' + me.name + '</div>' + CM.Disp.crateMissing = function(me) {
'<div class="line"></div><div class="description">' + me.desc + '</div></div>', var classes = 'crate upgrade missing';
'top', if (me.pool == 'prestige') classes+=' heavenly';
true) +
' style="background-position:' + (-me.icon[0] * 48) + 'px ' + (-me.icon[1] * 48) + 'px;"></div>';
};
// This function creates section of given elements and adds this elements to it. var noFrame = 0;
var createElementBox = function (elements) { if (!Game.prefs.crates) noFrame = 1;
var div = document.createElement('div'); if (noFrame) classes += ' noFrame';
div.className = 'listing crateBox';
elements.forEach(function (element) {
div.innerHTML += createUpgradeElement(element);
});
return div;
};
// This function creates header element with given text. var icon = me.icon;
var createHeader = function (text) { if (me.iconFunction) icon = me.iconFunction();
var div = document.createElement('div'); tooltip = `function() {return Game.crateTooltip(Game.UpgradesById[${me.id}], 'stats');}`;
div.className = 'listing'; return `<div class="${classes}"
var b = document.createElement('b'); ${Game.getDynamicTooltip(tooltip, 'top', true)}
b.textContent = text; style = "${((icon[2] ? 'background-image: url(' + icon[2] + ');' : '') + 'background-position:' + (-icon[0] * 48)+ 'px ' + (-icon[1] * 48) + 'px')};">
div.appendChild(b); </div>`;
return div;
};
if (CM.Cache.MissingUpgrades.length > 0) {
upgradesMenu.appendChild(createHeader("Missing Upgrades"));
if (CM.Cache.MissingUpgradesString == null) {
CM.Cache.MissingUpgradesString = createElementBox(CM.Cache.MissingUpgrades);
}
upgradesMenu.appendChild(CM.Cache.MissingUpgradesString);
} }
if (CM.Cache.MissingCookies.length > 0) {
upgradesMenu.appendChild(createHeader("Missing Cookies"));
if (CM.Cache.MissingCookiesString == null) {
CM.Cache.MissingCookiesString = createElementBox(CM.Cache.MissingCookies);
}
upgradesMenu.appendChild(CM.Cache.MissingCookiesString);
}
} */
/******** /********
* Section: Variables used in Disp functions * Section: Variables used in Disp functions
@@ -3981,6 +4026,7 @@ CM.Loop = function() {
CM.Sim.NoGoldSwitchCookiesPS(); // Needed first CM.Sim.NoGoldSwitchCookiesPS(); // Needed first
CM.Cache.RemakeGoldenAndWrathCookiesMults(); CM.Cache.RemakeGoldenAndWrathCookiesMults();
CM.Cache.CacheStats(); CM.Cache.CacheStats();
CM.Cache.CacheMissingUpgrades();
CM.Cache.RemakeChain(); CM.Cache.RemakeChain();
CM.Cache.RemakeSeaSpec(); CM.Cache.RemakeSeaSpec();

View File

@@ -15,6 +15,7 @@ CM.Cache.InitCache = function() {
CM.Cache.CacheDragonAuras(); CM.Cache.CacheDragonAuras();
CM.Cache.CacheWrinklers(); CM.Cache.CacheWrinklers();
CM.Cache.CacheStats(); CM.Cache.CacheStats();
CM.Cache.CacheMissingUpgrades();
} }
/******** /********
@@ -117,6 +118,43 @@ CM.Cache.CacheStats = function() {
} }
} }
/**
* This functions caches variables related to missing upgrades
* It is called by CM.Loop() and CM.Cache.InitCache()
* @global {string} CM.Cache.MissingUpgrades String containig the HTML to create the "crates" for missing normal upgrades
* @global {string} CM.Cache.MissingUpgradesCookies String containig the HTML to create the "crates" for missing cookie upgrades
* @global {string} CM.Cache.MissingUpgradesPrestige String containig the HTML to create the "crates" for missing prestige upgrades
*/
CM.Cache.CacheMissingUpgrades = function() {
CM.Cache.MissingUpgrades = "";
CM.Cache.MissingUpgradesCookies = "";
CM.Cache.MissingUpgradesPrestige = "";
var list = [];
//sort the upgrades
for (var i in Game.Upgrades) {
list.push(Game.Upgrades[i]);
}
var sortMap = function(a, b) {
if (a.order>b.order) return 1;
else if (a.order<b.order) return -1;
else return 0;
}
list.sort(sortMap);
for (var i in list) {
var me = list[i];
if (me.bought == 0) {
var str = '';
str += CM.Disp.crateMissing(me);
if (me.pool == 'prestige') CM.Cache.MissingUpgradesPrestige += str;
else if (me.pool == 'cookie') CM.Cache.MissingUpgradesCookies += str;
else if (me.pool != 'toggle' && me.pool != 'unused') CM.Cache.MissingUpgrades += str;
}
}
}
/******** /********
* Section: UNSORTED */ * Section: UNSORTED */
@@ -529,22 +567,34 @@ CM.Cache.UpdateAvgCPS = function() {
} }
} }
CM.Cache.CalcMissingUpgrades = function() { CM.Cache.CacheMissingUpgrades = function() {
var currentMissingUpgrades = [] CM.Cache.MissingUpgrades = "";
for (var i in CM.Cache.MissingUpgrades) { CM.Cache.MissingUpgradesCookies = "";
if ((CM.Cache.MissingUpgrades[i].pool == "" || CM.Cache.MissingUpgrades[i].pool == "tech") && CM.Cache.MissingUpgrades[i].bought != 1) { CM.Cache.MissingUpgradesPrestige = "";
currentMissingUpgrades.push(CM.Cache.MissingUpgrades[i]) var list = [];
//sort the upgrades
for (var i in Game.Upgrades) {
list.push(Game.Upgrades[i]);
} }
var sortMap = function(a, b) {
if (a.order>b.order) return 1;
else if (a.order<b.order) return -1;
else return 0;
} }
CM.Cache.MissingUpgrades = currentMissingUpgrades list.sort(sortMap);
var currentMissingCookies = [] for (var i in list) {
for (var i in CM.Cache.MissingCookies) { var me = list[i];
if (CM.Cache.MissingCookies[i].pool == "cookie" && CM.Cache.MissingCookies[i].bought != 1) {
currentMissingCookies.push(CM.Cache.MissingCookies[i]) if (me.bought == 0) {
var str = '';
str += CM.Disp.crateMissing(me);
if (me.pool == 'prestige') CM.Cache.MissingUpgradesPrestige += str;
else if (me.pool == 'cookie') CM.Cache.MissingUpgradesCookies += str;
else if (me.pool != 'toggle' && me.pool != 'unused') CM.Cache.MissingUpgrades += str;
} }
} }
CM.Cache.MissingCookies = currentMissingCookies
} }
CM.Cache.min = -1; CM.Cache.min = -1;

View File

@@ -60,7 +60,7 @@ CM.ConfigGroups = {
Calculation: "Calculation", Calculation: "Calculation",
Notification: "Notification", Notification: "Notification",
Tooltip: "Tooltips", Tooltip: "Tooltips",
Statistics: "Statitics", Statistics: "Statistics",
Notation: "Notation"}, Notation: "Notation"},
/******** /********
@@ -263,7 +263,7 @@ CM.Data.ConfigDefault = {
TooltipLump: 1, TooltipLump: 1,
DragonAuraInfo: 1, DragonAuraInfo: 1,
Stats: 1, Stats: 1,
MissingUpgrades: 0, MissingUpgrades: 1,
UpStats: 1, UpStats: 1,
TimeFormat: 0, TimeFormat: 0,
DetailedTime: 1, DetailedTime: 1,

View File

@@ -2093,7 +2093,6 @@ CM.Disp.UpdateColors = function() {
/******** /********
* Section: Functions related to the Stats page * Section: Functions related to the Stats page
* TODO: Annotate last functions */
/** /**
* This function adds stats created by CookieMonster to the stats page * This function adds stats created by CookieMonster to the stats page
@@ -2612,84 +2611,80 @@ CM.Disp.CreateStatsPrestigeSection = function() {
return section; return section;
} }
// TODO: Fix and annotate this function.
/** /**
* This function creates the missing upgrades sections for prestige, normal and cookie upgrades
* It is called by CM.Disp.AddMenuStats() when CM.Options.MissingUpgrades is set
*/
CM.Disp.AddMissingUpgrades = function() { CM.Disp.AddMissingUpgrades = function() {
if (CM.Cache.UpgradesOwned != Game.UpgradesOwned) { if (CM.Cache.MissingUpgradesPrestige) {
CM.Cache.CalcMissingUpgrades(); var prestigeUpgradesOwned = Game.PrestigeUpgrades.length - l('menu').children[5].children[3].children.length;
CM.Cache.MissingUpgradesString = null; var title = document.createElement('div');
CM.Cache.MissingCookiesString = null; title.id = "CMMissingUpgradesPrestigeTitle";
title.className = "listing";
titlefrag = document.createElement('div');
titlefrag.innerHTML = '<b>Missing Prestige upgrades:</b> '+ prestigeUpgradesOwned + '/' + Game.PrestigeUpgrades.length + ' (' + Math.floor((prestigeUpgradesOwned / Game.PrestigeUpgrades.length) * 100) + '%)';
title.appendChild(titlefrag)
l('menu').children[5].appendChild(title)
upgrades = document.createElement('div');
upgrades.className = "listing crateBox";
upgrades.innerHTML = CM.Cache.MissingUpgradesPrestige;
l('menu').children[5].appendChild(upgrades)
} }
if (CM.Cache.MissingUpgrades) {
// Sort the lists of missing cookies & upgrades var normalUpgradesOwned = Game.UpgradesByPool[""].length + Game.UpgradesByPool["tech"].length - l('menu').children[6].childNodes[2].children.length;
var sortMap = function(a,b) { var title = document.createElement('div');
if (a.order > b.order) return 1; title.id = "CMMissingUpgradesTitle";
else if (a.order < b.order) return -1; title.className = "listing";
else return 0; titlefrag = document.createElement('div');
titlefrag.innerHTML = '<b>Missing normal upgrades:</b> '+ normalUpgradesOwned + '/' + (Game.UpgradesByPool[""].length + Game.UpgradesByPool["tech"].length) + ' (' + Math.floor((normalUpgradesOwned / ( Game.UpgradesByPool[""].length + Game.UpgradesByPool["tech"].length)) * 100) + '%)';
title.appendChild(titlefrag)
l('menu').children[6].insertBefore(title, l('menu').children[6].childNodes[3])
upgrades = document.createElement('div');
upgrades.className = "listing crateBox";
upgrades.innerHTML = CM.Cache.MissingUpgrades;
l('menu').children[6].insertBefore(upgrades, document.getElementById("CMMissingUpgradesTitle").nextSibling)
} }
CM.Cache.MissingUpgrades.sort(sortMap); if (CM.Cache.MissingUpgradesCookies) {
CM.Cache.MissingCookies.sort(sortMap);; var cookieUpgradesOwned = Game.UpgradesByPool["cookie"].length - l('menu').children[6].lastChild.children.length;
var title = document.createElement('div');
title.id = "CMMissingUpgradesCookiesTitle";
title.className = "listing";
titlefrag = document.createElement('div');
titlefrag.innerHTML = '<b>Missing Cookie upgrades:</b> '+ cookieUpgradesOwned + '/' + Game.UpgradesByPool["cookie"].length + ' (' + Math.floor((cookieUpgradesOwned / Game.UpgradesByPool["cookie"].length) * 100) + '%)';
title.appendChild(titlefrag)
l('menu').children[6].appendChild(title)
upgrades = document.createElement('div');
upgrades.className = "listing crateBox";
upgrades.innerHTML = CM.Cache.MissingUpgradesCookies;
l('menu').children[6].appendChild(upgrades)
// Find Upgrades-section of stats menu
var upgradesMenu = null;
for (var i = 0; i < l("menu").getElementsByClassName("subsection").length && upgradesMenu == null; i++)
{
if (l("menu").getElementsByClassName("subsection")[i].getElementsByClassName("title")[0].textContent === "Upgrades")
{
upgradesMenu = l("menu").getElementsByClassName("subsection")[i];
} }
} }
// This function creates div element from given object. It also adds tooltip for it. /**
var createUpgradeElement = function (me) { * This function returns the "crates" (icons) for missing upgrades in the stats sections
return '<div class="crate upgrade disabled noFrame" ' + * It returns a html string that gets appended to the respective CM.Cache.MissingUpgrades-variable by CM.Cache.CacheMissingUpgrades()
Game.getTooltip( * It is also called by CM.Cache.CacheMissingUpgrades() for every non bought upgrade
'<div style="padding:8px 4px;min-width:350px;">' + * @param {object} me The upgrade object
'<div class="icon" style="float:left;margin-left:-8px;margin-top:-8px;' + (me.icon[2] ? 'background-image:url(' + me.icon[2] + ');' : '') + 'background-position:' + (-me.icon[0] * 48) + 'px ' + (-me.icon[1] * 48) + 'px;"></div>' + * @returns {string} ? The HTML string that creates the icon.
'<div style="float:right;"><span class="price">' + Beautify(Math.round(me.getPrice())) + '</span></div>' + */
'<div class="name">' + me.name + '</div>' + CM.Disp.crateMissing = function(me) {
'<div class="line"></div><div class="description">' + me.desc + '</div></div>', var classes = 'crate upgrade missing';
'top', if (me.pool == 'prestige') classes+=' heavenly';
true) +
' style="background-position:' + (-me.icon[0] * 48) + 'px ' + (-me.icon[1] * 48) + 'px;"></div>';
};
// This function creates section of given elements and adds this elements to it. var noFrame = 0;
var createElementBox = function (elements) { if (!Game.prefs.crates) noFrame = 1;
var div = document.createElement('div'); if (noFrame) classes += ' noFrame';
div.className = 'listing crateBox';
elements.forEach(function (element) {
div.innerHTML += createUpgradeElement(element);
});
return div;
};
// This function creates header element with given text. var icon = me.icon;
var createHeader = function (text) { if (me.iconFunction) icon = me.iconFunction();
var div = document.createElement('div'); tooltip = `function() {return Game.crateTooltip(Game.UpgradesById[${me.id}], 'stats');}`;
div.className = 'listing'; return `<div class="${classes}"
var b = document.createElement('b'); ${Game.getDynamicTooltip(tooltip, 'top', true)}
b.textContent = text; style = "${((icon[2] ? 'background-image: url(' + icon[2] + ');' : '') + 'background-position:' + (-icon[0] * 48)+ 'px ' + (-icon[1] * 48) + 'px')};">
div.appendChild(b); </div>`;
return div;
};
if (CM.Cache.MissingUpgrades.length > 0) {
upgradesMenu.appendChild(createHeader("Missing Upgrades"));
if (CM.Cache.MissingUpgradesString == null) {
CM.Cache.MissingUpgradesString = createElementBox(CM.Cache.MissingUpgrades);
}
upgradesMenu.appendChild(CM.Cache.MissingUpgradesString);
} }
if (CM.Cache.MissingCookies.length > 0) {
upgradesMenu.appendChild(createHeader("Missing Cookies"));
if (CM.Cache.MissingCookiesString == null) {
CM.Cache.MissingCookiesString = createElementBox(CM.Cache.MissingCookies);
}
upgradesMenu.appendChild(CM.Cache.MissingCookiesString);
}
} */
/******** /********
* Section: Variables used in Disp functions * Section: Variables used in Disp functions

View File

@@ -147,6 +147,7 @@ CM.Loop = function() {
CM.Sim.NoGoldSwitchCookiesPS(); // Needed first CM.Sim.NoGoldSwitchCookiesPS(); // Needed first
CM.Cache.RemakeGoldenAndWrathCookiesMults(); CM.Cache.RemakeGoldenAndWrathCookiesMults();
CM.Cache.CacheStats(); CM.Cache.CacheStats();
CM.Cache.CacheMissingUpgrades();
CM.Cache.RemakeChain(); CM.Cache.RemakeChain();
CM.Cache.RemakeSeaSpec(); CM.Cache.RemakeSeaSpec();