diff --git a/src/Mods/SecExp/SecExpBackwardCompatibility.tw b/src/Mods/SecExp/SecExpBackwardCompatibility.tw index c7f0d95dab5f6cc9eff125a5ad8f750c861b67c0..92f7d31b385d4186f0fba6711a369524e3b2e945 100644 --- a/src/Mods/SecExp/SecExpBackwardCompatibility.tw +++ b/src/Mods/SecExp/SecExpBackwardCompatibility.tw @@ -3,7 +3,7 @@ <<set $nextButton = "Continue", $nextLink = "Main", $returnTo = "Main">> /* base stats */ -<<= App.SecExp.Check.general()>> +<<run App.SecExp.Check.general()>> <<if ndef $attackType>> <<set $attackType = "none">> <</if>> diff --git a/src/data/backwardsCompatibility/BackwardsCompatibility.tw b/src/data/backwardsCompatibility/BackwardsCompatibility.tw index a2f875078ffb081bc498c29cfd5e21cee2f56807..15d45f2dd2b0ad3525b551a58002a0cdcf866194 100644 --- a/src/data/backwardsCompatibility/BackwardsCompatibility.tw +++ b/src/data/backwardsCompatibility/BackwardsCompatibility.tw @@ -7,42 +7,7 @@ /* resetOnNGPlus contains half of the variables we need, but we use it politely here instead of forcing it so it fills in holes instead of overwriting data */ <<run App.Update.setNonexistantProperties(V, App.Data.resetOnNGPlus)>> - -<div> - <<= App.Update.oldVersions()>> -</div> - -<div> - <<= App.Update.genePoolRecords()>> -</div> - -<div> - <<= App.Update.globalVariables()>> -</div> - -<div> - <<= App.Update.slaveVariables()>> -</div> - -<div> - <<= App.Update.slaveRecords()>> -</div> - -<div> - <<= App.Update.RAassistantData()>> -</div> - -/* Sec Exp */ -<div> - <<= App.SecExp.Check.general()>> - <<if $secExpEnabled == 1>> - <br> <<include "SecExpBackwardCompatibility">> - <</if>> -</div> -<div> - <<= App.Update.autoshred()>> -</div> -/* leave this at the bottom of BC */ -<div> - <<= App.Update.cleanUp()>> -</div> +<span id="backwardsCompatibility"></span> +<script> + App.Update.backwardsCompatibility(); +</script> \ No newline at end of file diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js index af6491d0340b5714dc2ac2567efebc7c072ecefa..c76351f5fd5eef5e95e57f3ade4cab4753efa7cf 100644 --- a/src/data/backwardsCompatibility/backwardsCompatibility.js +++ b/src/data/backwardsCompatibility/backwardsCompatibility.js @@ -21,6 +21,7 @@ App.Update.autoshred = function() { if (extraCount !== 0) { console.log(`and ${extraCount} more`); } + return `Done!`; }; App.Update.setNonexistantProperties = function(obj, props) { @@ -51,8 +52,73 @@ App.Update.setExistantProperties = function(obj, array) { } }; +App.Update.backwardsCompatibility = function() { + let div; + jQuery('#backwardsCompatibility').empty(); + try { + div = document.createElement('div'); + div.append(`Check for old version... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.oldVersions()); + + div = document.createElement('div'); + div.append(`Updating gene pool records... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.genePoolRecords()); + + div = document.createElement('div'); + div.append(`Updating global variables... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.globalVariables()); + + div = document.createElement('div'); + div.append(`Updating slave variables... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.slaveVariables()); + + div = document.createElement('div'); + div.append(`Updating slave records... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.slaveRecords()); + + div = document.createElement('div'); + div.append(`Updating Rule Assistant data... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.RAassistantData()); + + // Sec Exp + div = document.createElement('div'); + div.append(`Updating Security Expansion... `); + jQuery('#backwardsCompatibility').append(div); + App.SecExp.Check.general(); + if (V.secExpEnabled === 1) { + div.append(jQuery.wiki(`<<include "SecExpBackwardCompatibility">>`)); + } + div.append("Done!"); + + div = document.createElement('div'); + div.append(`Checking for old variables... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.autoshred()); + + // leave this at the bottom of BC + div = document.createElement('div'); + div.append(`Cleaning up... `); + jQuery('#backwardsCompatibility').append(div); + div.append(App.Update.cleanUp()); + } catch (error) { + div = document.createElement('p'); + div.className = "red"; + div.textContent = `Backwards compatibility has failed for your save. Please upload your save to https://gitgud.io/pregmodfan/fc-pregmod/ with notes on what went wrong so that we can fix the backwards compatibility process for everyone. Thank you!`; + jQuery('#backwardsCompatibility').append(div); + State.restore(); + throw (error); // rethrow the exception to Sugarcube so we get a fancy stack trace + } + return; +}; + App.Update.globalVariables = function() { - let r = `Setting missing global variables... `; + let r = ``; if (Array.isArray(V.nationalities)) { V.nationalities = weightedArray2HashMap(V.nationalities); } @@ -1068,12 +1134,12 @@ App.Update.globalVariables = function() { EconomyDatatypeCleanup(); ArcologyDatatypeCleanup(); - r += ` Done!<br>`; + r += `Done!`; return r; }; App.Update.slaveVariables = function() { - let r = `Setting missing slave variables... `; + let r = ``; /* Adding a new variable? Consider putting it in datatypeCleanupJS.tw instead of here */ for (let bci = 0; bci < V.slaves.length; bci++) { let Slave = V.slaves[bci]; @@ -1087,12 +1153,12 @@ App.Update.slaveVariables = function() { V.slaves[bci] = Slave; } - r += ` Done!<br>`; + r += `Done!`; return r; }; App.Update.slaveRecords = function() { - let r = `Checking and fixing slave records...`; + let r = ``; V.slaves.forEach((slave) => { App.Entity.Utils.SlaveDataSchemeCleanup(slave); SlaveDatatypeCleanup(slave); @@ -1121,7 +1187,7 @@ App.Update.slaveRecords = function() { App.Entity.Utils.SlaveDataSchemeCleanup(V.traitor); SlaveDatatypeCleanup(V.traitor); } - r += ` Done!<br>`; + r += `Done!`; if (V.tanks.length > 0) { r += `Checking and fixing records for incubator tanks... `; @@ -1131,7 +1197,7 @@ App.Update.slaveRecords = function() { SlaveDatatypeCleanup(slave, true); /* pass second argument as true so that slaveAgeDatatypeCleanup is not run */ }); - r += ` Done!<br> `; + r += `Done! `; } if (V.cribs.length > 0) { @@ -1151,13 +1217,13 @@ App.Update.slaveRecords = function() { // let _nurseryChild = V.cribs[bci]; TODO: on importing this to JS, what is this even supposed to do? } } - r += ` Done!<br> `; + r += `Done!`; } return r; }; App.Update.genePoolRecords = function() { - let r = `Updating gene pool records... `; + let r = ``; for (let bci = 0; bci < V.genePool.length; bci++) { App.Update.Slave(V.genePool[bci], true); let slave = V.genePool[bci]; @@ -1245,14 +1311,14 @@ App.Update.genePoolRecords = function() { App.Entity.Utils.GenePoolRecordCleanup(slave); V.genePool[bci] = slave; } - r += ` Done!<br>`; + r += `Done!`; return r; }; App.Update.RAassistantData = function() { - let r = `Updating Rules Assistant data...`; + let r = ``; V.defaultRules = V.defaultRules.map(rule => App.Entity.Utils.RARuleDatatypeCleanup(rule)); - r += ` Done!<br>`; + r += `Done!`; return r; }; @@ -1922,13 +1988,14 @@ App.Update.oldVersions = function() { V.PC.faceShape = "normal"; } - r += ` Done!`; + r += `Done!`; } if (V.arcologyUpgrade.spire === 1 && !V.building.usedUpgrades.includes("spire")) { V.building.usedUpgrades.push("spire"); } + r += `Done!`; return r; }; @@ -1939,7 +2006,7 @@ App.Update.cleanUp = function() { } /* reset NaNArray after BC is run */ V.NaNArray = findNaN(); - return; + return `Done!`; }; App.Update.sectorsToBuilding = function() { diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw index ef78724ae0f087a493d7d801ed54d1d0722228a9..055f786043cdaa94a3a3fd4e2702bf231beaded7 100644 --- a/src/events/intro/initNationalities.tw +++ b/src/events/intro/initNationalities.tw @@ -12,7 +12,7 @@ <<if $secExpEnabled > 0>> /* base vars */ <<set $SecExp = SecExpBase()>> - <<= App.SecExp.Check.general()>> + <<run App.SecExp.Check.general()>> <<set $secExp = SecExpBase()>> <<set $secUpgrades = { nanoCams: 0,