diff --git a/CookieMonster.js b/CookieMonster.js index 495b981..913e278 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -914,6 +914,7 @@ CM.ConfigData.GrimoireBar = {type: 'bool', group: 'Statistics', label: ['Grimoir // Statistics CM.ConfigData.Scale = {type: 'bool', group: 'Other', label: ['Game\'s Setting Scale', 'Metric', 'Short Scale', 'Scientific Notation', 'Engineering Notation'], desc: 'Change how long numbers are handled', toggle: false, func: function() {CM.Disp.RefreshScale();}}; +CM.ConfigData.ScaleDecimals = {type: 'bool', group: 'Other', label: ['1 decimals', '2 decimals', '3 decimals'], desc: 'Set the number of decimals used when applicable', toggle: false, func: function() {CM.Disp.RefreshScale();}}; /******** * Disp * @@ -1086,7 +1087,7 @@ CM.Disp.GetTimeColor = function(time) { * TODO: Add functionality to choose amount of decimals and separators */ CM.Disp.Beautify = function(num, frac, forced) { - var decimals = 3; // This can be used to implement function to let user choose amount of decimals + var decimals = CM.Config.ScaleDecimals + 1; if (CM.Config.Scale == 0) { return CM.Backup.Beautify(num, frac); } @@ -1111,7 +1112,17 @@ CM.Disp.Beautify = function(num, frac, forced) { answer += num[i + 2]; // num has a 0-based index and [1] is a '.' i++; } - answer += Math.round(num[i + 2] + '.' + num[i + 3]); + lastNumber = Math.round(num[i + 2] + '.' + num[i + 3]); + while (lastNumber >= 10) { + if (answer[answer.length - 1] != ".") { + lastNumber = Math.round((answer[answer.length - 1] * 10) + lastNumber) / 10; + answer = answer.slice(0,-1) + } else { + lastNumber = Math.round((answer[answer.length - 2] * 10) + lastNumber) / 10; + answer = answer.slice(0,-2) + } + } + answer += lastNumber; answer += 'E+' + Math.trunc(Math.log10(num)); } else { @@ -2930,7 +2941,7 @@ CM.Disp.ToggleDetailedTime = function() { /** * This function refreshes all numbers after a change in scale-setting - * It is therefore called by a change in CM.Config.Scale + * It is therefore called by a change in CM.Config.Scale and CM.Config.ScaleDecimals */ CM.Disp.RefreshScale = function() { BeautifyAll(); @@ -4168,6 +4179,7 @@ CM.ConfigDefault = { DetailedTime: 1, GrimoireBar: 1, Scale: 2, + ScaleDecimals: 2, OptionsPref: {BarsColors: 1, Calculation: 1, Notification: 1, Tooltip: 1, Statistics: 1, Other: 1}, StatsPref: {Lucky: 1, Conjure: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'}, diff --git a/src/Data.js b/src/Data.js index 8abbdd1..ece1ac3 100644 --- a/src/Data.js +++ b/src/Data.js @@ -174,4 +174,5 @@ CM.ConfigData.GrimoireBar = {type: 'bool', group: 'Statistics', label: ['Grimoir // Statistics CM.ConfigData.Scale = {type: 'bool', group: 'Other', label: ['Game\'s Setting Scale', 'Metric', 'Short Scale', 'Scientific Notation', 'Engineering Notation'], desc: 'Change how long numbers are handled', toggle: false, func: function() {CM.Disp.RefreshScale();}}; +CM.ConfigData.ScaleDecimals = {type: 'bool', group: 'Other', label: ['1 decimals', '2 decimals', '3 decimals'], desc: 'Set the number of decimals used when applicable', toggle: false, func: function() {CM.Disp.RefreshScale();}}; diff --git a/src/Disp.js b/src/Disp.js index b652ee8..5c02c48 100644 --- a/src/Disp.js +++ b/src/Disp.js @@ -169,7 +169,7 @@ CM.Disp.GetTimeColor = function(time) { * TODO: Add functionality to choose amount of decimals and separators */ CM.Disp.Beautify = function(num, frac, forced) { - var decimals = 3; // This can be used to implement function to let user choose amount of decimals + var decimals = CM.Config.ScaleDecimals + 1; if (CM.Config.Scale == 0) { return CM.Backup.Beautify(num, frac); } @@ -194,7 +194,17 @@ CM.Disp.Beautify = function(num, frac, forced) { answer += num[i + 2]; // num has a 0-based index and [1] is a '.' i++; } - answer += Math.round(num[i + 2] + '.' + num[i + 3]); + lastNumber = Math.round(num[i + 2] + '.' + num[i + 3]); + while (lastNumber >= 10) { + if (answer[answer.length - 1] != ".") { + lastNumber = Math.round((answer[answer.length - 1] * 10) + lastNumber) / 10; + answer = answer.slice(0,-1) + } else { + lastNumber = Math.round((answer[answer.length - 2] * 10) + lastNumber) / 10; + answer = answer.slice(0,-2) + } + } + answer += lastNumber; answer += 'E+' + Math.trunc(Math.log10(num)); } else { @@ -2013,7 +2023,7 @@ CM.Disp.ToggleDetailedTime = function() { /** * This function refreshes all numbers after a change in scale-setting - * It is therefore called by a change in CM.Config.Scale + * It is therefore called by a change in CM.Config.Scale and CM.Config.ScaleDecimals */ CM.Disp.RefreshScale = function() { BeautifyAll(); diff --git a/src/Main.js b/src/Main.js index efc9e5c..c18b3dd 100644 --- a/src/Main.js +++ b/src/Main.js @@ -551,6 +551,7 @@ CM.ConfigDefault = { DetailedTime: 1, GrimoireBar: 1, Scale: 2, + ScaleDecimals: 2, OptionsPref: {BarsColors: 1, Calculation: 1, Notification: 1, Tooltip: 1, Statistics: 1, Other: 1}, StatsPref: {Lucky: 1, Conjure: 1, Chain: 1, Prestige: 1, Wrink: 1, Sea: 1, Misc: 1}, Colors : {Blue: '#4bb8f0', Green: '#00ff00', Yellow: '#ffff00', Orange: '#ff7f00', Red: '#ff0000', Purple: '#ff00ff', Gray: '#b3b3b3', Pink: '#ff1493', Brown: '#8b4513'},