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

Fixed NaN checks

This commit is contained in:
Harley White 2021-06-02 17:39:19 -04:00
parent d1c00d681e
commit b123b19ca5
3 changed files with 36 additions and 16 deletions

View file

@ -1,11 +1,12 @@
# The Modding Tree changelog: # The Modding Tree changelog:
- Fixed issues with NaN checking. Saves should never break now unless something really unusual happens.
- Fixed demo.html - Fixed demo.html
- You can now use "this" in tabFormat! - You can now use "this" in tabFormat!
- The prestige/sec display now shows decimals.
- resetsNothing now works immediately on a reset that enables it.
- Added onComplete for milestones. - Added onComplete for milestones.
- Added addBuyables. - Added addBuyables.
- The prestige/sec display now shows decimals.
- resetsNothing now works immediately on a reset that enables it.
- Fixed challenges with no currencyDisplayName using "points" instead of the mod's pointsName. - Fixed challenges with no currencyDisplayName using "points" instead of the mod's pointsName.
- inChallenge no longer can return undefined. - inChallenge no longer can return undefined.

View file

@ -84,6 +84,7 @@ function setupTempData(layerData, tmpData, funcsData) {
} }
} }
function updateTemp() { function updateTemp() {
if (tmp === undefined) if (tmp === undefined)
setupTemp() setupTemp()
@ -91,16 +92,34 @@ function updateTemp() {
updateTempData(layers, tmp, funcs) updateTempData(layers, tmp, funcs)
for (layer in layers){ for (layer in layers){
let problem = ""
tmp[layer].resetGain = getResetGain(layer) tmp[layer].resetGain = getResetGain(layer)
if (checkDecimalNaN(tmp[layer].resetGain))
problem = "resetGain"
tmp[layer].nextAt = getNextAt(layer) tmp[layer].nextAt = getNextAt(layer)
if (checkDecimalNaN(tmp[layer].nextAt))
problem = "nextAt"
tmp[layer].nextAtDisp = getNextAt(layer, true) tmp[layer].nextAtDisp = getNextAt(layer, true)
tmp[layer].canReset = canReset(layer) tmp[layer].canReset = canReset(layer)
tmp[layer].trueGlowColor = tmp[layer].glowColor tmp[layer].trueGlowColor = tmp[layer].glowColor
tmp[layer].notify = shouldNotify(layer) tmp[layer].notify = shouldNotify(layer)
tmp[layer].prestigeNotify = prestigeNotify(layer) tmp[layer].prestigeNotify = prestigeNotify(layer)
if (problem && !NaNalert) {
confirm("Invalid value found in temp." + layer + "." + problem + ". Please let the creator of this mod know! You can refresh the page, and you will be un-NaNed.")
clearInterval(interval);
NaNalert = true;
return
}
} }
tmp.pointGen = getPointGen() tmp.pointGen = getPointGen()
if (checkDecimalNaN(tmp.pointGen) && !NaNalert) {
confirm("Invalid value found in temp.pointGen. Please let the creator of this mod know! You can refresh the page, and you will be un-NaNed.")
clearInterval(interval);
NaNalert = true;
return
}
tmp.displayThings = [] tmp.displayThings = []
for (thing in displayThings){ for (thing in displayThings){
let text = displayThings[thing] let text = displayThings[thing]
@ -123,15 +142,12 @@ function updateTempData(layerData, tmpData, funcsData, useThis) {
if (useThis !== undefined) value = layerData[item].bind(useThis)() if (useThis !== undefined) value = layerData[item].bind(useThis)()
else value = layerData[item]() else value = layerData[item]()
if (value !== value || value === decimalNaN){ if (value !== value || checkDecimalNaN(value)){
if (NaNalert === true || confirm ("Invalid value found in tmp, named '" + item + "'. Please let the creator of this mod know! Would you like to try to auto-fix the save and keep going?")){ if (!NaNalert) {
NaNalert = true confirm("Invalid value found in tmp, named '" + item + "'. Please let the creator of this mod know! You can refresh the page, and you will be un-NaNed.")
value = (value !== value ? 0 : decimalZero)
}
else {
clearInterval(interval); clearInterval(interval);
player.autosave = false;
NaNalert = true; NaNalert = true;
return
} }
} }
Vue.set(tmpData, item, value) Vue.set(tmpData, item, value)
@ -172,3 +188,7 @@ function setupBuyables(layer) {
} }
} }
} }
function checkDecimalNaN(x) {
return (x instanceof Decimal) && !x.eq(x)
}

View file

@ -1,5 +1,6 @@
// ************ Save stuff ************ // ************ Save stuff ************
function save() { function save() {
if (NaNalert) return
localStorage.setItem(modInfo.id, btoa(unescape(encodeURIComponent(JSON.stringify(player))))); localStorage.setItem(modInfo.id, btoa(unescape(encodeURIComponent(JSON.stringify(player)))));
} }
function startPlayerBase() { function startPlayerBase() {
@ -228,15 +229,12 @@ function NaNcheck(data) {
else if (Array.isArray(data[item])) { else if (Array.isArray(data[item])) {
NaNcheck(data[item]); NaNcheck(data[item]);
} }
else if (data[item] !== data[item] || data[item] === decimalNaN) { else if (data[item] !== data[item] || checkDecimalNaN(data[item])) {
if (NaNalert === true || confirm("Invalid value found in player, named '" + item + "'. Please let the creator of this mod know! Would you like to try to auto-fix the save and keep going?")) { if (!NaNalert) {
NaNalert = true; confirm("Invalid value found in player, named '" + item + "'. Please let the creator of this mod know! You can refresh the page, and you will be un-NaNed.")
data[item] = (data[item] !== data[item] ? 0 : decimalZero);
}
else {
clearInterval(interval); clearInterval(interval);
player.autosave = false;
NaNalert = true; NaNalert = true;
return
} }
} }
else if (data[item] instanceof Decimal) { // Convert to Decimal else if (data[item] instanceof Decimal) { // Convert to Decimal
@ -247,6 +245,7 @@ function NaNcheck(data) {
} }
} }
function exportSave() { function exportSave() {
if (NaNalert) return
let str = btoa(JSON.stringify(player)); let str = btoa(JSON.stringify(player));
const el = document.createElement("textarea"); const el = document.createElement("textarea");