WIP logic particle effect instruction

This commit is contained in:
Anuken
2023-08-02 22:15:44 -04:00
parent 660c38db43
commit 6bf5e8ae1e
19 changed files with 596 additions and 23 deletions

View File

@@ -2937,6 +2937,7 @@ public class Blocks{
armor = 5f;
alwaysUnlocked = true;
incinerateNonBuildable = true;
requiresCoreZone = true;
//TODO should this be higher?
buildCostMultiplier = 0.7f;
@@ -2956,6 +2957,7 @@ public class Blocks{
armor = 10f;
incinerateNonBuildable = true;
buildCostMultiplier = 0.7f;
requiresCoreZone = true;
unitCapModifier = 15;
researchCostMultipliers.put(Items.silicon, 0.5f);
@@ -2973,6 +2975,7 @@ public class Blocks{
armor = 15f;
incinerateNonBuildable = true;
buildCostMultiplier = 0.7f;
requiresCoreZone = true;
unitCapModifier = 15;
researchCostMultipliers.put(Items.silicon, 0.4f);
@@ -4571,7 +4574,7 @@ public class Blocks{
deathExplosionEffect = Fx.massiveExplosion;
shootOnDeath = true;
shake = 10f;
bullet = new ExplosionBulletType(640f, 65f){{
bullet = new ExplosionBulletType(700f, 65f){{
hitColor = Pal.redLight;
shootEffect = new MultiEffect(Fx.massiveExplosion, Fx.scatheExplosion, Fx.scatheLight, new WaveEffect(){{
lifetime = 10f;

View File

@@ -29,11 +29,11 @@ public class Fx{
none = new Effect(0, 0f, e -> {}),
blockCrash = new Effect(100f, e -> {
blockCrash = new Effect(90f, e -> {
if(!(e.data instanceof Block block)) return;
alpha(e.fin() + 0.5f);
float offset = Mathf.lerp(0f, 200f, e.fout());
float offset = Mathf.lerp(0f, 180f, e.fout());
color(0f, 0f, 0f, 0.44f);
rect(block.fullIcon, e.x - offset * 4f, e.y, (float)block.size * 8f, (float)block.size * 8f);
color(Color.white);
@@ -417,6 +417,20 @@ public class Fx{
Lines.spikes(e.x, e.y, 1f + e.fin() * 6f, e.fout() * 4f, 6);
}),
sparkExplosion = new Effect(30f, 160f, e -> {
color(e.color);
stroke(e.fout() * 3f);
float circleRad = 6f + e.finpow() * e.rotation;
Lines.circle(e.x, e.y, circleRad);
rand.setSeed(e.id);
for(int i = 0; i < 16; i++){
float angle = rand.random(360f);
float lenRand = rand.random(0.5f, 1f);
Lines.lineAngle(e.x, e.y, angle, e.foutpow() * e.rotation * 0.8f * rand.random(1f, 0.6f) + 2f, e.finpow() * e.rotation * 1.2f * lenRand + 6f);
}
}),
titanExplosion = new Effect(30f, 160f, e -> {
color(e.color);
stroke(e.fout() * 3f);
@@ -609,6 +623,12 @@ public class Fx{
Lines.circle(e.x, e.y, 2f + e.finpow() * 7f);
}),
dynamicWave = new Effect(22, e -> {
color(e.color, 0.7f);
stroke(e.fout() * 2f);
Lines.circle(e.x, e.y, 4f + e.finpow() * e.rotation);
}),
shieldWave = new Effect(22, e -> {
color(e.color, 0.7f);
stroke(e.fout() * 2f);
@@ -1517,6 +1537,15 @@ public class Fx{
});
}),
smokePuff = new Effect(30, e -> {
color(e.color);
randLenVectors(e.id, 6, 4f + 30f * e.finpow(), (x, y) -> {
Fill.circle(e.x + x, e.y + y, e.fout() * 3f);
Fill.circle(e.x + x / 2f, e.y + y / 2f, e.fout());
});
}),
shootSmall = new Effect(8, e -> {
color(Pal.lighterOrange, Pal.lightOrange, e.fin());
float w = 1f + 5 * e.fout();