Moved block types into subpackages
This commit is contained in:
@@ -8,6 +8,7 @@ import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Effects;
|
||||
import io.anuke.ucore.graphics.Hue;
|
||||
import io.anuke.ucore.util.Angles;
|
||||
import io.anuke.ucore.util.Mathf;
|
||||
|
||||
public class EffectCreator{
|
||||
static Color lightRed = Hue.mix(Color.WHITE, Color.FIREBRICK, 0.1f);
|
||||
@@ -32,6 +33,23 @@ public class EffectCreator{
|
||||
});
|
||||
});
|
||||
|
||||
Effects.create("lava", 18, e -> {
|
||||
Angles.randLenVectors(e.id, 3, 1f + e.ifract()*10f, (x, y)->{
|
||||
float size = e.sfract()*4f;
|
||||
Draw.color(Color.ORANGE, Color.GRAY, e.ifract());
|
||||
Draw.rect("circle", e.x + x, e.y + y, size, size);
|
||||
Draw.reset();
|
||||
});
|
||||
});
|
||||
|
||||
Effects.create("lavabubble", 45f, e -> {
|
||||
Draw.color(Color.ORANGE);
|
||||
float scl = 0.35f;
|
||||
Draw.thick(1f - Mathf.clamp(e.ifract() - (1f-scl)) * (1f/scl));
|
||||
Draw.circle(e.x, e.y, e.ifract()*4f);
|
||||
Draw.reset();
|
||||
});
|
||||
|
||||
Effects.create("shellexplosion", 15, e -> {
|
||||
Draw.thickness(1.3f - e.ifract());
|
||||
Draw.color(Hue.mix(Color.WHITE, Color.ORANGE, e.ifract()));
|
||||
|
||||
@@ -32,9 +32,6 @@ public class Mindustry extends ModuleCore {
|
||||
|
||||
@Override
|
||||
public void init(){
|
||||
//if(Vars.debug){
|
||||
GLProfiler.enable();
|
||||
//}
|
||||
//always initialize blocks in this order, otherwise there are ID errors
|
||||
Blocks.dirt.getClass();
|
||||
ProductionBlocks.coaldrill.getClass();
|
||||
@@ -48,6 +45,9 @@ public class Mindustry extends ModuleCore {
|
||||
|
||||
@Override
|
||||
public void postInit(){
|
||||
if(Vars.debug && Vars.debugGL){
|
||||
GLProfiler.enable();
|
||||
}
|
||||
Vars.control.reset();
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ public class Renderer extends RendererModule{
|
||||
|
||||
drawDefault();
|
||||
|
||||
if(Vars.debug && Timers.get("profile", 30)){
|
||||
if(Vars.debug && Vars.debugGL && Timers.get("profile", 60)){
|
||||
UCore.log("shaders: " + GLProfiler.shaderSwitches,
|
||||
"calls: " + GLProfiler.drawCalls,
|
||||
"bindings: " + GLProfiler.textureBindings,
|
||||
|
||||
@@ -27,6 +27,8 @@ public class Vars{
|
||||
public static final int zoomScale = Math.round(Unit.dp.inPixels(1));
|
||||
//if true, player speed will be increased, massive amounts of resources will be given on start, and other debug options will be available
|
||||
public static boolean debug = false;
|
||||
//whether to debug openGL info
|
||||
public static boolean debugGL = false;
|
||||
//number of save slots-- increasing may lead to layout issues
|
||||
//TODO named save slots, possibly with a scroll dialog
|
||||
public static final int saveSlots = 4;
|
||||
|
||||
@@ -3,7 +3,7 @@ package io.anuke.mindustry.entities.effect;
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.ShieldBlock;
|
||||
import io.anuke.mindustry.world.blocks.types.defense.ShieldBlock;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Graphics;
|
||||
import io.anuke.ucore.entities.BulletEntity;
|
||||
|
||||
@@ -4,7 +4,8 @@ import com.badlogic.gdx.graphics.Color;
|
||||
|
||||
public enum Liquid{
|
||||
water(Color.ROYAL),
|
||||
plasma(Color.CORAL);
|
||||
plasma(Color.CORAL),
|
||||
lava(Color.valueOf("ed5334"));
|
||||
|
||||
public final Color color;
|
||||
|
||||
|
||||
@@ -41,8 +41,6 @@ public class Block{
|
||||
|
||||
public void drawOver(Tile tile){}
|
||||
public void drawPixelOverlay(Tile tile){}
|
||||
@Deprecated
|
||||
public void drawOverlay(Tile tile){}
|
||||
public void drawPlace(int x, int y, boolean valid){}
|
||||
|
||||
public String name(){
|
||||
|
||||
@@ -22,7 +22,8 @@ public class Generator{
|
||||
Hue.rgb(70, 90, 150), Blocks.deepwater,
|
||||
Hue.rgb(110, 80, 30), Blocks.dirt,
|
||||
Hue.rgb(160, 120, 70), Blocks.dirtblock,
|
||||
Hue.rgb(100, 100, 100), Blocks.stoneblock
|
||||
Hue.rgb(100, 100, 100), Blocks.stoneblock,
|
||||
Color.valueOf("ed5334"), Blocks.lava
|
||||
);
|
||||
|
||||
/**Returns world size.*/
|
||||
|
||||
@@ -6,8 +6,10 @@ import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.Floor;
|
||||
import io.anuke.mindustry.world.blocks.types.ShieldedWallBlock;
|
||||
import io.anuke.mindustry.world.blocks.types.Wall;
|
||||
import io.anuke.mindustry.world.blocks.types.defense.ShieldedWallBlock;
|
||||
import io.anuke.ucore.core.Effects;
|
||||
import io.anuke.ucore.util.Mathf;
|
||||
|
||||
public class Blocks{
|
||||
public static final Block
|
||||
@@ -15,7 +17,11 @@ public class Blocks{
|
||||
air = new Block("air"){
|
||||
//no drawing here
|
||||
public void drawCache(Tile tile){}
|
||||
public void draw(Tile tile){}
|
||||
|
||||
//update floor blocks for effects, if needed
|
||||
public void draw(Tile tile){
|
||||
tile.floor().update(tile);
|
||||
}
|
||||
},
|
||||
|
||||
deepwater = new Floor("deepwater"){{
|
||||
@@ -30,6 +36,25 @@ public class Blocks{
|
||||
liquidDrop = Liquid.water;
|
||||
}},
|
||||
|
||||
lava = new Floor("lava"){
|
||||
{
|
||||
vary = false;
|
||||
solid = true;
|
||||
liquidDrop = Liquid.lava;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
if(Mathf.chance(0.001)){
|
||||
Effects.effect("lava", tile.worldx() + Mathf.range(5f), tile.worldy() + Mathf.range(5f));
|
||||
}
|
||||
|
||||
if(Mathf.chance(0.004)){
|
||||
Effects.effect("lavabubble", tile.worldx() + Mathf.range(3f), tile.worldy() + Mathf.range(3f));
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
stone = new Floor("stone"){{
|
||||
drops = new ItemStack(Item.stone, 1);
|
||||
}},
|
||||
|
||||
@@ -6,6 +6,8 @@ import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.*;
|
||||
import io.anuke.mindustry.world.blocks.types.distribution.*;
|
||||
import io.anuke.mindustry.world.blocks.types.production.*;
|
||||
import io.anuke.ucore.core.Effects;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
@@ -35,7 +37,7 @@ public class ProductionBlocks{
|
||||
}
|
||||
},
|
||||
|
||||
conduit = new Conduit("conduit"){{
|
||||
conduit = new LiquidBlock("conduit"){{
|
||||
|
||||
}},
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import io.anuke.mindustry.entities.effect.TeslaOrb;
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.*;
|
||||
import io.anuke.mindustry.world.blocks.types.defense.*;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
import io.anuke.ucore.util.Angles;
|
||||
import io.anuke.ucore.util.Mathf;
|
||||
|
||||
@@ -11,11 +11,11 @@ import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
public class Conduit extends Block{
|
||||
public class LiquidBlock extends Block{
|
||||
protected float liquidCapacity = 10f;
|
||||
protected float flowfactor = 4.9f;
|
||||
|
||||
public Conduit(String name) {
|
||||
public LiquidBlock(String name) {
|
||||
super(name);
|
||||
rotate = true;
|
||||
update = true;
|
||||
@@ -28,7 +28,7 @@ public class Conduit extends Block{
|
||||
|
||||
@Override
|
||||
public void draw(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
Draw.rect(name() + "bottom", tile.worldx(), tile.worldy(), tile.rotation * 90);
|
||||
|
||||
@@ -45,12 +45,12 @@ public class Conduit extends Block{
|
||||
|
||||
@Override
|
||||
public TileEntity getEntity(){
|
||||
return new ConduitEntity();
|
||||
return new LiquidEntity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
if(entity.liquidAmount > 0.01f && Timers.get(entity, "flow", 3)){
|
||||
tryMoveLiquid(tile, tile.getNearby()[tile.rotation]);
|
||||
@@ -59,7 +59,7 @@ public class Conduit extends Block{
|
||||
}
|
||||
|
||||
public void tryDumpLiquid(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
if(entity.liquidAmount > 0.01f){
|
||||
tryMoveLiquid(tile, tile.getNearby()[tile.dump]);
|
||||
@@ -69,13 +69,13 @@ public class Conduit extends Block{
|
||||
}
|
||||
|
||||
public void tryMoveLiquid(Tile tile, Tile next){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
Liquid liquid = entity.liquid;
|
||||
|
||||
if(next != null && next.block() instanceof Conduit && entity.liquidAmount > 0.01f){
|
||||
Conduit other = (Conduit)next.block();
|
||||
ConduitEntity otherentity = next.entity();
|
||||
if(next != null && next.block() instanceof LiquidBlock && entity.liquidAmount > 0.01f){
|
||||
LiquidBlock other = (LiquidBlock)next.block();
|
||||
LiquidEntity otherentity = next.entity();
|
||||
|
||||
float flow = Math.min(other.liquidCapacity - otherentity.liquidAmount - 0.001f, Math.min(entity.liquidAmount/flowfactor, entity.liquidAmount));
|
||||
|
||||
@@ -89,20 +89,20 @@ public class Conduit extends Block{
|
||||
}
|
||||
|
||||
public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
return entity.liquidAmount + amount < liquidCapacity && (entity.liquid == liquid || entity.liquidAmount <= 0.01f);
|
||||
}
|
||||
|
||||
public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
entity.liquid = liquid;
|
||||
entity.liquidAmount += amount;
|
||||
}
|
||||
|
||||
static class ConduitEntity extends TileEntity{
|
||||
Liquid liquid;
|
||||
float liquidAmount;
|
||||
public static class LiquidEntity extends TileEntity{
|
||||
public Liquid liquid;
|
||||
public float liquidAmount;
|
||||
|
||||
@Override
|
||||
public void write(DataOutputStream stream) throws IOException{
|
||||
@@ -27,7 +27,7 @@ public abstract class PowerBlock extends Block implements PowerAcceptor{
|
||||
|
||||
float fract = (float)entity.power / powerCapacity;
|
||||
if(fract > 0)
|
||||
fract = Mathf.clamp(fract, 0.24f, 1f);
|
||||
fract = Mathf.clamp(fract + 0.2f, 0.24f, 1f);
|
||||
|
||||
Vars.renderer.drawBar(Color.YELLOW, tile.worldx(), tile.worldy() + 13, fract);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.defense;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.math.MathUtils;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.defense;
|
||||
|
||||
import com.badlogic.gdx.math.MathUtils;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.defense;
|
||||
|
||||
import io.anuke.mindustry.entities.TileEntity;
|
||||
import io.anuke.mindustry.entities.effect.Shield;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.PowerBlock;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
public class ShieldBlock extends PowerBlock{
|
||||
@@ -1,10 +1,11 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.defense;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.entities.TileEntity;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.PowerBlock;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Graphics;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.defense;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.distribution;
|
||||
|
||||
import static io.anuke.mindustry.Vars.tilesize;
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.distribution;
|
||||
|
||||
import com.badlogic.gdx.utils.ObjectMap;
|
||||
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
public class LiquidRouter extends Conduit{
|
||||
public class LiquidRouter extends LiquidBlock{
|
||||
private ObjectMap<Tile, Byte> lastmap = new ObjectMap<>();
|
||||
|
||||
public LiquidRouter(String name) {
|
||||
@@ -23,7 +24,7 @@ public class LiquidRouter extends Conduit{
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
if(Timers.get(tile, 2) && entity.liquidAmount > 0){
|
||||
if(lastmap.get(tile, (byte)-1) != tile.rotation){
|
||||
@@ -43,7 +44,7 @@ public class LiquidRouter extends Conduit{
|
||||
|
||||
@Override
|
||||
public void draw(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
Draw.rect(name(), tile.worldx(), tile.worldy());
|
||||
|
||||
if(entity.liquid == null) return;
|
||||
@@ -0,0 +1,5 @@
|
||||
package io.anuke.mindustry.world.blocks.types.distribution;
|
||||
|
||||
public class PowerBooster{
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.distribution;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.utils.ObjectMap;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
@@ -1,10 +1,12 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.World;
|
||||
import io.anuke.mindustry.world.blocks.types.PowerAcceptor;
|
||||
import io.anuke.mindustry.world.blocks.types.PowerBlock;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
|
||||
public class Generator extends PowerBlock{
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
|
||||
|
||||
public class LiquidPowerGenerator extends LiquidBlock{
|
||||
public Liquid generateLiquid;
|
||||
public float generatePower;
|
||||
public float generateAmount = 1f;
|
||||
|
||||
public LiquidPowerGenerator(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
if(entity.liquidAmount >= generateAmount){
|
||||
entity.liquidAmount -= generateAmount;
|
||||
//TODO actually add power
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){
|
||||
return liquid == generateLiquid && super.acceptLiquid(tile, source, liquid, amount);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
import io.anuke.ucore.util.Mathf;
|
||||
|
||||
public class Pump extends Conduit{
|
||||
public class Pump extends LiquidBlock{
|
||||
protected float pumpspeed = 2f;
|
||||
|
||||
public Pump(String name) {
|
||||
@@ -40,7 +41,7 @@ public class Pump extends Conduit{
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
if(tile.floor().liquidDrop != null &&
|
||||
Timers.get(tile, "pump", 8) && entity.liquidAmount < liquidCapacity){
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
|
||||
@@ -7,11 +7,12 @@ import io.anuke.mindustry.entities.TileEntity;
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.LiquidBlock;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Effects;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
public class Purifier extends Conduit{
|
||||
public class Purifier extends LiquidBlock{
|
||||
public Item input = null;
|
||||
public int inputAmount = 5;
|
||||
public Liquid inputLiquid = null;
|
||||
@@ -31,7 +32,7 @@ public class Purifier extends Conduit{
|
||||
|
||||
@Override
|
||||
public void draw(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
Draw.rect(name(), tile.worldx(), tile.worldy());
|
||||
|
||||
if(entity.liquid == null) return;
|
||||
@@ -44,7 +45,7 @@ public class Purifier extends Conduit{
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
LiquidEntity entity = tile.entity();
|
||||
|
||||
if(Timers.get(tile, "purify", purifyTime) && entity.liquidAmount >= liquidAmount &&
|
||||
entity.hasItem(input, inputAmount)){
|
||||
Reference in New Issue
Block a user