1
0
Fork 0
mirror of https://github.com/Acamaeda/The-Modding-Tree.git synced 2024-11-21 16:13:55 +00:00

Added small number formatting

This commit is contained in:
Harley White 2021-05-06 17:51:06 -04:00
parent e6c03dbf4d
commit 83bd52441e
5 changed files with 36 additions and 8 deletions

View file

@ -1,6 +1,6 @@
# The Modding Tree changelog:
# v2.5 (beta)
# v2.5: Dreams Really Do Come True -
- Optimizations, hopefully a significant amount.
- Added OOM/s point gen display at high values (thanks to Ducdat!)
- Only one tab will display if the window is not wide enough (also thanks to Ducdat!)
@ -12,6 +12,7 @@
- Locked (not yet visible) milestones no longer take up space. Also fixed hidden milestones taking a tiny bit of space.
- Re-centered respec buttons.
- Force-displayed tooltips are not hidden by resets.
- Added formatting support for very small numbers. Disabled in most places by default because rounding errors can cause issues. Access it with formatSmall, or enable it globally by adding "allowSmall: true" to modInfo.
# v2.4.1 - 4/29/21
- A number of minor fixes, many thanks to thepaperpilot.

View file

@ -11,8 +11,8 @@ let modInfo = {
// Set your version in num and name
let VERSION = {
num: "2.4.2",
name: "Rationalized Edition",
num: "2.5",
name: "Dreams Really Do Come True",
}
let changelog = `<h1>Changelog:</h1><br>

View file

@ -5,8 +5,8 @@ var scrolled = false;
// Don't change this
const TMT_VERSION = {
tmtNum: "2.4.2",
tmtName: "Rationalized Edition"
tmtNum: "2.5",
tmtName: "Dreams Really Do Come True"
}
function getResetGain(layer, useType = null) {

View file

@ -106,7 +106,7 @@ var systemComponents = {
<h2 class="overlayThing" id="points">{{format(player.points)}}</h2>
<span v-if="player.points.lt('1e1e6')" class="overlayThing"> {{modInfo.pointsName}}</span>
<br>
<span v-if="canGenPoints()" class="overlayThing">({{tmp.other.oompsMag != 0 ? format(tmp.other.oomps) + " OOM" + (tmp.other.oompsMag < 0 ? "^OOM" : tmp.other.oompsMag > 1 ? "^" + tmp.other.oompsMag : "") + "s" : format(getPointGen())}}/sec)</span>
<span v-if="canGenPoints()" class="overlayThing">({{tmp.other.oompsMag != 0 ? format(tmp.other.oomps) + " OOM" + (tmp.other.oompsMag < 0 ? "^OOM" : tmp.other.oompsMag > 1 ? "^" + tmp.other.oompsMag : "") + "s" : formatSmall(getPointGen())}}/sec)</span>
<div v-for="thing in tmp.displayThings" class="overlayThing"><span v-if="thing" v-html="thing"></span></div>
</div>
`

View file

@ -22,6 +22,7 @@ function commaFormat(num, precision) {
function regularFormat(num, precision) {
if (num === null || num === undefined) return "NaN"
if (num.mag < 0.001) return (0).toFixed(precision)
if (num.mag < 0.01) precision = 3
return num.toStringWithDecimalPlaces(precision)
}
@ -35,7 +36,8 @@ function sumValues(x) {
return x.reduce((a, b) => Decimal.add(a, b))
}
function format(decimal, precision = 2,) {
function format(decimal, precision = 2, small) {
small = small || modInfo.allowSmall
decimal = new Decimal(decimal)
if (isNaN(decimal.sign) || isNaN(decimal.layer) || isNaN(decimal.mag)) {
player.hasNaN = true;
@ -52,7 +54,18 @@ function format(decimal, precision = 2,) {
else if (decimal.gte("1e1000")) return exponentialFormat(decimal, 0)
else if (decimal.gte(1e9)) return exponentialFormat(decimal, precision)
else if (decimal.gte(1e3)) return commaFormat(decimal, 0)
else return regularFormat(decimal, precision)
else if (decimal.gte(0.001) || !small) return regularFormat(decimal, precision)
else if (decimal.eq(0)) return (0).toFixed(precision)
decimal = invertOOM(decimal)
let val = ""
if (decimal.lt(1e1000)){
val = exponentialFormat(decimal, precision)
}
else
val = format(decimal, precision)
return val.replace(/([^(?:e|F)]*)$/, '-$1')
}
function formatWhole(decimal) {
@ -78,3 +91,17 @@ function toPlaces(x, precision, maxAccepted) {
}
return result
}
// Will also display very small numbers
function formatSmall(x, precision=2) {
return format(x, precision, true)
}
function invertOOM(x){
let e = x.log10().ceil()
let m = x.div(Decimal.pow(10, e))
e = e.neg()
x = new Decimal(10).pow(e).times(m)
return x
}