1
0
Fork 0
mirror of https://github.com/Acamaeda/The-Modding-Tree.git synced 2025-02-16 09:41:41 +00:00

1.2.3: Added row and column components and customizable blanks

This commit is contained in:
Acamaeda 2020-10-03 19:50:03 -04:00
parent d712c6f8e1
commit f2a0a5ac28
5 changed files with 94 additions and 42 deletions

View file

@ -5,7 +5,7 @@ Custom tab layouts can be used to do basically anything in a tab window, especia
```js ```js
tabFormat: ["main-display", tabFormat: ["main-display",
["prestige-button", function(){return "Melt your points into "}], ["prestige-button", function(){return "Melt your points into "}],
["raw-html", function() {return "<button onclick='console.log(`yeet`)'>'HI'</button>"}], "blank",
["display-text", ["display-text",
function() {return 'I have ' + format(player.points) + ' pointy points!'}, function() {return 'I have ' + format(player.points) + ' pointy points!'},
{"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}], {"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}],
@ -24,7 +24,9 @@ These are the existing components, but you can create more in v.js:
- raw-html: Displays some HTML. The argument is the HTML as a string, or a function that returns updating HTML. - raw-html: Displays some HTML. The argument is the HTML as a string, or a function that returns updating HTML.
It doesn't work with many vue things. It doesn't work with many vue things.
- blank: An empty newline - blank: Adds empty space. The default dimensions are 8px x 17px. The argument changes the dimensions.
If it's a single value (e.g. "20px"), that determines the height.
If you have a pair of arguments, the first is width and the second is height.
- main-display: The text that displays the main currency for the layer and its effects. - main-display: The text that displays the main currency for the layer and its effects.
@ -38,6 +40,7 @@ These are the existing components, but you can create more in v.js:
- toggle: A toggle button that toggles a bool value. The data is a pair that identifies what bool to toggle, [layer, id] - toggle: A toggle button that toggles a bool value. The data is a pair that identifies what bool to toggle, [layer, id]
- row: Display a list of components horizontally. The argument is an array of components in the tab layout format.
Tip: use readData on things you're displaying! If the data is a function, it will return the result of calling it. - column: Display a list of components vertically. The argument is an array of components in the tab layout format.
Otherwise, it will return the data itself. This lets you use dynamic values, while keeping constant values convenient. This is useful to display columns within a row.

View file

@ -45,7 +45,12 @@
</div> </div>
<div v-if="player.tab=='changelog'" class="col right"> <div v-if="player.tab=='changelog'" class="col right">
<button class="back" onclick="showTab('tree')"></button><br> <button class="back" onclick="showTab('tree')"></button><br>
<h3>v1.2.3</h3>
<ul>
<li>Added a row component, which displays a list of objects in a row.</li>
<li>Added a column component, which displays a list of objects in a column (useful within a row).</li>
<li>Changed blanks to have a customizable width and height.</li>
</ul><br>
<h3>v1.2: This Changes Everything!</h3> <h3>v1.2: This Changes Everything!</h3>
<ul> <ul>
<li>Many layer features can now be static values or functions. (This made some notations change, which will break things)</li> <li>Many layer features can now be static values or functions. (This made some notations change, which will break things)</li>
@ -54,6 +59,10 @@
<li>Added a configurable offline time limit in modinfo at the top of index.html. (default 1 hour)</li> <li>Added a configurable offline time limit in modinfo at the top of index.html. (default 1 hour)</li>
<li>Added a few minor features, and updated the docs with new information.</li> <li>Added a few minor features, and updated the docs with new information.</li>
</ul><br> </ul><br>
<div class="link" onclick="showTab('old-stuff')">Alpha / Beta</div><br>
</div>
<div v-if="player.tab=='old-stuff'" class="col right">
<button class="back" onclick="showTab('changelog')"></button><br>
<h3>v1.1.1</h3> <h3>v1.1.1</h3>
<ul> <ul>
<li>You can define hotkeys in layer config.</li> <li>You can define hotkeys in layer config.</li>
@ -64,12 +73,7 @@
<li>Custom CSS can now be used on any component! Make the third argument an object with the CSS parameters.</li> <li>Custom CSS can now be used on any component! Make the third argument an object with the CSS parameters.</li>
<li>Lots of minor good things.</li> <li>Lots of minor good things.</li>
</ul><br> </ul><br>
<h3>v1.0: Technically Something</h3>
<div class="link" onclick="showTab('Old Stuff')">Alpha / Beta</div><br>
</div>
<div v-if="player.tab=='changelog_beta'" class="col right">
<button class="back" onclick="showTab('changelog')"></button><br>
<h3>v1.0 Something</h3>
<ul> <ul>
<li>The first numbered version.</li> <li>The first numbered version.</li>
</ul><br> </ul><br>
@ -168,7 +172,8 @@
<div v-for="data in layers[layer].tabFormat"> <div v-for="data in layers[layer].tabFormat">
<div v-if="!Array.isArray(data)" v-bind:is="data" :layer= "layer"></div> <div v-if="!Array.isArray(data)" v-bind:is="data" :layer= "layer"></div>
<div v-else-if="data.length==3" v-bind:style="(data[2] ? data[2] : {})" v-bind:is="data[0]" :layer= "layer" :data= "data[1]"></div> <div v-else-if="data.length==3" v-bind:style="(data[2] ? data[2] : {})" v-bind:is="data[0]" :layer= "layer" :data= "data[1]"></div>
<div v-else-if="data.length==2" v-bind:is="data[0]" :layer= "layer" :data= "data[1]"></div> <div v-else-if="data.length==2" v-bind:is="data[0]" :layer= "layer" :data= "data[1]">
</div>
</divs> </divs>
</div> </div>
</div> </div>

View file

@ -5,7 +5,7 @@ var NaNalert = false;
var gameEnded = false; var gameEnded = false;
let VERSION = { let VERSION = {
num: "1.2.2", num: "1.2.3",
name: "This changes everything!" name: "This changes everything!"
} }

View file

@ -174,13 +174,21 @@ addLayer("c", {
// Optional, lets you format the tab yourself by listing components. You can create your own components in v.js. // Optional, lets you format the tab yourself by listing components. You can create your own components in v.js.
tabFormat: ["main-display", tabFormat: ["main-display",
["prestige-button", function() {return "Melt your points into "}], ["prestige-button", function() {return "Melt your points into "}],
["blank", "5px"], // Height
["raw-html", function() {return "<button onclick='console.log(`yeet`)'>'HI'</button>"}], ["raw-html", function() {return "<button onclick='console.log(`yeet`)'>'HI'</button>"}],
["display-text", ["display-text",
function() {return 'I have ' + format(player.points) + ' pointy points!'}, function() {return 'I have ' + format(player.points) + ' pointy points!'},
{"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}], {"color": "red", "font-size": "32px", "font-family": "Comic Sans MS"}],
["buyables", "150px"], ["buyables", "150px"],
["toggle", ["c", "beep"]], ["row", [
"milestones", "upgrades", "challs"], ["toggle", ["c", "beep"]], ["blank", ["30px", "10px"]], // Width, height
["display-text", function() {return "Beep"}], "blank",
["column", [
["prestige-button", function() {return "Be redundant for "}, {'width': '150px', 'height': '30px'}],
["prestige-button", function() {return "Be redundant for "}, {'width': '150px', 'height': '30px'}],
]],
]],
"milestones", "blank", "upgrades", "challs"],
style() {return { style() {return {
'background-color': '#3325CC' 'background-color': '#3325CC'
}}, }},

84
js/v.js
View file

@ -28,6 +28,66 @@ function loadVue() {
` `
}) })
// data = a function returning the content
Vue.component('display-text', {
props: ['layer', 'data'],
template: `
<span>{{readData(data)}}</span>
`
})
// data = a function returning html content, with some limited functionality
Vue.component('raw-html', {
props: ['layer', 'data'],
template: `
<span v-html="readData(data)"></span>
`
})
// Blank lines, data = optional height in px or pair with width and height in px
Vue.component('blank', {
props: ['layer', 'data'],
template: `
<div>
<div v-if="!data" v-bind:style="{'width': '8px', 'height': '17px'}"></div>
<div v-else-if="Array.isArray(data)" v-bind:style="{'width': data[0], 'height': data[1]}"></div>
<div v-else v-bind:style="{'width': '8px', 'height': 'data'}"><br></div>
</div>
`
})
// data = an array of Components to be displayed in a row
Vue.component('row', {
props: ['layer', 'data'],
template: `
<div class="upgTable">
<div class="upgRow">
<div v-for="item in data">
<div v-if="!Array.isArray(item)" v-bind:is="item" :layer= "layer"></div>
<div v-else-if="item.length==3" v-bind:style="(item[2] ? item[2] : {})" v-bind:is="item[0]" :layer= "layer" :data= "item[1]"></div>
<div v-else-if="item.length==2" v-bind:is="item[0]" :layer= "layer" :data= "item[1]"></div>
</div>
</div>
</div>
`
})
// data = an array of Components to be displayed in a column
Vue.component('column', {
props: ['layer', 'data'],
template: `
<div class="upgTable">
<div class="upgCol">
<div v-for="item in data">
<div v-if="!Array.isArray(item)" v-bind:is="item" :layer= "layer"></div>
<div v-else-if="item.length==3" v-bind:style="(item[2] ? item[2] : {})" v-bind:is="item[0]" :layer= "layer" :data= "item[1]"></div>
<div v-else-if="item.length==2" v-bind:is="item[0]" :layer= "layer" :data= "item[1]"></div>
</div>
</div>
</div>
`
})
Vue.component('challs', { Vue.component('challs', {
props: ['layer'], props: ['layer'],
template: ` template: `
@ -140,30 +200,6 @@ function loadVue() {
` `
}) })
// data = a function returning the content
Vue.component('display-text', {
props: ['layer', 'data'],
template: `
<span>{{readData(data)}}</span>
`
})
// data = a function returning html content, with some limited functionality
Vue.component('raw-html', {
props: ['layer', 'data'],
template: `
<span v-html="readData(data)"></span>
`
})
// Blank lines
Vue.component('blank', {
props: ['layer', 'data'],
template: `
<br>
`
})
app = new Vue({ app = new Vue({
el: "#app", el: "#app",
data: { data: {