Implemented puddles of liquid

This commit is contained in:
Anuken
2018-04-16 17:32:35 -04:00
parent 871b6548ab
commit bece87c790
11 changed files with 227 additions and 10 deletions

View File

@@ -11,12 +11,14 @@ public class Liquids {
water = new Liquid("water", Color.valueOf("486acd")) {
{
heatCapacity = 0.4f;
effect = StatusEffects.wet;
}
},
lava = new Liquid("lava", Color.valueOf("e37341")) {
{
temperature = 0.7f;
temperature = 0.8f;
viscosity = 0.8f;
effect = StatusEffects.melting;
}
},
oil = new Liquid("oil", Color.valueOf("313131")) {
@@ -24,12 +26,14 @@ public class Liquids {
viscosity = 0.7f;
flammability = 0.6f;
explosiveness = 0.6f;
effect = StatusEffects.oiled;
}
},
cryofluid = new Liquid("cryofluid", Color.SKY) {
{
heatCapacity = 0.75f;
temperature = 0.5f;
effect = StatusEffects.freezing;
}
};
}

View File

@@ -1,6 +1,7 @@
package io.anuke.mindustry.content.bullets;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.GridPoint2;
import io.anuke.mindustry.content.Liquids;
import io.anuke.mindustry.content.StatusEffects;
import io.anuke.mindustry.content.fx.BulletFx;
@@ -8,7 +9,9 @@ import io.anuke.mindustry.content.fx.Fx;
import io.anuke.mindustry.entities.Bullet;
import io.anuke.mindustry.entities.BulletType;
import io.anuke.mindustry.entities.effect.DamageArea;
import io.anuke.mindustry.entities.effect.Fire;
import io.anuke.mindustry.entities.effect.Lightning;
import io.anuke.mindustry.entities.effect.Puddle;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.mindustry.resource.Liquid;
import io.anuke.ucore.core.Effects;
@@ -16,8 +19,12 @@ import io.anuke.ucore.graphics.Draw;
import io.anuke.ucore.graphics.Fill;
import io.anuke.ucore.graphics.Lines;
import io.anuke.ucore.util.Angles;
import io.anuke.ucore.util.Geometry;
import io.anuke.ucore.util.Mathf;
import static io.anuke.mindustry.Vars.tilesize;
import static io.anuke.mindustry.Vars.world;
public class TurretBullets {
public static final BulletType
@@ -220,6 +227,15 @@ public class TurretBullets {
@Override
public void hit(Bullet b, float hitx, float hity) {
Effects.effect(hiteffect, liquid.color, hitx, hity);
Puddle.deposit(world.tileWorld(hitx, hity), liquid, 5f);
if(liquid.temperature <= 0.5f && liquid.flammability < 0.3f){
float intensity = 400f;
Fire.extinguish(world.tileWorld(hitx, hity), intensity);
for(GridPoint2 p : Geometry.d4){
Fire.extinguish(world.tileWorld(hitx + p.x*tilesize, hity + p.y*tilesize), intensity);
}
}
}
}
}

View File

@@ -43,6 +43,16 @@ public class EnvironmentFx {
Draw.color();
}),
steam = new Effect(35f, e -> {
Draw.color(Color.LIGHT_GRAY);
Angles.randLenVectors(e.id, 2, 2f + e.fin()*7f, (x, y) -> {
Fill.circle(e.x + x, e.y + y, 0.2f + e.fslope() * 1.5f);
});
Draw.color();
}),
fireballsmoke = new Effect(25f, e -> {
Draw.color(Color.GRAY);