Basic schematic based generation

This commit is contained in:
Anuken
2020-06-05 10:45:57 -04:00
parent 17b1eaf1b6
commit d9e05907af
16 changed files with 272 additions and 71 deletions

View File

@@ -405,6 +405,23 @@ public class Block extends UnlockableContent{
return (hasItems && itemCapacity > 0);
}
/** Iterate through ever grid position taken up by this block. */
public void iterateTaken(int x, int y, Intc2 placer){
if(isMultiblock()){
int offsetx = -(size - 1) / 2;
int offsety = -(size - 1) / 2;
for(int dx = 0; dx < size; dx++){
for(int dy = 0; dy < size; dy++){
placer.get(dx + offsetx + x, dy + offsety + y);
}
}
}else{
placer.get(x, y);
}
}
/** Never use outside of the editor! */
public TextureRegion editorIcon(){
if(editorIcon == null) editorIcon = Core.atlas.find(name + "-icon-editor");

View File

@@ -23,6 +23,7 @@ public class OverdriveProjector extends Block{
public float speedBoostPhase = 0.75f;
public float useTime = 400f;
public float phaseRangeBoost = 20f;
public boolean hasBoost = true;
public Color baseColor = Color.valueOf("feb380");
public Color phaseColor = Color.valueOf("ffd59e");
@@ -51,9 +52,12 @@ public class OverdriveProjector extends Block{
stats.add(BlockStat.speedIncrease, (int)(100f * speedBoost), StatUnit.percent);
stats.add(BlockStat.range, range / tilesize, StatUnit.blocks);
stats.add(BlockStat.productionTime, useTime / 60f, StatUnit.seconds);
stats.add(BlockStat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent);
if(hasBoost){
stats.add(BlockStat.boostEffect, phaseRangeBoost / tilesize, StatUnit.blocks);
stats.add(BlockStat.boostEffect, (int)((speedBoost + speedBoostPhase) * 100f), StatUnit.percent);
}
}
public class OverdriveEntity extends TileEntity{
@@ -71,7 +75,9 @@ public class OverdriveProjector extends Block{
heat = Mathf.lerpDelta(heat, consValid() ? 1f : 0f, 0.08f);
charge += heat * Time.delta();
phaseHeat = Mathf.lerpDelta(phaseHeat, Mathf.num(cons().optionalValid()), 0.1f);
if(hasBoost){
phaseHeat = Mathf.lerpDelta(phaseHeat, Mathf.num(cons().optionalValid()), 0.1f);
}
if(timer(timerUse, useTime) && efficiency() > 0){
consume();