This commit is contained in:
Anuken
2020-05-11 13:20:27 -04:00
parent 37c92302f0
commit 9cca79adaa
8 changed files with 251 additions and 72 deletions
+50 -3
View File
@@ -8,6 +8,7 @@ import arc.util.*;
import mindustry.ctype.*;
import mindustry.gen.*;
import mindustry.type.*;
import mindustry.world.*;
import static mindustry.Vars.*;
@@ -30,7 +31,7 @@ public class Weathers implements ContentList{
}
@Override
public void draw(Weatherc state){
public void drawOver(Weatherc state){
rand.setSeed(0);
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
@@ -62,10 +63,19 @@ public class Weathers implements ContentList{
rain = new Weather("rain"){
float yspeed = 7f, xspeed = 2f, padding = 16f, size = 40f, density = 1000f;
TextureRegion[] splashes = new TextureRegion[12];
@Override
public void draw(Weatherc state){
rand.setSeed(0);
public void load(){
super.load();
for(int i = 0; i < splashes.length; i++){
splashes[i] = Core.atlas.find("splash-" + i);
}
}
@Override
public void drawOver(Weatherc state){
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
@@ -95,6 +105,43 @@ public class Weathers implements ContentList{
}
}
}
@Override
public void drawUnder(Weatherc state){
Tmp.r1.setCentered(Core.camera.position.x, Core.camera.position.y, Core.graphics.getWidth() / renderer.minScale(), Core.graphics.getHeight() / renderer.minScale());
Tmp.r1.grow(padding);
Core.camera.bounds(Tmp.r2);
int total = (int)(Tmp.r1.area() / density * state.intensity()) / 2;
float t = Time.time() / 22f;
for(int i = 0; i < total; i++){
float offset = rand.random(0f, 1f);
float time = t + offset;
int pos = (int)((time));
float life = time % 1f;
float x = (rand.random(0f, world.unitWidth()) + pos*953);
float y = (rand.random(0f, world.unitHeight()) - pos*453);
x -= Tmp.r1.x;
y -= Tmp.r1.y;
x = Mathf.mod(x, Tmp.r1.width);
y = Mathf.mod(y, Tmp.r1.height);
x += Tmp.r1.x;
y += Tmp.r1.y;
if(Tmp.r3.setCentered(x, y, life * 4f).overlaps(Tmp.r2)){
Tile tile = world.tileWorld(x, y);
if(tile != null && tile.floor().liquidDrop == Liquids.water){
Draw.tint(Tmp.c1.set(tile.floor().mapColor).mul(1.5f));
Draw.rect(splashes[(int)(life * (splashes.length - 1))], x, y);
//Lines.stroke((1f - life) * 2f);
//Lines.circle(x, y, life * 4f);
}
}
}
}
};
}
}