mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-21 16:13:55 +00:00
Added more particle features
This commit is contained in:
parent
c661bfc011
commit
bb0926c17d
8 changed files with 79 additions and 37 deletions
43
changelog.md
43
changelog.md
|
@ -1,40 +1,45 @@
|
||||||
# The Modding Tree changelog:
|
# The Modding Tree changelog:
|
||||||
|
|
||||||
- Fixed using text inputs for Numbers.
|
### v2.5.9 - 5/18/21
|
||||||
|
- Fixed issue when using text inputs for Numbers.
|
||||||
|
- Added particle color feature.
|
||||||
|
- Particle speed and dir are updated as it moves.
|
||||||
|
- Added setSpeed and setDir for particles.
|
||||||
|
- Added more trig functions.
|
||||||
|
|
||||||
# v2.5.8 - 5/17/21
|
### v2.5.8 - 5/17/21
|
||||||
- Added makeShinies, which creates a stationary particle in a random spot.
|
- Added makeShinies, which creates a stationary particle in a random spot.
|
||||||
- Bars will visually update more quickly.
|
- Bars will visually update more quickly.
|
||||||
- Fixed a major particle-related issue.
|
- Fixed a major particle-related issue.
|
||||||
- Fixed autoUpgrade.
|
- Fixed autoUpgrade.
|
||||||
- Fixed a minor visual issue with tree nodes.
|
- Fixed a minor visual issue with tree nodes.
|
||||||
|
|
||||||
# v2.5.7 - 5/15/21
|
### v2.5.7 - 5/15/21
|
||||||
- Added a particle system! Not only can it be used for visual effects, but particles can interact with the mouse. They could be used to create golden cookies or collectables, for example.
|
- Added a particle system! Not only can it be used for visual effects, but particles can interact with the mouse. They could be used to create golden cookies or collectables, for example.
|
||||||
- Added marked feature to buyables, clickables, and challenges. By default, stars multi-completion challenges when maxed.
|
- Added marked feature to buyables, clickables, and challenges. By default, stars multi-completion challenges when maxed.
|
||||||
- Added 'deactivated' feature to layers, which disables many features.
|
- Added 'deactivated' feature to layers, which disables many features.
|
||||||
- Improved number formatting slightly.
|
- Improved number formatting slightly.
|
||||||
|
|
||||||
# v2.5.6 - 5/14/21
|
### v2.5.6 - 5/14/21
|
||||||
- You can now use non-numeric ids for upgrades, buyables, etc.
|
- You can now use non-numeric ids for upgrades, buyables, etc.
|
||||||
- Fixed an exploit that let you buy an extra buyable.
|
- Fixed an exploit that let you buy an extra buyable.
|
||||||
- Moved basic getter/setter functions to easyAccess.js.
|
- Moved basic getter/setter functions to easyAccess.js.
|
||||||
|
|
||||||
# v2.5.5.2 - 5/12/21
|
### v2.5.5.2 - 5/12/21
|
||||||
- Fixed a major issue with buyables.
|
- Fixed a major issue with buyables.
|
||||||
- Fixed a variety of tabFormat-related issues.
|
- Fixed a variety of tabFormat-related issues.
|
||||||
- Fixed commas appearing in decimal places (thanks to pg132!)
|
- Fixed commas appearing in decimal places (thanks to pg132!)
|
||||||
|
|
||||||
# v2.5.5.1 - 5/12/21
|
### v2.5.5.1 - 5/12/21
|
||||||
- Fixed clickables.
|
- Fixed clickables.
|
||||||
|
|
||||||
# v2.5.5 - 5/12/21
|
### v2.5.5 - 5/12/21
|
||||||
- Added grids! They are a grid of buttons which behave the same, but have their own data. Good for inventory grids, map tiles, and more!
|
- Added grids! They are a grid of buttons which behave the same, but have their own data. Good for inventory grids, map tiles, and more!
|
||||||
- Added "marked" feature to add a mark to a node. Can be an image instead of a star. (Originally by Jacorb)
|
- Added "marked" feature to add a mark to a node. Can be an image instead of a star. (Originally by Jacorb)
|
||||||
- Added "layer-proxy" component that lets you use components from another layer.
|
- Added "layer-proxy" component that lets you use components from another layer.
|
||||||
- Added the ability to display non-whole numbers in main-display.
|
- Added the ability to display non-whole numbers in main-display.
|
||||||
|
|
||||||
# v2.5.4 - 5/10/21
|
### v2.5.4 - 5/10/21
|
||||||
- Added a setting to always use single-tab mode.
|
- Added a setting to always use single-tab mode.
|
||||||
- Added directMult, which multiplies prestige gain after exponents and softcaps. It actually multiplies gain for static layers.
|
- Added directMult, which multiplies prestige gain after exponents and softcaps. It actually multiplies gain for static layers.
|
||||||
- Added onEnter and onExit for challenges.
|
- Added onEnter and onExit for challenges.
|
||||||
|
@ -43,21 +48,21 @@
|
||||||
- Fixed a visual issue on mobile, thanks to thepaperpilot.
|
- Fixed a visual issue on mobile, thanks to thepaperpilot.
|
||||||
- Improved documentation in general.
|
- Improved documentation in general.
|
||||||
|
|
||||||
# v2.5.3 - 5/8/21
|
### v2.5.3 - 5/8/21
|
||||||
- Improved performance of tab formats and bars.
|
- Improved performance of tab formats and bars.
|
||||||
- Respec confirmation settings are now kept on resets.
|
- Respec confirmation settings are now kept on resets.
|
||||||
- Improved compatibility with older browsers.
|
- Improved compatibility with older browsers.
|
||||||
- Fixed missing pixel on vertical bars.
|
- Fixed missing pixel on vertical bars.
|
||||||
|
|
||||||
# v2.5.2.1 - 5/7/21
|
### v2.5.2.1 - 5/7/21
|
||||||
- Fixed microtabs making layers highlight incorrectly.
|
- Fixed microtabs making layers highlight incorrectly.
|
||||||
|
|
||||||
# v2.5.2 - 5/7/21
|
### v2.5.2 - 5/7/21
|
||||||
- Added glowColor for subtabs.
|
- Added glowColor for subtabs.
|
||||||
- Improved the display for extremely small numbers.
|
- Improved the display for extremely small numbers.
|
||||||
- Fixed issues in the buyable docs.
|
- Fixed issues in the buyable docs.
|
||||||
|
|
||||||
# v2.5.1 - 5/7/21
|
### v2.5.1 - 5/7/21
|
||||||
- Fixed dynamic things in tabFormat not updating.
|
- Fixed dynamic things in tabFormat not updating.
|
||||||
|
|
||||||
## v2.5: Dreams Really Do Come True - 5/7/21
|
## v2.5: Dreams Really Do Come True - 5/7/21
|
||||||
|
@ -77,7 +82,7 @@
|
||||||
- Added formatting support for very small numbers. Disabled in most places by default because rounding errors might cause issues. Access it with formatSmall, or enable it globally by adding "allowSmall: true" to modInfo.
|
- Added formatting support for very small numbers. Disabled in most places by default because rounding errors might cause issues. Access it with formatSmall, or enable it globally by adding "allowSmall: true" to modInfo.
|
||||||
|
|
||||||
|
|
||||||
# v2.4.1 - 4/29/21
|
### v2.4.1 - 4/29/21
|
||||||
- A number of minor fixes, many thanks to thepaperpilot.
|
- A number of minor fixes, many thanks to thepaperpilot.
|
||||||
- The respec confirmation checkbox is now part of the respec-button component.
|
- The respec confirmation checkbox is now part of the respec-button component.
|
||||||
(This also fixes the checkbox appearing when there is no respec button)
|
(This also fixes the checkbox appearing when there is no respec button)
|
||||||
|
@ -100,7 +105,7 @@
|
||||||
- Tooltips now use HTML (this means you need to replace any newlines with <br>)
|
- Tooltips now use HTML (this means you need to replace any newlines with <br>)
|
||||||
|
|
||||||
|
|
||||||
# v2.π.1 - 4/7/21
|
### v2.π.1 - 4/7/21
|
||||||
- Fixed formatting for some larger numbers.
|
- Fixed formatting for some larger numbers.
|
||||||
- Upgrades will expand if there is too much text to display.
|
- Upgrades will expand if there is too much text to display.
|
||||||
- Fixed styling challenges.
|
- Fixed styling challenges.
|
||||||
|
@ -116,28 +121,28 @@
|
||||||
- Code reorganization and style improvements by fudo.
|
- Code reorganization and style improvements by fudo.
|
||||||
|
|
||||||
|
|
||||||
## v2.3.5 - 12/21/20
|
### v2.3.5 - 12/21/20
|
||||||
- Added resetTime, which tracks the time since a layer prestiged or was reset.
|
- Added resetTime, which tracks the time since a layer prestiged or was reset.
|
||||||
- A layer node will be highlighted red if one of its subtabs is highlighted red.
|
- A layer node will be highlighted red if one of its subtabs is highlighted red.
|
||||||
- Fixed issues with keeping challenges, buyables, and clickables on reset.
|
- Fixed issues with keeping challenges, buyables, and clickables on reset.
|
||||||
- Improved the unlocking of custom layers.
|
- Improved the unlocking of custom layers.
|
||||||
- Other minor fixes.
|
- Other minor fixes.
|
||||||
|
|
||||||
## v2.3.4 - 12/16/20
|
### v2.3.4 - 12/16/20
|
||||||
- Added a node image feature.
|
- Added a node image feature.
|
||||||
- Resource display now always shows the amount of the currency the layer's gain is based on.
|
- Resource display now always shows the amount of the currency the layer's gain is based on.
|
||||||
- Added spacing between tree nodes.
|
- Added spacing between tree nodes.
|
||||||
- Another attempt to fix tooltip flickering.
|
- Another attempt to fix tooltip flickering.
|
||||||
|
|
||||||
## v2.3.3 - 12/13/20
|
### v2.3.3 - 12/13/20
|
||||||
- Fixed the first node in a row always taking up space.
|
- Fixed the first node in a row always taking up space.
|
||||||
- layerShown is now optional.
|
- layerShown is now optional.
|
||||||
- All prestige types can now use features for custom prestige types.
|
- All prestige types can now use features for custom prestige types.
|
||||||
|
|
||||||
## v2.3.2 - 12/13/20
|
### v2.3.2 - 12/13/20
|
||||||
- Fixed achievement/milestone popups.
|
- Fixed achievement/milestone popups.
|
||||||
|
|
||||||
## v2.3.1 - 12/12/20
|
### v2.3.1 - 12/12/20
|
||||||
- Another attempt to fix flickering tooltips.
|
- Another attempt to fix flickering tooltips.
|
||||||
- The "this" keyword should work everywhere except tabFormat arrays (although I may have missed some things).
|
- The "this" keyword should work everywhere except tabFormat arrays (although I may have missed some things).
|
||||||
- Fixed tree branches not updating when scrolling on the right-side tab.
|
- Fixed tree branches not updating when scrolling on the right-side tab.
|
||||||
|
|
|
@ -18,7 +18,7 @@ While reading this documentation, the following key will be used when describing
|
||||||
- **sometimes required**: This is may be required, depending on other things in the layer.
|
- **sometimes required**: This is may be required, depending on other things in the layer.
|
||||||
- **optional**: You can leave this out if you don't intend to use that feature for the layer.
|
- **optional**: You can leave this out if you don't intend to use that feature for the layer.
|
||||||
- **assigned automagically**: This value will be set automatically and override any value you set.
|
- **assigned automagically**: This value will be set automatically and override any value you set.
|
||||||
- **deprecated**: This feature is not recommended to be used anymore, and may be removed in future versions of TMT.
|
- **deprecated**: This feature is not recommended to be used, because newer features are able to achieve the same thing in a better, easier way.
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
|
|
|
@ -30,9 +30,10 @@ All distances are in pixels and angles are in degrees, with 0 being up and going
|
||||||
- text: Displays text on the particle. Can use basic HTML.
|
- text: Displays text on the particle. Can use basic HTML.
|
||||||
- style: Lets you apply other CSS styling to the particle.
|
- style: Lets you apply other CSS styling to the particle.
|
||||||
- width, height: The dimensions of the particle. Default is 35 and 35.
|
- width, height: The dimensions of the particle. Default is 35 and 35.
|
||||||
|
- color: Sets the color of the image to this color.
|
||||||
|
|
||||||
- angle: The angle that the particle should face. Default is 0.
|
- angle: The angle that the particle should face. Default is 0.
|
||||||
- dir: The angle that the particles should move in, before spread is factored in. Default is whatever angle is.
|
- dir: The initial angle that the particles should move in, before spread is factored in. Default is whatever angle is.
|
||||||
- spread: If there are several particles, they will be spread out by this many degrees, centered on dir. Default is 30.
|
- spread: If there are several particles, they will be spread out by this many degrees, centered on dir. Default is 30.
|
||||||
|
|
||||||
- rotation: The amount that the (visual) angle of the particle should change by. Default is 0.
|
- rotation: The amount that the (visual) angle of the particle should change by. Default is 0.
|
||||||
|
@ -41,9 +42,10 @@ All distances are in pixels and angles are in degrees, with 0 being up and going
|
||||||
|
|
||||||
- x, y: The starting coordinates of the particle. Default is at the mouse position.
|
- x, y: The starting coordinates of the particle. Default is at the mouse position.
|
||||||
- offset: How far from the start each particle should appear. Default is 10.
|
- offset: How far from the start each particle should appear. Default is 10.
|
||||||
|
- xVel, yVel: Set initially based on other properties, then used to update movement.
|
||||||
|
|
||||||
- layer: When changing tabs, if leaving the `layer` tab, this particle will be erased.
|
- layer: When changing tabs, if leaving the `layer` tab, this particle will be erased.
|
||||||
|
- You can add other features to particles, but you must impliment their effects yourself.
|
||||||
|
|
||||||
Function features: These stay as functions and are for more advanced things. They are optional.
|
Function features: These stay as functions and are for more advanced things. They are optional.
|
||||||
|
|
||||||
|
@ -53,7 +55,9 @@ Function features: These stay as functions and are for more advanced things. The
|
||||||
|
|
||||||
Other useful things that are not features of the particle object:
|
Other useful things that are not features of the particle object:
|
||||||
|
|
||||||
|
- setDir(particle, dir), setSpeed(particle, speed): Set the speed/direction on a particle.
|
||||||
- clearParticles(check): Function to delete particles. With no check, it deletes all particles. Check is a function that takes a particle, and returns true if that particle should be deleted.
|
- clearParticles(check): Function to delete particles. With no check, it deletes all particles. Check is a function that takes a particle, and returns true if that particle should be deleted.
|
||||||
- You can use Vue.delete(particles, this.id) to make a particle delete itself.
|
- You can use Vue.delete(particles, this.id) to make a particle delete itself.
|
||||||
- mouseX and mouseY are variables that track the mouse position.
|
- mouseX and mouseY are variables that track the mouse position.
|
||||||
- sin(x), cos(x): functions that do these operations, with x in degrees. (Instead of radians).
|
- sin(x), cos(x), tan(x): functions that do these operations, with x in degrees. (Instead of radians).
|
||||||
|
- asin(x), acos(x), atan(x): functions that do these operations, with the returned value in degrees. (instead of radians).
|
|
@ -581,6 +581,7 @@ const coolParticle = {
|
||||||
},
|
},
|
||||||
update() {
|
update() {
|
||||||
//this.width += 1
|
//this.width += 1
|
||||||
|
//setDir(this, 135)
|
||||||
},
|
},
|
||||||
layer: 'f',
|
layer: 'f',
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ let modInfo = {
|
||||||
|
|
||||||
// Set your version in num and name
|
// Set your version in num and name
|
||||||
let VERSION = {
|
let VERSION = {
|
||||||
num: "2.5.8",
|
num: "2.5.9",
|
||||||
name: "Dreams Really Do Come True",
|
name: "Dreams Really Do Come True",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ var scrolled = false;
|
||||||
|
|
||||||
// Don't change this
|
// Don't change this
|
||||||
const TMT_VERSION = {
|
const TMT_VERSION = {
|
||||||
tmtNum: "2.5.8",
|
tmtNum: "2.5.9",
|
||||||
tmtName: "Dreams Really Do Come True"
|
tmtName: "Dreams Really Do Come True"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,13 +43,6 @@ function makeShinies(data, amount=1) {
|
||||||
makeParticles(data, amount, "shiny")
|
makeParticles(data, amount, "shiny")
|
||||||
}
|
}
|
||||||
|
|
||||||
function sin(x) {
|
|
||||||
return Math.sin(x*Math.PI/180)
|
|
||||||
}
|
|
||||||
|
|
||||||
function cos(x) {
|
|
||||||
return Math.cos(x*Math.PI/180)
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateParticles(diff) {
|
function updateParticles(diff) {
|
||||||
for (p in particles) {
|
for (p in particles) {
|
||||||
|
@ -65,12 +58,25 @@ function updateParticles(diff) {
|
||||||
particle.angle += particle.rotation
|
particle.angle += particle.rotation
|
||||||
particle.x += particle.xVel
|
particle.x += particle.xVel
|
||||||
particle.y += particle.yVel
|
particle.y += particle.yVel
|
||||||
|
particle.speed = Math.sqrt(Math.pow(particle.xVel, 2) + Math.pow(particle.yVel, 2))
|
||||||
|
particle.dir = atan(-particle.xVel/particle.yVel)
|
||||||
particle.yVel += particle.gravity
|
particle.yVel += particle.gravity
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setDir(particle, dir) {
|
||||||
|
particle.dir = dir
|
||||||
|
particle.xVel = particle.speed * sin(particle.dir)
|
||||||
|
particle.yVel = particle.speed * cos(particle.dir) * -1
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSpeed(particle, speed) {
|
||||||
|
particle.speed = speed
|
||||||
|
particle.xVel = particle.speed * sin(particle.dir)
|
||||||
|
particle.yVel = particle.speed * cos(particle.dir) * -1
|
||||||
|
}
|
||||||
|
|
||||||
const newParticles = {
|
const newParticles = {
|
||||||
normal() {
|
normal() {
|
||||||
particleID++
|
particleID++
|
||||||
|
@ -137,7 +143,7 @@ function getOpacity(particle) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function constructParticleStyle(particle){
|
function constructParticleStyle(particle){
|
||||||
return {
|
let style = {
|
||||||
left: (particle.x - particle.height/2) + 'px',
|
left: (particle.x - particle.height/2) + 'px',
|
||||||
top: (particle.y - particle.height/2) + 'px',
|
top: (particle.y - particle.height/2) + 'px',
|
||||||
width: particle.width + 'px',
|
width: particle.width + 'px',
|
||||||
|
@ -145,8 +151,15 @@ function constructParticleStyle(particle){
|
||||||
transform: "rotate(" + particle.angle + "deg)",
|
transform: "rotate(" + particle.angle + "deg)",
|
||||||
opacity: getOpacity(particle),
|
opacity: getOpacity(particle),
|
||||||
"pointer-events": (particle.onClick || particle.onHover) ? 'auto' : 'none',
|
"pointer-events": (particle.onClick || particle.onHover) ? 'auto' : 'none',
|
||||||
"background-image": "url(" + particle.image + ")",
|
|
||||||
}
|
}
|
||||||
|
if (particle.color) {
|
||||||
|
style["background-color"] = particle.color
|
||||||
|
style.mask = "url(#pmask" + particle.id + ")"
|
||||||
|
style["-webkit-mask-box-image"] = "url(" + particle.image + ")"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
style["background-image"] = "url(" + particle.image + ")"
|
||||||
|
return style
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearParticles(check) {
|
function clearParticles(check) {
|
||||||
|
@ -157,4 +170,17 @@ function clearParticles(check) {
|
||||||
Vue.delete(particles, p)
|
Vue.delete(particles, p)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Trig with degrees
|
||||||
|
function sin(x) { return Math.sin(x*Math.PI/180)}
|
||||||
|
|
||||||
|
function cos(x) {return Math.cos(x*Math.PI/180)}
|
||||||
|
|
||||||
|
function tan(x) {return Math.tan(x*Math.PI/180)}
|
||||||
|
|
||||||
|
function asin(x) { return Math.asin(x)*180/Math.PI}
|
||||||
|
|
||||||
|
function acos(x) { return Math.acos(x)*180/Math.PI}
|
||||||
|
|
||||||
|
function atan(x) { return Math.atan(x)*180/Math.PI}
|
||||||
|
|
|
@ -191,9 +191,15 @@ var systemComponents = {
|
||||||
|
|
||||||
'particle': {
|
'particle': {
|
||||||
props: ['data', 'index'],
|
props: ['data', 'index'],
|
||||||
template: `<div class='particle instant' v-bind:style="[constructParticleStyle(data), data.style]"
|
template: `<div><div class='particle instant' v-bind:style="[constructParticleStyle(data), data.style]"
|
||||||
v-on:click="run(data.onClick, data)" v-on:mouseenter="run(data.onMouseOver, data)" v-on:mouseleave="run(data.onMouseLeave, data)" ><span v-html="data.text"></span>
|
v-on:click="run(data.onClick, data)" v-on:mouseenter="run(data.onMouseOver, data)" v-on:mouseleave="run(data.onMouseLeave, data)" ><span v-html="data.text"></span>
|
||||||
</div>
|
</div>
|
||||||
|
<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" />
|
||||||
|
</mask>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
`
|
`
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue