Block Drawer cleanup
This commit is contained in:
@@ -39,11 +39,10 @@ public class ItemTurret extends Turret{
|
||||
/** Makes copies of all bullets and limits their range. */
|
||||
public void limitRange(float margin){
|
||||
for(var entry : ammoTypes.copy().entries()){
|
||||
var copy = entry.value.copy();
|
||||
float realRange = copy.rangeChange + range;
|
||||
var bullet = entry.value;
|
||||
float realRange = bullet.rangeChange + range;
|
||||
//doesn't handle drag
|
||||
copy.lifetime = (realRange + margin) / copy.speed;
|
||||
ammoTypes.put(entry.key, copy);
|
||||
bullet.lifetime = (realRange + margin) / bullet.speed;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -42,9 +42,7 @@ public class PayloadTurret extends Turret{
|
||||
/** Makes copies of all bullets and limits their range. */
|
||||
public void limitRange(float margin){
|
||||
for(var entry : ammoTypes.copy().entries()){
|
||||
var copy = entry.value.copy();
|
||||
copy.lifetime = (range + margin) / copy.speed;
|
||||
ammoTypes.put(entry.key, copy);
|
||||
entry.value.lifetime = (range + margin) / entry.value.speed;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawAnimation extends DrawBlock{
|
||||
public int frameCount = 3;
|
||||
public float frameSpeed = 5f;
|
||||
public boolean sine = true;
|
||||
public TextureRegion[] frames;
|
||||
public TextureRegion liquid, top;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(build.block.region, build.x, build.y);
|
||||
Draw.rect(
|
||||
sine ?
|
||||
frames[(int)Mathf.absin(build.totalProgress(), frameSpeed, frameCount - 0.001f)] :
|
||||
frames[(int)((build.totalProgress() / frameSpeed) % frameCount)],
|
||||
build.x, build.y);
|
||||
|
||||
if(build.liquids != null){
|
||||
Drawf.liquid(liquid, build.x, build.y, build.liquids.currentAmount() / build.block.liquidCapacity, build.liquids.current().color);
|
||||
}
|
||||
if(top.found()){
|
||||
Draw.rect(top, build.x, build.y);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
frames = new TextureRegion[frameCount];
|
||||
for(int i = 0; i < frameCount; i++){
|
||||
frames[i] = Core.atlas.find(block.name + "-frame" + i);
|
||||
}
|
||||
|
||||
liquid = Core.atlas.find(block.name + "-liquid");
|
||||
top = Core.atlas.find(block.name + "-top");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return top.found() ? new TextureRegion[]{block.region, top} : new TextureRegion[]{block.region};
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,12 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.util.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
//TODO make non-standalone?
|
||||
public class DrawArcSmelter extends DrawBlock{
|
||||
public TextureRegion bottom;
|
||||
public class DrawArcSmelt extends DrawPartial{
|
||||
public Color flameColor = Color.valueOf("f58349"), midColor = Color.valueOf("f2d585");
|
||||
public float flameRad = 1f, circleSpace = 2f, flameRadiusScl = 3f, flameRadiusMag = 0.3f, circleStroke = 1.5f;
|
||||
|
||||
@@ -18,13 +14,10 @@ public class DrawArcSmelter extends DrawBlock{
|
||||
public int particles = 25;
|
||||
public float particleLife = 40f, particleRad = 7f, particleStroke = 1.1f, particleLen = 3f;
|
||||
public boolean drawCenter = true;
|
||||
public boolean drawBottom = true, drawRegion = true;
|
||||
public Blending blending = Blending.additive;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
if(drawBottom) Draw.rect(bottom, build.x, build.y);
|
||||
|
||||
if(build.warmup() > 0f && flameColor.a > 0.001f){
|
||||
Lines.stroke(circleStroke * build.warmup());
|
||||
|
||||
@@ -52,17 +45,5 @@ public class DrawArcSmelter extends DrawBlock{
|
||||
Draw.blend();
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
if(drawRegion) Draw.rect(build.block.region, build.x, build.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
bottom = Core.atlas.find(block.name + "-bottom");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return new TextureRegion[]{bottom, block.region};
|
||||
}
|
||||
}
|
||||
@@ -10,16 +10,13 @@ import mindustry.graphics.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawCells extends DrawBlock{
|
||||
public TextureRegion bottom, middle;
|
||||
public TextureRegion middle;
|
||||
public Color color = Color.white.cpy(), particleColorFrom = Color.black.cpy(), particleColorTo = Color.black.cpy();
|
||||
public int particles = 12;
|
||||
public float range = 4f, recurrence = 6f, radius = 3f, lifetime = 60f;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
|
||||
Draw.rect(bottom, build.x, build.y);
|
||||
|
||||
Drawf.liquid(middle, build.x, build.y, build.warmup(), color);
|
||||
|
||||
if(build.warmup() > 0.001f){
|
||||
@@ -46,12 +43,6 @@ public class DrawCells extends DrawBlock{
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
bottom = Core.atlas.find(block.name + "-bottom");
|
||||
middle = Core.atlas.find(block.name + "-middle");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return new TextureRegion[]{bottom, block.region};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawCultivator extends DrawBlock{
|
||||
public class DrawCultivator extends DrawPartial{
|
||||
public Color plantColor = Color.valueOf("5541b1");
|
||||
public Color plantColorLight = Color.valueOf("7457ce");
|
||||
public Color bottomColor = Color.valueOf("474747");
|
||||
@@ -18,12 +18,9 @@ public class DrawCultivator extends DrawBlock{
|
||||
public float recurrence = 6f, radius = 3f;
|
||||
|
||||
public TextureRegion middle;
|
||||
public TextureRegion top;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(build.block.region, build.x, build.y);
|
||||
|
||||
Drawf.liquid(middle, build.x, build.y, build.warmup(), plantColor);
|
||||
|
||||
Draw.color(bottomColor, plantColorLight, build.warmup());
|
||||
@@ -40,17 +37,10 @@ public class DrawCultivator extends DrawBlock{
|
||||
}
|
||||
|
||||
Draw.color();
|
||||
Draw.rect(top, build.x, build.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
middle = Core.atlas.find(block.name + "-middle");
|
||||
top = Core.atlas.find(block.name + "-top");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return new TextureRegion[]{block.region, top};
|
||||
}
|
||||
}
|
||||
|
||||
25
core/src/mindustry/world/draw/DrawFade.java
Normal file
25
core/src/mindustry/world/draw/DrawFade.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawFade extends DrawBlock{
|
||||
public String suffix = "-top";
|
||||
public float alpha = 0.6f, scale = 3f;
|
||||
public TextureRegion region;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.alpha(Mathf.absin(build.totalProgress(), scale, alpha) * build.warmup());
|
||||
Draw.rect(region, build.x, build.y);
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
region = Core.atlas.find(block.name + suffix);
|
||||
}
|
||||
}
|
||||
@@ -9,16 +9,17 @@ import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawSmelter extends DrawBlock{
|
||||
//TODO remake/remove
|
||||
public class DrawFlame extends DrawPartial{
|
||||
public Color flameColor = Color.valueOf("ffc999");
|
||||
public TextureRegion top;
|
||||
public float lightRadius = 60f, lightAlpha = 0.65f, lightSinScl = 10f, lightSinMag = 5;
|
||||
public float flameRadius = 3f, flameRadiusIn = 1.9f, flameRadiusScl = 5f, flameRadiusMag = 2f, flameRadiusInMag = 1f;
|
||||
|
||||
public DrawSmelter(){
|
||||
public DrawFlame(){
|
||||
}
|
||||
|
||||
public DrawSmelter(Color flameColor){
|
||||
public DrawFlame(Color flameColor){
|
||||
this.flameColor = flameColor;
|
||||
}
|
||||
|
||||
@@ -30,8 +31,6 @@ public class DrawSmelter extends DrawBlock{
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(build.block.region, build.x, build.y, build.block.rotate ? build.rotdeg() : 0);
|
||||
|
||||
if(build.warmup() > 0f && flameColor.a > 0.001f){
|
||||
float g = 0.3f;
|
||||
float r = 0.06f;
|
||||
34
core/src/mindustry/world/draw/DrawFrames.java
Normal file
34
core/src/mindustry/world/draw/DrawFrames.java
Normal file
@@ -0,0 +1,34 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawFrames extends DrawPartial{
|
||||
/** Number of frames to draw. */
|
||||
public int frames = 3;
|
||||
/** Ticks between frames. */
|
||||
public float interval = 5f;
|
||||
/** If true, frames wil alternate back and forth in a sine wave. */
|
||||
public boolean sine = true;
|
||||
public TextureRegion[] regions;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(
|
||||
sine ?
|
||||
regions[(int)Mathf.absin(build.totalProgress(), interval, frames - 0.001f)] :
|
||||
regions[(int)((build.totalProgress() / interval) % frames)],
|
||||
build.x, build.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
regions = new TextureRegion[frames];
|
||||
for(int i = 0; i < frames; i++){
|
||||
regions[i] = Core.atlas.find(block.name + "-frame" + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawGlow extends DrawBlock{
|
||||
public String suffix = "-top";
|
||||
public float glowAmount = 0.9f, glowScale = 3f;
|
||||
public TextureRegion top;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(build.block.region, build.x, build.y);
|
||||
Draw.alpha(Mathf.absin(build.totalProgress(), glowScale, glowAmount) * build.warmup());
|
||||
Draw.rect(top, build.x, build.y);
|
||||
Draw.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
top = Core.atlas.find(block.name + suffix);
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.util.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.production.*;
|
||||
|
||||
public class DrawLiquid extends DrawBlock{
|
||||
public @Nullable Liquid liquidDrawn;
|
||||
public TextureRegion inLiquid, liquid, top;
|
||||
public boolean useOutputSprite = false;
|
||||
|
||||
public DrawLiquid(){
|
||||
}
|
||||
|
||||
public DrawLiquid(boolean useOutputSprite){
|
||||
this.useOutputSprite = useOutputSprite;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(build.block.region, build.x, build.y);
|
||||
GenericCrafter type = (GenericCrafter)build.block;
|
||||
|
||||
if((inLiquid.found() || useOutputSprite) && liquidDrawn != null){
|
||||
Drawf.liquid(useOutputSprite ? liquid : inLiquid, build.x, build.y,
|
||||
build.liquids.get(liquidDrawn) / type.liquidCapacity,
|
||||
liquidDrawn.color
|
||||
);
|
||||
}
|
||||
|
||||
if(type.outputLiquid != null && build.liquids.get(type.outputLiquid.liquid) > 0){
|
||||
Drawf.liquid(liquid, build.x, build.y,
|
||||
build.liquids.get(type.outputLiquid.liquid) / type.liquidCapacity,
|
||||
type.outputLiquid.liquid.color
|
||||
);
|
||||
}
|
||||
|
||||
if(top.found()) Draw.rect(top, build.x, build.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
expectCrafter(block);
|
||||
|
||||
top = Core.atlas.find(block.name + "-top");
|
||||
liquid = Core.atlas.find(block.name + "-liquid");
|
||||
inLiquid = Core.atlas.find(block.name + "-input-liquid");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return top.found() ? new TextureRegion[]{block.region, top} : new TextureRegion[]{block.region};
|
||||
}
|
||||
}
|
||||
@@ -24,17 +24,18 @@ public class DrawLiquidRegion extends DrawPartial{
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
if(!build.block.hasLiquids) return;
|
||||
|
||||
Liquid drawn = drawLiquid != null ? drawLiquid : build.liquids.current();
|
||||
Drawf.liquid(liquid, build.x, build.y,
|
||||
build.liquids.get(drawn) / build.block.liquidCapacity,
|
||||
Tmp.c1.set(drawn.color).a(drawn.color.a * alpha)
|
||||
build.liquids.get(drawn) / build.block.liquidCapacity * alpha,
|
||||
drawn.color
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
if(!block.hasLiquids){
|
||||
throw new RuntimeException("Block '" + block + "' has a DrawLiquidRegion, but hasLiquids is false! Make sure it is true.");
|
||||
}
|
||||
|
||||
liquid = Core.atlas.find(block.name + suffix);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.util.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.production.*;
|
||||
|
||||
public class DrawMixer extends DrawBlock{
|
||||
public @Nullable Liquid liquidDrawn;
|
||||
public TextureRegion inLiquid, liquid, top, bottom;
|
||||
public boolean useOutputSprite;
|
||||
|
||||
public DrawMixer(){
|
||||
}
|
||||
|
||||
public DrawMixer(boolean useOutputSprite){
|
||||
this.useOutputSprite = useOutputSprite;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
GenericCrafter crafter = (GenericCrafter)build.block;
|
||||
float rotation = build.block.rotate ? build.rotdeg() : 0;
|
||||
Draw.rect(bottom, build.x, build.y, rotation);
|
||||
|
||||
if((inLiquid.found() || useOutputSprite) && liquidDrawn != null){
|
||||
Drawf.liquid(useOutputSprite ? liquid : inLiquid, build.x, build.y,
|
||||
build.liquids.get(liquidDrawn) / build.block.liquidCapacity,
|
||||
liquidDrawn.color
|
||||
);
|
||||
}
|
||||
|
||||
if(crafter.outputLiquid != null && build.liquids.get(crafter.outputLiquid.liquid) > 0.001f){
|
||||
var liq = crafter.outputLiquid.liquid;
|
||||
|
||||
Drawf.liquid(liquid, build.x, build.y, build.liquids.get(liq) / crafter.liquidCapacity, liq.color);
|
||||
}
|
||||
|
||||
Draw.rect(top, build.x, build.y, rotation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
expectCrafter(block);
|
||||
|
||||
inLiquid = Core.atlas.find(block.name + "-input-liquid");
|
||||
liquid = Core.atlas.find(block.name + "-liquid");
|
||||
top = Core.atlas.find(block.name + "-top");
|
||||
bottom = Core.atlas.find(block.name + "-bottom");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return new TextureRegion[]{bottom, top};
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawRotator extends DrawBlock{
|
||||
public TextureRegion rotator, top;
|
||||
public boolean drawSpinSprite = false;
|
||||
public float spinSpeed = 2f;
|
||||
|
||||
public DrawRotator(boolean drawSpinSprite, float spinSpeed){
|
||||
this.drawSpinSprite = drawSpinSprite;
|
||||
this.spinSpeed = spinSpeed;
|
||||
}
|
||||
|
||||
public DrawRotator(){
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(build.block.region, build.x, build.y);
|
||||
if(drawSpinSprite){
|
||||
Drawf.spinSprite(rotator, build.x, build.y, build.totalProgress() * spinSpeed);
|
||||
}else{
|
||||
Draw.rect(rotator, build.x, build.y, build.totalProgress() * spinSpeed);
|
||||
}
|
||||
if(top.found()) Draw.rect(top, build.x, build.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
rotator = Core.atlas.find(block.name + "-rotator");
|
||||
top = Core.atlas.find(block.name + "-top");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return top.found() ? new TextureRegion[]{block.region, rotator, top} : new TextureRegion[]{block.region, rotator};
|
||||
}
|
||||
}
|
||||
@@ -7,16 +7,11 @@ import mindustry.entities.units.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawTurbines extends DrawBlock{
|
||||
public class DrawTurbines extends DrawPartial{
|
||||
public TextureRegion[] turbines = new TextureRegion[2];
|
||||
public TextureRegion cap;
|
||||
public float turbineSpeed = 2f;
|
||||
|
||||
@Override
|
||||
public void drawPlan(Block block, BuildPlan plan, Eachable<BuildPlan> list){
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
float totalTime = build.totalProgress();
|
||||
|
||||
@@ -8,12 +8,11 @@ import mindustry.gen.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.world.*;
|
||||
|
||||
public class DrawWeave extends DrawBlock{
|
||||
public TextureRegion weave, bottom;
|
||||
public class DrawWeave extends DrawPartial{
|
||||
public TextureRegion weave;
|
||||
|
||||
@Override
|
||||
public void draw(Building build){
|
||||
Draw.rect(bottom, build.x, build.y);
|
||||
Draw.rect(weave, build.x, build.y, build.totalProgress());
|
||||
|
||||
Draw.color(Pal.accent);
|
||||
@@ -26,18 +25,10 @@ public class DrawWeave extends DrawBlock{
|
||||
build.block.size * Vars.tilesize / 2f);
|
||||
|
||||
Draw.reset();
|
||||
|
||||
Draw.rect(build.block.region, build.x, build.y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
weave = Core.atlas.find(block.name + "-weave");
|
||||
bottom = Core.atlas.find(block.name + "-bottom");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureRegion[] icons(Block block){
|
||||
return new TextureRegion[]{bottom, weave, block.region};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user