Optional display of missing upgrades to stats
This commit is contained in:
114
CookieMonster.js
114
CookieMonster.js
@@ -442,6 +442,24 @@ CM.Cache.UpdateAvgCPS = function() {
|
||||
}
|
||||
}
|
||||
|
||||
CM.Cache.CalcMissingUpgrades = function() {
|
||||
var currentMissingUpgrades = []
|
||||
for (var i in CM.Cache.MissingUpgrades) {
|
||||
if ((CM.Cache.MissingUpgrades[i].pool == "" || CM.Cache.MissingUpgrades[i].pool == "tech") && CM.Cache.MissingUpgrades[i].bought != 1) {
|
||||
currentMissingUpgrades.push(CM.Cache.MissingUpgrades[i])
|
||||
}
|
||||
}
|
||||
CM.Cache.MissingUpgrades = currentMissingUpgrades
|
||||
|
||||
var currentMissingCookies = []
|
||||
for (var i in CM.Cache.MissingCookies) {
|
||||
if (CM.Cache.MissingCookies[i].pool == "cookie" && CM.Cache.MissingCookies[i].bought != 1) {
|
||||
currentMissingCookies.push(CM.Cache.MissingCookies[i])
|
||||
}
|
||||
}
|
||||
CM.Cache.MissingCookies = currentMissingCookies
|
||||
}
|
||||
|
||||
CM.Cache.min = -1;
|
||||
CM.Cache.max = -1;
|
||||
CM.Cache.mid = -1;
|
||||
@@ -480,6 +498,11 @@ CM.Cache.ClicksDiff;
|
||||
CM.Cache.AvgCPS = -1;
|
||||
CM.Cache.AvgCPSChoEgg = -1;
|
||||
CM.Cache.AvgClicks = -1;
|
||||
CM.Cache.MissingUpgrades = Game.Upgrades;
|
||||
CM.Cache.MissingCookies = Game.Upgrades;
|
||||
CM.Cache.UpgradesOwned = -1;
|
||||
CM.Cache.MissingUpgradesString = null;
|
||||
CM.Cache.MissingCookiesString = null;
|
||||
|
||||
/**********
|
||||
* Config *
|
||||
@@ -730,6 +753,7 @@ CM.ConfigData.TooltipGrim = {label: ['Grimoire Tooltip Information OFF', 'Grimoi
|
||||
CM.ConfigData.ToolWrink = {label: ['Wrinkler Tooltip OFF', 'Wrinkler Tooltip ON'], desc: 'Shows the amount of cookies a wrinkler will give when popping it', toggle: true};
|
||||
CM.ConfigData.TooltipLump = {label: ['Sugar Lump Tooltip OFF', 'Sugar Lump Tooltip ON'], desc: 'Shows the current Sugar Lump type in Sugar lump tooltip.', toggle: true};
|
||||
CM.ConfigData.Stats = {label: ['Statistics OFF', 'Statistics ON'], desc: 'Extra Cookie Monster statistics!', toggle: true};
|
||||
CM.ConfigData.MissingUpgrades = {label: ['Missing Upgrades OFF', 'Missing Upgrades ON'], desc: 'Shows Missing upgrades in Stats Menu.', toggle: true};
|
||||
CM.ConfigData.UpStats = {label: ['Statistics Update Rate (Default)', 'Statistics Update Rate (1s)'], desc: 'Default Game rate is once every 5 seconds', toggle: false};
|
||||
CM.ConfigData.TimeFormat = {label: ['Time XXd, XXh, XXm, XXs', 'Time XX:XX:XX:XX:XX'], desc: 'Change the time format', toggle: false};
|
||||
CM.ConfigData.SayTime = {label: ['Format Time OFF', 'Format Time ON'], desc: 'Change how time is displayed in statistics', toggle: true, func: function() {CM.Disp.ToggleSayTime();}};
|
||||
@@ -1792,6 +1816,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];
|
||||
}
|
||||
}
|
||||
@@ -2208,6 +2233,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'));
|
||||
@@ -2681,6 +2707,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');
|
||||
@@ -2692,8 +2795,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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3637,6 +3746,7 @@ CM.ConfigDefault = {
|
||||
ToolWrink: 1,
|
||||
TooltipLump: 1,
|
||||
Stats: 1,
|
||||
MissingUpgrades: 0,
|
||||
UpStats: 1,
|
||||
TimeFormat: 0,
|
||||
SayTime: 1,
|
||||
|
||||
Reference in New Issue
Block a user