2020-10-30 17:27:23 +00:00
var systemComponents = {
'tab-buttons' : {
props : [ 'layer' , 'data' , 'name' ] ,
template : `
< div class = "upgRow" >
< div v - for = "tab in Object.keys(data)" >
2021-05-07 23:24:32 +00:00
< button v - if = "data[tab].unlocked == undefined || data[tab].unlocked" v - bind : class = "{tabButton: true, notify: subtabShouldNotify(layer, name, tab), resetNotify: subtabResetNotify(layer, name, tab)}"
2021-09-08 03:53:54 +00:00
v - bind : style = "[{'border-color': tmp[layer].color}, (subtabShouldNotify(layer, name, tab) ? {'box-shadow': 'var(--hqProperty2a), 0 0 20px ' + (data[tab].glowColor || defaultGlow)} : {}), tmp[layer].componentStyles['tab-button'], data[tab].buttonStyle]"
2021-05-10 01:39:15 +00:00
v - on : click = "function(){player.subtabs[layer][name] = tab; updateTabFormats(); needCanvasUpdate = true;}" > { { tab } } < / b u t t o n >
2020-10-30 17:27:23 +00:00
< / d i v >
< / d i v >
`
} ,
2020-11-25 07:14:59 +00:00
'tree-node' : {
2021-05-26 05:44:12 +00:00
props : [ 'layer' , 'abb' , 'size' , 'prev' ] ,
2020-10-30 17:27:23 +00:00
template : `
2021-04-30 01:58:13 +00:00
< button v - if = "nodeShown(layer)"
2020-10-30 17:27:23 +00:00
v - bind : id = "layer"
v - on : click = " function ( ) {
2021-09-08 03:53:54 +00:00
if ( shiftDown && options . forceTooltips ) player [ layer ] . forceTooltip = ! player [ layer ] . forceTooltip
2021-05-26 05:44:12 +00:00
else if ( tmp [ layer ] . isLayer ) {
if ( tmp [ layer ] . leftTab ) {
showNavTab ( layer , prev )
showTab ( 'none' )
}
else
showTab ( layer , prev )
}
2020-12-13 04:32:55 +00:00
else { run ( layers [ layer ] . onClick , layers [ layer ] ) }
2020-10-30 17:27:23 +00:00
} "
2021-04-27 05:26:07 +00:00
2020-10-30 17:27:23 +00:00
v - bind : class = " {
2020-11-25 07:14:59 +00:00
treeNode : tmp [ layer ] . isLayer ,
treeButton : ! tmp [ layer ] . isLayer ,
2020-10-30 17:27:23 +00:00
smallNode : size == 'small' ,
[ layer ] : true ,
2021-04-27 05:26:07 +00:00
tooltipBox : true ,
forceTooltip : player [ layer ] . forceTooltip ,
2020-10-30 17:27:23 +00:00
ghost : tmp [ layer ] . layerShown == 'ghost' ,
hidden : ! tmp [ layer ] . layerShown ,
2020-11-25 07:14:59 +00:00
locked : tmp [ layer ] . isLayer ? ! ( player [ layer ] . unlocked || tmp [ layer ] . canReset ) : ! ( tmp [ layer ] . canClick ) ,
2021-04-20 14:44:40 +00:00
notify : tmp [ layer ] . notify && player [ layer ] . unlocked ,
2020-11-08 04:34:53 +00:00
resetNotify : tmp [ layer ] . prestigeNotify ,
2021-05-26 05:44:12 +00:00
can : ( ( player [ layer ] . unlocked || tmp [ layer ] . canReset ) && tmp [ layer ] . isLayer ) || ( ! tmp [ layer ] . isLayer && tmp [ layer ] . canClick ) ,
2021-05-24 15:41:30 +00:00
front : ! tmp . scrolled ,
2020-10-30 17:27:23 +00:00
} "
2021-05-03 02:39:38 +00:00
v - bind : style = "constructNodeStyle(layer)" >
2021-09-09 21:42:44 +00:00
< span class = "nodeLabel" v - html = "(abb !== '' && tmp[layer].image === undefined) ? abb : ' '" > < / s p a n >
2021-04-27 05:26:07 +00:00
< tooltip
2021-04-30 01:58:13 +00:00
v - if = "tmp[layer].tooltip != ''"
: text = " ( tmp [ layer ] . isLayer ) ? (
2021-04-27 05:26:07 +00:00
player [ layer ] . unlocked ? ( tmp [ layer ] . tooltip ? tmp [ layer ] . tooltip : formatWhole ( player [ layer ] . points ) + ' ' + tmp [ layer ] . resource )
: ( tmp [ layer ] . tooltipLocked ? tmp [ layer ] . tooltipLocked : 'Reach ' + formatWhole ( tmp [ layer ] . requires ) + ' ' + tmp [ layer ] . baseResource + ' to unlock (You have ' + formatWhole ( tmp [ layer ] . baseAmount ) + ' ' + tmp [ layer ] . baseResource + ')' )
)
: (
tmp [ layer ] . canClick ? ( tmp [ layer ] . tooltip ? tmp [ layer ] . tooltip : 'I am a button!' )
: ( tmp [ layer ] . tooltipLocked ? tmp [ layer ] . tooltipLocked : 'I am a button!' )
) " > < / t o o l t i p >
2021-06-08 23:39:23 +00:00
< node - mark : layer = 'layer' : data = 'tmp[layer].marked' > < / n o d e - m a r k > < / s p a n >
2020-10-30 17:27:23 +00:00
< / b u t t o n >
`
} ,
2020-11-25 07:14:59 +00:00
2020-10-30 17:27:23 +00:00
'layer-tab' : {
2020-12-05 19:52:29 +00:00
props : [ 'layer' , 'back' , 'spacing' , 'embedded' ] ,
2021-06-05 00:36:44 +00:00
template : ` <div v-bind:style="[tmp[layer].style ? tmp[layer].style : {}, (tmp[layer].tabFormat && !Array.isArray(tmp[layer].tabFormat)) ? tmp[layer].tabFormat[player.subtabs[layer].mainTabs].style : {}]" class="noBackground">
2021-05-26 05:44:12 +00:00
< div v - if = "back" > < button v - bind : class = "back == 'big' ? 'other-back' : 'back'" v - on : click = "goBack(layer)" > ← < / b u t t o n > < / d i v >
2020-10-30 17:27:23 +00:00
< div v - if = "!tmp[layer].tabFormat" >
2020-12-10 06:08:23 +00:00
< div v - if = "spacing" v - bind : style = "{'height': spacing}" : key = "this.$vnode.key + '-spacing'" > < / d i v >
2021-05-25 02:28:13 +00:00
< infobox v - if = "tmp[layer].infoboxes" : layer = "layer" : data = "Object.keys(tmp[layer].infoboxes)[0]" : key = "this.$vnode.key + '-info'" > < / i n f o b o x >
2020-10-30 17:27:23 +00:00
< main - display v - bind : style = "tmp[layer].componentStyles['main-display']" : layer = "layer" > < / m a i n - d i s p l a y >
< div v - if = "tmp[layer].type !== 'none'" >
< prestige - button v - bind : style = "tmp[layer].componentStyles['prestige-button']" : layer = "layer" > < / p r e s t i g e - b u t t o n >
< / d i v >
< resource - display v - bind : style = "tmp[layer].componentStyles['resource-display']" : layer = "layer" > < / r e s o u r c e - d i s p l a y >
< milestones v - bind : style = "tmp[layer].componentStyles.milestones" : layer = "layer" > < / m i l e s t o n e s >
< div v - if = "Array.isArray(tmp[layer].midsection)" >
2020-12-10 06:08:23 +00:00
< column : layer = "layer" : data = "tmp[layer].midsection" : key = "this.$vnode.key + '-mid'" > < / c o l u m n >
2020-10-30 17:27:23 +00:00
< / d i v >
< clickables v - bind : style = "tmp[layer].componentStyles['clickables']" : layer = "layer" > < / c l i c k a b l e s >
< buyables v - bind : style = "tmp[layer].componentStyles.buyables" : layer = "layer" > < / b u y a b l e s >
< upgrades v - bind : style = "tmp[layer].componentStyles['upgrades']" : layer = "layer" > < / u p g r a d e s >
< challenges v - bind : style = "tmp[layer].componentStyles['challenges']" : layer = "layer" > < / c h a l l e n g e s >
2020-11-07 20:29:39 +00:00
< achievements v - bind : style = "tmp[layer].componentStyles.achievements" : layer = "layer" > < / a c h i e v e m e n t s >
2020-10-30 17:27:23 +00:00
< br > < br >
< / d i v >
< div v - if = "tmp[layer].tabFormat" >
< div v - if = "Array.isArray(tmp[layer].tabFormat)" > < div v - if = "spacing" v - bind : style = "{'height': spacing}" > < / d i v >
2020-12-10 06:08:23 +00:00
< column : layer = "layer" : data = "tmp[layer].tabFormat" : key = "this.$vnode.key + '-col'" > < / c o l u m n >
2020-10-30 17:27:23 +00:00
< / d i v >
< div v - else >
2020-12-05 19:52:29 +00:00
< div class = "upgTable" v - bind : style = "{'padding-top': (embedded ? '0' : '25px'), 'margin-top': (embedded ? '-10px' : '0'), 'margin-bottom': '24px'}" >
2020-10-30 17:27:23 +00:00
< tab - buttons v - bind : style = "tmp[layer].componentStyles['tab-buttons']" : layer = "layer" : data = "tmp[layer].tabFormat" : name = "'mainTabs'" > < / t a b - b u t t o n s >
< / d i v >
2020-12-10 06:08:23 +00:00
< layer - tab v - if = "tmp[layer].tabFormat[player.subtabs[layer].mainTabs].embedLayer" : layer = "tmp[layer].tabFormat[player.subtabs[layer].mainTabs].embedLayer" : embedded = "true" : key = "this.$vnode.key + '-' + layer" > < / l a y e r - t a b >
< column v - else : layer = "layer" : data = "tmp[layer].tabFormat[player.subtabs[layer].mainTabs].content" : key = "this.$vnode.key + '-col'" > < / c o l u m n >
2020-10-30 17:27:23 +00:00
< / d i v >
< / d i v > < / d i v >
`
} ,
'overlay-head' : {
template : `
2021-01-25 19:44:54 +00:00
< div class = "overlayThing" style = "padding-bottom:7px; width: 90%; z-index: 1000; position: relative" >
2020-10-30 17:27:23 +00:00
< span v - if = "player.devSpeed && player.devSpeed != 1" class = "overlayThing" >
< br > Dev Speed : { { format ( player . devSpeed ) } } x < br >
< / s p a n >
< span v - if = "player.offTime !== undefined" class = "overlayThing" >
< br > Offline Time : { { formatTime ( player . offTime . remain ) } } < br >
< / s p a n >
< br >
< span v - if = "player.points.lt('1e1000')" class = "overlayThing" > You have < / s p a n >
< h2 class = "overlayThing" id = "points" > { { format ( player . points ) } } < / h 2 >
< span v - if = "player.points.lt('1e1e6')" class = "overlayThing" > { { modInfo . pointsName } } < / s p a n >
< br >
2021-05-06 21:51:06 +00:00
< 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 ) < / s p a n >
2020-10-30 17:27:23 +00:00
< div v - for = "thing in tmp.displayThings" class = "overlayThing" > < span v - if = "thing" v - html = "thing" > < / s p a n > < / d i v >
< / d i v >
`
} ,
2020-10-30 23:40:48 +00:00
'info-tab' : {
template : `
< div >
< h2 > { { modInfo . name } } < / h 2 >
< br >
< h3 > { { VERSION . withName } } < / h 3 >
< span v - if = "modInfo.author" >
< br >
Made by { { modInfo . author } }
< / s p a n >
< br >
2020-12-05 19:52:29 +00:00
The Modding Tree < a v - bind : href = "'https://github.com/Acamaeda/The-Modding-Tree/blob/master/changelog.md'" target = "_blank" class = "link" v - bind : style = "{'font-size': '14px', 'display': 'inline'}" > { { TMT _VERSION . tmtNum } } < / a > b y A c a m a e d a
2020-10-30 23:40:48 +00:00
< br >
The Prestige Tree made by Jacorb and Aarex
2020-12-05 19:52:29 +00:00
< br > < br >
< div class = "link" onclick = "showTab('changelog-tab')" > Changelog < / d i v > < b r >
2020-10-30 23:40:48 +00:00
< span v - if = "modInfo.discordLink" > < a class = "link" v - bind : href = "modInfo.discordLink" target = "_blank" > { { modInfo . discordName } } < / a > < b r > < / s p a n >
< a class = "link" href = "https://discord.gg/F3xveHV" target = "_blank" v - bind : style = "modInfo.discordLink ? {'font-size': '16px'} : {}" > The Modding Tree Discord < / a > < b r >
< a class = "link" href = "http://discord.gg/wwQfgPa" target = "_blank" v - bind : style = "{'font-size': '16px'}" > Main Prestige Tree server < / a > < b r >
2020-12-05 19:52:29 +00:00
< br > < br >
2020-10-30 23:40:48 +00:00
Time Played : { { formatTime ( player . timePlayed ) } } < br > < br >
< h3 > Hotkeys < / h 3 > < b r >
2020-11-29 02:25:53 +00:00
< span v - for = "key in hotkeys" v - if = "player[key.layer].unlocked && tmp[key.layer].hotkeys[key.id].unlocked" > < br > { { key . description } } < / s p a n > < / d i v >
2020-10-30 23:40:48 +00:00
`
} ,
'options-tab' : {
template : `
< table >
< tr >
< td > < button class = "opt" onclick = "save()" > Save < / b u t t o n > < / t d >
2021-06-03 05:04:56 +00:00
< td > < button class = "opt" onclick = "toggleOpt('autosave')" > Autosave : { { options . autosave ? "ON" : "OFF" } } < / b u t t o n > < / t d >
2020-10-30 23:40:48 +00:00
< td > < button class = "opt" onclick = "hardReset()" > HARD RESET < / b u t t o n > < / t d >
< / t r >
< tr >
< td > < button class = "opt" onclick = "exportSave()" > Export to clipboard < / b u t t o n > < / t d >
< td > < button class = "opt" onclick = "importSave()" > Import < / b u t t o n > < / t d >
2021-06-03 05:04:56 +00:00
< td > < button class = "opt" onclick = "toggleOpt('offlineProd')" > Offline Prod : { { options . offlineProd ? "ON" : "OFF" } } < / b u t t o n > < / t d >
2020-10-30 23:40:48 +00:00
< / t r >
< tr >
< td > < button class = "opt" onclick = "switchTheme()" > Theme : { { getThemeName ( ) } } < / b u t t o n > < / t d >
2021-06-03 05:04:56 +00:00
< td > < button class = "opt" onclick = "adjustMSDisp()" > Show Milestones : { { MS _DISPLAYS [ MS _SETTINGS . indexOf ( options . msDisplay ) ] } } < / b u t t o n > < / t d >
< td > < button class = "opt" onclick = "toggleOpt('hqTree')" > High - Quality Tree : { { options . hqTree ? "ON" : "OFF" } } < / b u t t o n > < / t d >
2020-10-30 23:40:48 +00:00
< / t r >
2021-05-10 22:27:37 +00:00
< tr >
2021-06-03 05:04:56 +00:00
< td > < button class = "opt" onclick = "toggleOpt('hideChallenges')" > Completed Challenges : { { options . hideChallenges ? "HIDDEN" : "SHOWN" } } < / b u t t o n > < / t d >
< td > < button class = "opt" onclick = "toggleOpt('forceOneTab'); needsCanvasUpdate = true" > Single - Tab Mode : { { options . forceOneTab ? "ALWAYS" : "AUTO" } } < / b u t t o n > < / t d >
2021-09-08 03:53:54 +00:00
< td > < button class = "opt" onclick = "toggleOpt('forceTooltips'); needsCanvasUpdate = true" > Shift - Click to Toggle Tooltips : { { options . forceTooltips ? "ON" : "OFF" } } < / b u t t o n > < / t d >
< / t r >
2024-10-27 21:52:21 +00:00
< tr >
< td > < button class = "opt" onclick = "toggleOpt('hideMilestonePopups')" > Show Milestone Popups : { { formatOption ( ! options . hideMilestonePopups ) } } < / b u t t o n > < / t d >
< / t r >
2020-10-30 23:40:48 +00:00
< / t a b l e > `
} ,
'back-button' : {
template : `
< button v - bind : class = "back" onclick = "goBack()" > ← < / b u t t o n >
`
2021-04-27 05:26:07 +00:00
} ,
2021-04-29 21:49:35 +00:00
2021-04-27 05:26:07 +00:00
'tooltip' : {
props : [ 'text' ] ,
template : ` <div class="tooltip" v-html="text"></div>
`
2021-05-12 03:04:59 +00:00
} ,
'node-mark' : {
2021-06-03 05:04:56 +00:00
props : { 'layer' : { } , data : { } , offset : { default : 0 } , scale : { default : 1 } } ,
2021-05-12 03:04:59 +00:00
template : ` <div v-if='data'>
2021-06-03 05:04:56 +00:00
< div v - if = 'data === true' class = 'star' v - bind : style = '{position: "absolute", left: (offset-10) + "px", top: (offset-10) + "px", transform: "scale( " + scale||1 + ", " + scale||1 + ")"}' > < / d i v >
< img v - else class = 'mark' v - bind : style = '{position: "absolute", left: (offset-22) + "px", top: (offset-15) + "px", transform: "scale( " + scale||1 + ", " + scale||1 + ")"}' v - bind : src = "data" > < / d i v >
2021-05-12 03:04:59 +00:00
< / d i v >
`
2021-05-14 01:40:51 +00:00
} ,
'particle' : {
props : [ 'data' , 'index' ] ,
2021-05-18 20:06:03 +00:00
template : ` <div><div class='particle instant' v-bind:style="[constructParticleStyle(data), data.style]"
2024-10-27 21:37:05 +00:00
v - on : click = "run(data.onClick, data)" v - on : mouseenter = "run(data.onMouseEnter, data)" v - on : mouseleave = "run(data.onMouseLeave, data)" > < span v - html = "data.text" > < / s p a n >
2021-05-15 01:51:49 +00:00
< / d i v >
2021-05-18 20:06:03 +00:00
< svg version = "2" v - if = "data.color" >
< mask v - bind : id = "'pmask' + data.id" >
< image id = "img" v - bind : href = "data.image" x = "0" y = "0" : height = "data.width" : width = "data.height" / >
< / m a s k >
< / s v g >
< / d i v >
2021-05-14 01:40:51 +00:00
`
} ,
2021-05-12 03:04:59 +00:00
2021-06-02 22:51:33 +00:00
'bg' : {
props : [ 'layer' ] ,
2021-06-03 05:04:56 +00:00
template : ` <div class ="bg" v-bind:style="[tmp[layer].style ? tmp[layer].style : {}, (tmp[layer].tabFormat && !Array.isArray(tmp[layer].tabFormat)) ? tmp[layer].tabFormat[player.subtabs[layer].mainTabs].style : {}]"></div>
2021-06-02 22:51:33 +00:00
`
}
2021-05-12 03:04:59 +00:00
}