Moved block types into subpackages

This commit is contained in:
Anuken
2017-10-22 21:58:05 -04:00
parent 70693ffdd3
commit 41720e2e3f
39 changed files with 386 additions and 257 deletions

View File

@@ -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()));

View File

@@ -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();
}

View File

@@ -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,

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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(){

View File

@@ -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.*/

View File

@@ -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);
}},

View File

@@ -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"){{
}},

View File

@@ -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;

View File

@@ -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{

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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{

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -0,0 +1,5 @@
package io.anuke.mindustry.world.blocks.types.distribution;
public class PowerBooster{
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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{

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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){

View File

@@ -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)){