Optional display of missing upgrades to stats

This commit is contained in:
Daniel van Noord
2020-12-01 11:37:03 +01:00
parent 9b87b1d5ad
commit f810c42b73
5 changed files with 224 additions and 4 deletions

View File

@@ -1020,6 +1020,7 @@ CM.Disp.CheckGoldenCookie = function() {
for (var i in CM.Disp.GCTimers) {
if (typeof CM.Disp.goldenShimmersByID[i] == "undefined") {
CM.Disp.GCTimers[i].parentNode.removeChild(CM.Disp.GCTimers[i]);
// TODO remove delete here
delete CM.Disp.GCTimers[i];
}
}
@@ -1436,6 +1437,7 @@ CM.Disp.AddMenuPref = function(title) {
frag.appendChild(header('Statistics', 'Statistics'));
if (CM.Config.MenuPref.Statistics) {
frag.appendChild(listing('Stats'));
frag.appendChild(listing('MissingUpgrades'));
frag.appendChild(listing('UpStats'));
frag.appendChild(listing('TimeFormat'));
frag.appendChild(listing('SayTime'));
@@ -1909,6 +1911,83 @@ CM.Disp.AddMenuStats = function(title) {
l('menu').insertBefore(stats, l('menu').childNodes[2]);
}
CM.Disp.AddMissingUpgrades = function() {
if (CM.Cache.UpgradesOwned != Game.UpgradesOwned) {
CM.Cache.CalcMissingUpgrades();
CM.Cache.MissingUpgradesString = null;
CM.Cache.MissingCookiesString = null;
}
// Sort the lists of missing cookies & upgrades
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.sort(sortMap);
CM.Cache.MissingCookies.sort(sortMap);;
// 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) {
return '<div class="crate upgrade disabled noFrame" ' +
Game.getTooltip(
'<div style="padding:8px 4px;min-width:350px;">' +
'<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>' +
'<div style="float:right;"><span class="price">' + Beautify(Math.round(me.getPrice())) + '</span></div>' +
'<div class="name">' + me.name + '</div>' +
'<div class="line"></div><div class="description">' + me.desc + '</div></div>',
'top',
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 createElementBox = function (elements) {
var div = document.createElement('div');
div.className = 'listing crateBox';
elements.forEach(function (element) {
div.innerHTML += createUpgradeElement(element);
});
return div;
};
// This function creates header element with given text.
var createHeader = function (text) {
var div = document.createElement('div');
div.className = 'listing';
var b = document.createElement('b');
b.textContent = text;
div.appendChild(b);
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);
}
}
CM.Disp.AddMenu = function() {
var title = function() {
var div = document.createElement('div');
@@ -1920,8 +1999,14 @@ CM.Disp.AddMenu = function() {
if (Game.onMenu == 'prefs') {
CM.Disp.AddMenuPref(title);
}
else if (CM.Config.Stats == 1 && Game.onMenu == 'stats') {
CM.Disp.AddMenuStats(title);
else if (Game.onMenu == 'stats') {
if (CM.Config.Stats) {
CM.Disp.AddMenuStats(title);
}
if (CM.Config.MissingUpgrades) {
CM.Disp.AddMissingUpgrades();
}
}
}