2020-10-10 03:16:29 +00:00
var tmp = { }
2020-12-04 04:19:14 +00:00
var temp = tmp // Proxy for tmp
2021-01-25 19:44:54 +00:00
var funcs = { }
2020-10-27 21:41:35 +00:00
var NaNalert = false ;
2020-10-07 22:41:03 +00:00
2020-10-10 03:16:29 +00:00
// Tmp will not call these
var activeFunctions = [
"startData" , "onPrestige" , "doReset" , "update" , "automate" ,
2020-10-17 19:50:30 +00:00
"buy" , "buyMax" , "respec" , "onComplete" , "onPurchase" , "onPress" , "onClick" , "masterButtonPress" ,
2021-05-01 02:08:25 +00:00
"sellOne" , "sellAll" , "pay" , "actualCostFunction" , "actualEffectFunction" ,
2021-05-03 02:39:38 +00:00
"effectDescription" , "display" , "fullDisplay" , "effectDisplay" , "rewardDisplay" ,
2020-10-10 03:16:29 +00:00
]
2020-10-07 20:41:45 +00:00
2020-10-17 04:21:59 +00:00
var noCall = doNotCallTheseFunctionsEveryTick
for ( item in noCall ) {
activeFunctions . push ( noCall [ item ] )
}
2020-12-01 02:58:42 +00:00
// Add the names of classes to traverse
var traversableClasses = [ ]
2020-10-10 03:16:29 +00:00
function setupTemp ( ) {
tmp = { }
2020-10-17 21:04:38 +00:00
tmp . pointGen = { }
tmp . displayThings = [ ]
2021-01-25 00:05:01 +00:00
tmp . scrolled = 0
2021-01-25 19:44:54 +00:00
funcs = { }
2021-01-25 00:05:01 +00:00
2021-01-25 19:44:54 +00:00
setupTempData ( layers , tmp , funcs )
2020-09-24 15:54:41 +00:00
for ( layer in layers ) {
2020-10-10 03:16:29 +00:00
tmp [ layer ] . resetGain = { }
tmp [ layer ] . nextAt = { }
tmp [ layer ] . nextAtDisp = { }
tmp [ layer ] . canReset = { }
2020-11-08 04:34:53 +00:00
tmp [ layer ] . notify = { }
tmp [ layer ] . prestigeNotify = { }
2020-12-17 02:20:00 +00:00
tmp [ layer ] . computedNodeStyle = [ ]
2020-10-12 22:28:12 +00:00
setupBarStyles ( layer )
2021-05-01 02:08:25 +00:00
setupBuyables ( layer )
2020-10-09 03:13:15 +00:00
}
2021-05-06 19:45:03 +00:00
tmp . other = {
screenWidth : window . innerWidth ,
2021-05-06 20:26:44 +00:00
splitScreen : window . innerWidth >= 1024 ,
2021-05-06 19:45:03 +00:00
lastPoints : player . points || new Decimal ( 0 ) ,
oomps : new Decimal ( 0 ) ,
}
2020-12-04 04:19:14 +00:00
temp = tmp
2020-10-07 21:00:02 +00:00
}
2021-01-25 19:44:54 +00:00
function setupTempData ( layerData , tmpData , funcsData ) {
2020-10-10 03:16:29 +00:00
for ( item in layerData ) {
if ( layerData [ item ] == null ) {
tmpData [ item ] = null
2020-09-14 02:41:42 +00:00
}
2020-10-11 18:49:29 +00:00
else if ( layerData [ item ] instanceof Decimal )
tmpData [ item ] = layerData [ item ]
2020-10-10 03:16:29 +00:00
else if ( Array . isArray ( layerData [ item ] ) ) {
tmpData [ item ] = [ ]
2021-01-25 19:44:54 +00:00
funcsData [ item ] = [ ]
setupTempData ( layerData [ item ] , tmpData [ item ] , funcsData [ item ] )
2020-10-03 19:45:47 +00:00
}
2020-10-10 03:16:29 +00:00
else if ( ( ! ! layerData [ item ] ) && ( layerData [ item ] . constructor === Object ) ) {
tmpData [ item ] = { }
2021-01-25 19:44:54 +00:00
funcsData [ item ] = [ ]
setupTempData ( layerData [ item ] , tmpData [ item ] , funcsData [ item ] )
2020-10-07 20:41:45 +00:00
}
2020-12-01 02:58:42 +00:00
else if ( ( ! ! layerData [ item ] ) && ( typeof layerData [ item ] === "object" ) && traversableClasses . includes ( layerData [ item ] . constructor . name ) ) {
tmpData [ item ] = new layerData [ item ] . constructor ( )
2021-01-25 19:44:54 +00:00
funcsData [ item ] = new layerData [ item ] . constructor ( )
2020-12-01 02:58:42 +00:00
}
2020-10-10 03:16:29 +00:00
else if ( isFunction ( layerData [ item ] ) && ! activeFunctions . includes ( item ) ) {
2021-01-25 19:44:54 +00:00
funcsData [ item ] = layerData [ item ]
2020-10-11 18:49:29 +00:00
tmpData [ item ] = new Decimal ( 1 ) // The safest thing to put probably?
2020-10-10 03:16:29 +00:00
} else {
tmpData [ item ] = layerData [ item ]
2020-10-07 21:13:16 +00:00
}
2020-10-10 03:16:29 +00:00
}
2020-10-07 21:13:16 +00:00
}
2020-10-10 03:16:29 +00:00
function updateTemp ( ) {
if ( tmp === undefined )
setupTemp ( )
2020-10-07 21:13:16 +00:00
2021-01-25 19:44:54 +00:00
updateTempData ( layers , tmp , funcs )
2020-10-07 21:13:16 +00:00
2020-10-10 03:16:29 +00:00
for ( layer in layers ) {
tmp [ layer ] . resetGain = getResetGain ( layer )
tmp [ layer ] . nextAt = getNextAt ( layer )
tmp [ layer ] . nextAtDisp = getNextAt ( layer , true )
tmp [ layer ] . canReset = canReset ( layer )
2020-11-08 04:34:53 +00:00
tmp [ layer ] . notify = shouldNotify ( layer )
tmp [ layer ] . prestigeNotify = prestigeNotify ( layer )
2020-10-12 22:28:12 +00:00
constructBarStyles ( layer )
2020-10-07 21:13:16 +00:00
}
2020-10-10 03:16:29 +00:00
tmp . pointGen = getPointGen ( )
2020-10-17 21:04:38 +00:00
tmp . displayThings = [ ]
for ( thing in displayThings ) {
let text = displayThings [ thing ]
if ( isFunction ( text ) ) text = text ( )
tmp . displayThings . push ( text )
}
2020-10-07 21:13:16 +00:00
}
2021-01-25 19:44:54 +00:00
function updateTempData ( layerData , tmpData , funcsData ) {
2020-10-11 18:49:29 +00:00
2021-01-25 19:44:54 +00:00
for ( item in funcsData ) {
2020-10-10 03:16:29 +00:00
if ( Array . isArray ( layerData [ item ] ) ) {
2021-01-25 19:44:54 +00:00
updateTempData ( layerData [ item ] , tmpData [ item ] , funcsData [ item ] )
2020-10-03 19:45:47 +00:00
}
2020-12-01 02:58:42 +00:00
else if ( ( ! ! layerData [ item ] ) && ( layerData [ item ] . constructor === Object ) || ( typeof layerData [ item ] === "object" ) && traversableClasses . includes ( layerData [ item ] . constructor . name ) ) {
2021-01-25 19:44:54 +00:00
updateTempData ( layerData [ item ] , tmpData [ item ] , funcsData [ item ] )
2020-10-09 03:13:15 +00:00
}
2021-01-21 22:52:09 +00:00
else if ( isFunction ( layerData [ item ] ) && ! isFunction ( tmpData [ item ] ) ) {
2020-10-27 21:41:35 +00:00
let value = layerData [ item ] ( )
if ( value !== value || value === decimalNaN ) {
2020-10-27 23:25:03 +00:00
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?" ) ) {
2020-10-27 21:41:35 +00:00
NaNalert = true
value = ( value !== value ? 0 : decimalZero )
}
else {
clearInterval ( interval ) ;
player . autosave = false ;
NaNalert = true ;
}
}
2021-05-03 17:30:01 +00:00
if ( tmpData [ item ] === undefined )
Vue . set ( tmpData , item , value )
else
tmpData [ item ] = value
2020-10-10 03:16:29 +00:00
}
}
2020-10-11 01:52:27 +00:00
}
2020-10-13 03:08:19 +00:00
function updateChallengeTemp ( layer )
2020-10-11 01:52:27 +00:00
{
2021-01-25 19:44:54 +00:00
updateTempData ( layers [ layer ] . challenges , tmp [ layer ] . challenges , funcs [ layer ] . challenges )
2020-12-04 04:19:14 +00:00
}
2020-10-11 01:52:27 +00:00
function updateBuyableTemp ( layer )
{
2021-01-25 19:44:54 +00:00
updateTempData ( layers [ layer ] . buyables , tmp [ layer ] . buyables , funcs [ layer ] . buyables )
2020-10-11 20:16:36 +00:00
}
function updateClickableTemp ( layer )
{
2021-01-25 19:44:54 +00:00
updateTempData ( layers [ layer ] . clickables , tmp [ layer ] . clickables , funcs [ layer ] . clickables )
2020-10-12 22:28:12 +00:00
}
function constructBarStyles ( layer ) {
if ( layers [ layer ] . bars === undefined )
return
for ( id in layers [ layer ] . bars ) {
if ( id !== "layer" ) {
let bar = tmp [ layer ] . bars [ id ]
if ( bar . progress instanceof Decimal )
bar . progress = bar . progress . toNumber ( )
2020-10-16 22:45:44 +00:00
bar . progress = ( 1 - Math . min ( Math . max ( bar . progress , 0 ) , 1 ) ) * 100
2020-10-13 03:28:02 +00:00
2020-10-12 22:28:12 +00:00
bar . dims = { 'width' : bar . width + "px" , 'height' : bar . height + "px" }
let dir = bar . direction
2020-10-16 22:45:44 +00:00
bar . fillDims = { 'width' : ( bar . width + 0.5 ) + "px" , 'height' : ( bar . height + 0.5 ) + "px" }
2020-10-12 22:28:12 +00:00
if ( dir !== undefined )
{
2020-10-16 22:45:44 +00:00
bar . fillDims [ 'clip-path' ] = 'inset(0% 50% 0% 0%)'
if ( dir == UP ) {
bar . fillDims [ 'clip-path' ] = 'inset(' + bar . progress + '% 0% 0% 0%)'
}
else if ( dir == DOWN ) {
bar . fillDims [ 'clip-path' ] = 'inset(0% 0% ' + bar . progress + '% 0%)'
}
else if ( dir == RIGHT ) {
bar . fillDims [ 'clip-path' ] = 'inset(0% ' + bar . progress + '% 0% 0%)'
}
else if ( dir == LEFT ) {
bar . fillDims [ 'clip-path' ] = 'inset(0% 0% 0% ' + bar . progress + '%)'
}
2020-10-12 22:28:12 +00:00
}
}
}
}
function setupBarStyles ( layer ) {
if ( layers [ layer ] . bars === undefined )
return
for ( id in layers [ layer ] . bars ) {
let bar = tmp [ layer ] . bars [ id ]
bar . dims = { }
bar . fillDims = { }
}
2021-05-01 02:08:25 +00:00
}
function setupBuyables ( layer ) {
for ( id in layers [ layer ] . buyables ) {
if ( ! isNaN ( id ) ) {
let b = layers [ layer ] . buyables [ id ]
b . actualCostFunction = b . cost
b . cost = function ( x ) {
x = x ? ? player [ this . layer ] . buyables [ this . id ]
return layers [ this . layer ] . buyables [ this . id ] . actualCostFunction ( x )
}
b . actualEffectFunction = b . effect
b . effect = function ( x ) {
x = x ? ? player [ this . layer ] . buyables [ this . id ]
return layers [ this . layer ] . buyables [ this . id ] . actualEffectFunction ( x )
}
}
}
2020-08-21 19:02:34 +00:00
}