Move some stuff around
This commit is contained in:
@@ -56,6 +56,11 @@ public class CraterConveyor extends Block implements Autotiler{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TextureRegion[] generateIcons(){
|
||||||
|
return new TextureRegion[]{Core.atlas.find(name + "-0-0")};
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setStats(){
|
public void setStats(){
|
||||||
super.setStats();
|
super.setStats();
|
||||||
@@ -64,76 +69,6 @@ public class CraterConveyor extends Block implements Autotiler{
|
|||||||
stats.add(BlockStat.boostEffect, "$blocks.itemcapacity");
|
stats.add(BlockStat.boostEffect, "$blocks.itemcapacity");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void drawRequestRegion(BuildRequest req, Eachable<BuildRequest> list){
|
|
||||||
int[] bits = getTiling(req, list);
|
|
||||||
|
|
||||||
if(bits == null) return;
|
|
||||||
|
|
||||||
TextureRegion region = regions[bits[0]];
|
|
||||||
Draw.rect(region, req.drawx(), req.drawy(), region.getWidth() * bits[1] * Draw.scl * req.animScale, region.getHeight() * bits[2] * Draw.scl * req.animScale, req.rotation * 90);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onProximityUpdate(Tile tile){
|
|
||||||
super.onProximityUpdate(tile);
|
|
||||||
|
|
||||||
CraterConveyorEntity entity = tile.ent();
|
|
||||||
int[] bits = buildBlending(tile, tile.rotation(), null, true);
|
|
||||||
entity.blendbits = bits[0];
|
|
||||||
entity.blendsclx = bits[1];
|
|
||||||
entity.blendscly = bits[2];
|
|
||||||
|
|
||||||
entity.snekbit = 0;
|
|
||||||
if(isStart(tile)) entity.snekbit = (byte)(entity.snekbit | head);
|
|
||||||
if(isEnd(tile)) entity.snekbit = (byte)(entity.snekbit | tail);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public TextureRegion[] generateIcons(){
|
|
||||||
return new TextureRegion[]{Core.atlas.find(name + "-0-0")};
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean shouldIdleSound(Tile tile){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAccessible(){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
class CraterConveyorEntity extends TileEntity{
|
|
||||||
int blendbits;
|
|
||||||
int blendsclx, blendscly;
|
|
||||||
|
|
||||||
byte snekbit;
|
|
||||||
|
|
||||||
int from = Pos.invalid;
|
|
||||||
float reload;
|
|
||||||
|
|
||||||
float lastFrameUpdated = -1;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void write(DataOutput stream) throws IOException{
|
|
||||||
super.write(stream);
|
|
||||||
|
|
||||||
stream.writeInt(from);
|
|
||||||
stream.writeFloat(reload);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void read(DataInput stream, byte revision) throws IOException{
|
|
||||||
super.read(stream, revision);
|
|
||||||
|
|
||||||
from = stream.readInt();
|
|
||||||
reload = stream.readFloat();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void draw(Tile tile){
|
public void draw(Tile tile){
|
||||||
CraterConveyorEntity entity = tile.ent();
|
CraterConveyorEntity entity = tile.ent();
|
||||||
@@ -183,6 +118,35 @@ public class CraterConveyor extends Block implements Autotiler{
|
|||||||
Draw.rect(entity.items.first().icon(Cicon.medium), Tmp.v1.x, Tmp.v1.y, size, size, 0);
|
Draw.rect(entity.items.first().icon(Cicon.medium), Tmp.v1.x, Tmp.v1.y, size, size, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawRequestRegion(BuildRequest req, Eachable<BuildRequest> list){
|
||||||
|
int[] bits = getTiling(req, list);
|
||||||
|
|
||||||
|
if(bits == null) return;
|
||||||
|
|
||||||
|
TextureRegion region = regions[bits[0]];
|
||||||
|
Draw.rect(region, req.drawx(), req.drawy(), region.getWidth() * bits[1] * Draw.scl * req.animScale, region.getHeight() * bits[2] * Draw.scl * req.animScale, req.rotation * 90);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean blends(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock) {
|
||||||
|
return otherblock.outputsItems() && blendsArmored(tile, rotation, otherx, othery, otherrot, otherblock) && otherblock instanceof CraterConveyor; // blend with nothing but crater conveyors
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onProximityUpdate(Tile tile){
|
||||||
|
super.onProximityUpdate(tile);
|
||||||
|
|
||||||
|
CraterConveyorEntity entity = tile.ent();
|
||||||
|
int[] bits = buildBlending(tile, tile.rotation(), null, true);
|
||||||
|
entity.blendbits = bits[0];
|
||||||
|
entity.blendsclx = bits[1];
|
||||||
|
entity.blendscly = bits[2];
|
||||||
|
|
||||||
|
entity.snekbit = 0;
|
||||||
|
if(isStart(tile)) entity.snekbit = (byte)(entity.snekbit | head);
|
||||||
|
if(isEnd(tile)) entity.snekbit = (byte)(entity.snekbit | tail);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(Tile tile){
|
public void update(Tile tile){
|
||||||
@@ -262,18 +226,6 @@ public class CraterConveyor extends Block implements Autotiler{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean acceptItem(Item item, Tile tile, Tile source){
|
|
||||||
CraterConveyorEntity entity = tile.ent();
|
|
||||||
|
|
||||||
if(!((entity.snekbit & head) == head) && !(source.block() instanceof CraterConveyor)) return false;
|
|
||||||
if(entity.items.total() > 0 && !entity.items.has(item)) return false;
|
|
||||||
if(entity.items.total() >= getMaximumAccepted(tile, item)) return false;
|
|
||||||
if(tile.front() == source) return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handleItem(Item item, Tile tile, Tile source){
|
public void handleItem(Item item, Tile tile, Tile source){
|
||||||
super.handleItem(item, tile, source);
|
super.handleItem(item, tile, source);
|
||||||
@@ -291,26 +243,44 @@ public class CraterConveyor extends Block implements Autotiler{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaximumAccepted(Tile tile, Item item){
|
public int getMaximumAccepted(Tile tile, Item item){
|
||||||
return Mathf.round(super.getMaximumAccepted(tile, item) * tile.entity.timeScale);
|
return Mathf.round(super.getMaximumAccepted(tile, item) * tile.entity.timeScale); // increased item capacity while boosted
|
||||||
}
|
|
||||||
|
|
||||||
public boolean shouldLaunch(Tile tile){
|
|
||||||
CraterConveyorEntity entity = tile.ent();
|
|
||||||
|
|
||||||
// its not a start tile so it should be moving
|
|
||||||
if(!((entity.snekbit & head) == head)) return true;
|
|
||||||
|
|
||||||
// its considered full
|
|
||||||
if(entity.items.total() >= getMaximumAccepted(tile, entity.items.first())) return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean blends(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock) {
|
public boolean shouldIdleSound(Tile tile){
|
||||||
return otherblock.outputsItems() && blendsArmored(tile, rotation, otherx, othery, otherrot, otherblock) && otherblock instanceof CraterConveyor;
|
return false; // has no moving parts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class CraterConveyorEntity extends TileEntity{
|
||||||
|
int blendbits;
|
||||||
|
int blendsclx, blendscly;
|
||||||
|
|
||||||
|
byte snekbit;
|
||||||
|
|
||||||
|
int from = Pos.invalid;
|
||||||
|
float reload;
|
||||||
|
|
||||||
|
float lastFrameUpdated = -1;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(DataOutput stream) throws IOException{
|
||||||
|
super.write(stream);
|
||||||
|
|
||||||
|
stream.writeInt(from);
|
||||||
|
stream.writeFloat(reload);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(DataInput stream, byte revision) throws IOException{
|
||||||
|
super.read(stream, revision);
|
||||||
|
|
||||||
|
from = stream.readInt();
|
||||||
|
reload = stream.readFloat();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ▲ | ▼ fixme: refactor
|
||||||
|
|
||||||
// has no crater conveyors facing into it
|
// has no crater conveyors facing into it
|
||||||
private boolean isStart(Tile tile){
|
private boolean isStart(Tile tile){
|
||||||
return inputs(tile).isEmpty();
|
return inputs(tile).isEmpty();
|
||||||
@@ -346,4 +316,29 @@ public class CraterConveyor extends Block implements Autotiler{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean shouldLaunch(Tile tile){
|
||||||
|
CraterConveyorEntity entity = tile.ent();
|
||||||
|
|
||||||
|
// its not a start tile so it should be moving
|
||||||
|
if(!((entity.snekbit & head) == head)) return true;
|
||||||
|
|
||||||
|
// its considered full
|
||||||
|
if(entity.items.total() >= getMaximumAccepted(tile, entity.items.first())) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean acceptItem(Item item, Tile tile, Tile source){
|
||||||
|
CraterConveyorEntity entity = tile.ent();
|
||||||
|
|
||||||
|
if(!((entity.snekbit & head) == head) && !(source.block() instanceof CraterConveyor)) return false;
|
||||||
|
if(entity.items.total() > 0 && !entity.items.has(item)) return false;
|
||||||
|
if(entity.items.total() >= getMaximumAccepted(tile, item)) return false;
|
||||||
|
if(tile.front() == source) return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user