diff --git a/changelog.md b/changelog.md
index 84f3142..50f40d9 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,40 +1,45 @@
# 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.
- Bars will visually update more quickly.
- Fixed a major particle-related issue.
- Fixed autoUpgrade.
- 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 marked feature to buyables, clickables, and challenges. By default, stars multi-completion challenges when maxed.
- Added 'deactivated' feature to layers, which disables many features.
- 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.
- Fixed an exploit that let you buy an extra buyable.
- 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 variety of tabFormat-related issues.
- 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.
-# 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 "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 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 directMult, which multiplies prestige gain after exponents and softcaps. It actually multiplies gain for static layers.
- Added onEnter and onExit for challenges.
@@ -43,21 +48,21 @@
- Fixed a visual issue on mobile, thanks to thepaperpilot.
- Improved documentation in general.
-# v2.5.3 - 5/8/21
+### v2.5.3 - 5/8/21
- Improved performance of tab formats and bars.
- Respec confirmation settings are now kept on resets.
- Improved compatibility with older browsers.
- 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.
-# v2.5.2 - 5/7/21
+### v2.5.2 - 5/7/21
- Added glowColor for subtabs.
- Improved the display for extremely small numbers.
- 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.
## 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.
-# v2.4.1 - 4/29/21
+### v2.4.1 - 4/29/21
- A number of minor fixes, many thanks to thepaperpilot.
- The respec confirmation checkbox is now part of the respec-button component.
(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
)
-# v2.π.1 - 4/7/21
+### v2.π.1 - 4/7/21
- Fixed formatting for some larger numbers.
- Upgrades will expand if there is too much text to display.
- Fixed styling challenges.
@@ -116,28 +121,28 @@
- 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.
- 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.
- Improved the unlocking of custom layers.
- Other minor fixes.
-## v2.3.4 - 12/16/20
+### v2.3.4 - 12/16/20
- Added a node image feature.
- Resource display now always shows the amount of the currency the layer's gain is based on.
- Added spacing between tree nodes.
- 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.
- layerShown is now optional.
- 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.
-## v2.3.1 - 12/12/20
+### v2.3.1 - 12/12/20
- Another attempt to fix flickering tooltips.
- 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.
diff --git a/docs/!general-info.md b/docs/!general-info.md
index 6a1e5cf..64ea6fa 100644
--- a/docs/!general-info.md
+++ b/docs/!general-info.md
@@ -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.
- **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.
-- **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
diff --git a/docs/particles.md b/docs/particles.md
index c6f2b20..d627011 100644
--- a/docs/particles.md
+++ b/docs/particles.md
@@ -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.
- style: Lets you apply other CSS styling to the particle.
- 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.
-- 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.
- 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.
- 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.
-
+- 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.
@@ -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:
+- 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.
- You can use Vue.delete(particles, this.id) to make a particle delete itself.
- 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).
\ No newline at end of file
+- 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).
\ No newline at end of file
diff --git a/js/Demo/demoLayers.js b/js/Demo/demoLayers.js
index 80ba355..6010860 100644
--- a/js/Demo/demoLayers.js
+++ b/js/Demo/demoLayers.js
@@ -581,6 +581,7 @@ const coolParticle = {
},
update() {
//this.width += 1
+ //setDir(this, 135)
},
layer: 'f',
}
diff --git a/js/Demo/demoMod.js b/js/Demo/demoMod.js
index b62c9e1..a01db33 100644
--- a/js/Demo/demoMod.js
+++ b/js/Demo/demoMod.js
@@ -11,7 +11,7 @@ let modInfo = {
// Set your version in num and name
let VERSION = {
- num: "2.5.8",
+ num: "2.5.9",
name: "Dreams Really Do Come True",
}
diff --git a/js/game.js b/js/game.js
index e1aa25e..7918844 100644
--- a/js/game.js
+++ b/js/game.js
@@ -5,7 +5,7 @@ var scrolled = false;
// Don't change this
const TMT_VERSION = {
- tmtNum: "2.5.8",
+ tmtNum: "2.5.9",
tmtName: "Dreams Really Do Come True"
}
diff --git a/js/technical/particleSystem.js b/js/technical/particleSystem.js
index 8aaf079..ba5a4b8 100644
--- a/js/technical/particleSystem.js
+++ b/js/technical/particleSystem.js
@@ -43,13 +43,6 @@ function makeShinies(data, amount=1) {
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) {
for (p in particles) {
@@ -65,12 +58,25 @@ function updateParticles(diff) {
particle.angle += particle.rotation
particle.x += particle.xVel
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
-
}
}
}
+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 = {
normal() {
particleID++
@@ -137,7 +143,7 @@ function getOpacity(particle) {
}
function constructParticleStyle(particle){
- return {
+ let style = {
left: (particle.x - particle.height/2) + 'px',
top: (particle.y - particle.height/2) + 'px',
width: particle.width + 'px',
@@ -145,8 +151,15 @@ function constructParticleStyle(particle){
transform: "rotate(" + particle.angle + "deg)",
opacity: getOpacity(particle),
"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) {
@@ -157,4 +170,17 @@ function clearParticles(check) {
Vue.delete(particles, p)
}
}
-}
\ No newline at end of file
+}
+
+// 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}
diff --git a/js/technical/systemComponents.js b/js/technical/systemComponents.js
index b653c89..bbdc806 100644
--- a/js/technical/systemComponents.js
+++ b/js/technical/systemComponents.js
@@ -191,9 +191,15 @@ var systemComponents = {
'particle': {
props: ['data', 'index'],
- template: `