Added power booster block

This commit is contained in:
Anuken
2017-10-26 22:32:58 -04:00
parent de397a237b
commit 7b413088ab
13 changed files with 89 additions and 50 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 B

After

Width:  |  Height:  |  Size: 254 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

View File

@@ -417,27 +417,34 @@ blocks/plasmaturret
orig: 10, 10 orig: 10, 10
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/poweredconveyor blocks/powerbooster
rotate: false rotate: false
xy: 489, 397 xy: 489, 397
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/poweredconveyormove blocks/poweredconveyor
rotate: false rotate: false
xy: 499, 397 xy: 499, 397
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/pump blocks/poweredconveyormove
rotate: false rotate: false
xy: 479, 387 xy: 479, 387
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/pump
rotate: false
xy: 489, 387
size: 8, 8
orig: 8, 8
offset: 0, 0
index: -1
blocks/repairturret blocks/repairturret
rotate: false rotate: false
xy: 177, 2 xy: 177, 2
@@ -447,35 +454,35 @@ blocks/repairturret
index: -1 index: -1
blocks/rock blocks/rock
rotate: false rotate: false
xy: 499, 387 xy: 389, 224
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rock2 blocks/rock2
rotate: false rotate: false
xy: 389, 224 xy: 389, 214
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rock2shadow blocks/rock2shadow
rotate: false rotate: false
xy: 389, 214 xy: 389, 204
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/rockshadow blocks/rockshadow
rotate: false rotate: false
xy: 389, 204 xy: 332, 197
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/router blocks/router
rotate: false rotate: false
xy: 332, 197 xy: 332, 187
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -489,7 +496,7 @@ blocks/shadow
index: -1 index: -1
blocks/shieldgenerator blocks/shieldgenerator
rotate: false rotate: false
xy: 332, 187 xy: 342, 197
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -503,21 +510,21 @@ blocks/shotgunturret
index: -1 index: -1
blocks/shrub blocks/shrub
rotate: false rotate: false
xy: 342, 197 xy: 332, 177
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/shrubshadow blocks/shrubshadow
rotate: false rotate: false
xy: 332, 177 xy: 342, 187
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/smelter blocks/smelter
rotate: false rotate: false
xy: 342, 187 xy: 342, 177
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -531,21 +538,21 @@ blocks/sniperturret
index: -1 index: -1
blocks/steelconveyor blocks/steelconveyor
rotate: false rotate: false
xy: 342, 177 xy: 352, 192
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/steelconveyormove blocks/steelconveyormove
rotate: false rotate: false
xy: 352, 192 xy: 352, 182
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/steelwall blocks/steelwall
rotate: false rotate: false
xy: 352, 182 xy: 362, 192
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -559,49 +566,49 @@ blocks/stone
index: -1 index: -1
blocks/stone1 blocks/stone1
rotate: false rotate: false
xy: 362, 192 xy: 362, 182
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stone2 blocks/stone2
rotate: false rotate: false
xy: 362, 182 xy: 372, 192
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stone3 blocks/stone3
rotate: false rotate: false
xy: 372, 192 xy: 372, 182
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stoneblock blocks/stoneblock
rotate: false rotate: false
xy: 372, 182 xy: 382, 192
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stoneblock2 blocks/stoneblock2
rotate: false rotate: false
xy: 382, 192 xy: 382, 182
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stoneblock3 blocks/stoneblock3
rotate: false rotate: false
xy: 382, 182 xy: 352, 172
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/stonedrill blocks/stonedrill
rotate: false rotate: false
xy: 352, 172 xy: 362, 172
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -615,63 +622,63 @@ blocks/stoneedge
index: -1 index: -1
blocks/stonewall blocks/stonewall
rotate: false rotate: false
xy: 362, 172 xy: 372, 172
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/thermalgenerator blocks/thermalgenerator
rotate: false rotate: false
xy: 372, 172 xy: 382, 172
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titanium1 blocks/titanium1
rotate: false rotate: false
xy: 382, 172 xy: 392, 194
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titanium2 blocks/titanium2
rotate: false rotate: false
xy: 392, 194 xy: 392, 184
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titanium3 blocks/titanium3
rotate: false rotate: false
xy: 392, 184 xy: 392, 174
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumdrill blocks/titaniumdrill
rotate: false rotate: false
xy: 392, 174 xy: 332, 167
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumpurifier blocks/titaniumpurifier
rotate: false rotate: false
xy: 332, 167 xy: 342, 167
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumshieldwall blocks/titaniumshieldwall
rotate: false rotate: false
xy: 342, 167 xy: 352, 162
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/titaniumwall blocks/titaniumwall
rotate: false rotate: false
xy: 352, 162 xy: 362, 162
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -685,35 +692,35 @@ blocks/turret
index: -1 index: -1
blocks/uranium1 blocks/uranium1
rotate: false rotate: false
xy: 372, 162 xy: 382, 162
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/uranium2 blocks/uranium2
rotate: false rotate: false
xy: 382, 162 xy: 392, 164
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/uranium3 blocks/uranium3
rotate: false rotate: false
xy: 392, 164 xy: 389, 282
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/uraniumdrill blocks/uraniumdrill
rotate: false rotate: false
xy: 389, 282 xy: 389, 272
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
blocks/water blocks/water
rotate: false rotate: false
xy: 389, 272 xy: 389, 262
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
@@ -1367,14 +1374,14 @@ weapons/multigun
index: -1 index: -1
weapons/railgun weapons/railgun
rotate: false rotate: false
xy: 489, 387 xy: 499, 387
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0
index: -1 index: -1
weapons/triblaster weapons/triblaster
rotate: false rotate: false
xy: 362, 162 xy: 372, 162
size: 8, 8 size: 8, 8
orig: 8, 8 orig: 8, 8
offset: 0, 0 offset: 0, 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -305,7 +305,8 @@ public class Renderer extends RendererModule{
x = tilex*tilesize; x = tilex*tilesize;
y = tiley*tilesize; y = tiley*tilesize;
boolean valid = World.validPlace(tilex, tiley, player.recipe.result); boolean valid = World.validPlace(tilex, tiley, player.recipe.result) && (android ||
Input.cursorNear());
Vector2 offset = player.recipe.result.getPlaceOffset(); Vector2 offset = player.recipe.result.getPlaceOffset();

View File

@@ -17,6 +17,8 @@ public enum Recipe{
healturret(defense, DefenseBlocks.repairturret, stack(Item.iron, 30)), healturret(defense, DefenseBlocks.repairturret, stack(Item.iron, 30)),
megahealturret(defense, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)), megahealturret(defense, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)),
titaniumshieldwall(defense, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 2)), titaniumshieldwall(defense, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 2)),
shieldgenerator(defense, DefenseBlocks.shieldgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)),
conveyor(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)), conveyor(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)),
steelconveyor(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)), steelconveyor(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)),
@@ -55,7 +57,7 @@ public enum Recipe{
thermalgenerator(power, ProductionBlocks.thermalgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)), thermalgenerator(power, ProductionBlocks.thermalgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)),
combustiongenerator(power, ProductionBlocks.combustiongenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)), combustiongenerator(power, ProductionBlocks.combustiongenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)),
nuclearreactor(power, ProductionBlocks.nuclearReactor, stack(Item.titanium, 10), stack(Item.dirium, 10)), nuclearreactor(power, ProductionBlocks.nuclearReactor, stack(Item.titanium, 10), stack(Item.dirium, 10)),
shieldgenerator(power, DefenseBlocks.shieldgenerator, stack(Item.titanium, 10), stack(Item.dirium, 10)), powerbooster(power, DistributionBlocks.powerbooster, stack(Item.titanium, 10), stack(Item.dirium, 10)),
pump(production, ProductionBlocks.pump, stack(Item.steel, 10)); pump(production, ProductionBlocks.pump, stack(Item.steel, 10));

View File

@@ -41,5 +41,10 @@ public class DistributionBlocks{
}, },
liquidjunction = new LiquidJunction("liquidjunction"){ liquidjunction = new LiquidJunction("liquidjunction"){
},
powerbooster = new PowerBooster("powerbooster"){
{
formalName = "power booster";
}
}; };
} }

View File

@@ -65,8 +65,19 @@ public class BlockPart extends Block implements PowerAcceptor, LiquidAcceptor{
} }
} }
@Override
public boolean acceptsPower(Tile tile){
Block block = linked(tile);
if(block instanceof PowerAcceptor){
return ((PowerAcceptor)block).acceptsPower(tile.getLinked());
}else{
return false;
}
}
private Block linked(Tile tile){ private Block linked(Tile tile){
return tile.getLinked().block(); return tile.getLinked().block();
} }
} }

View File

@@ -6,4 +6,5 @@ public interface PowerAcceptor{
/**Attempts to add some power to this block; returns the amount of power <i>not</i> accepted. /**Attempts to add some power to this block; returns the amount of power <i>not</i> accepted.
* To add no power, you would return amount.*/ * To add no power, you would return amount.*/
public float addPower(Tile tile, float amount); public float addPower(Tile tile, float amount);
public boolean acceptsPower(Tile tile);
} }

View File

@@ -15,6 +15,7 @@ import io.anuke.ucore.util.Mathf;
public abstract class PowerBlock extends Block implements PowerAcceptor{ public abstract class PowerBlock extends Block implements PowerAcceptor{
public float powerCapacity = 10f; public float powerCapacity = 10f;
public float voltage = 0.001f;
public PowerBlock(String name) { public PowerBlock(String name) {
super(name); super(name);
@@ -47,8 +48,19 @@ public abstract class PowerBlock extends Block implements PowerAcceptor{
return false; return false;
} }
@Override
public boolean acceptsPower(Tile tile){
PowerEntity entity = tile.entity();
return entity.power + 0.001f <= powerCapacity;
}
//TODO voltage requirement so blocks need specific voltage
@Override @Override
public float addPower(Tile tile, float amount){ public float addPower(Tile tile, float amount){
if(amount < voltage){
return amount;
}
PowerEntity entity = tile.entity(); PowerEntity entity = tile.entity();
float canAccept = Math.min(powerCapacity - entity.power, amount); float canAccept = Math.min(powerCapacity - entity.power, amount);

View File

@@ -14,6 +14,7 @@ public class ShieldBlock extends PowerBlock{
public ShieldBlock(String name) { public ShieldBlock(String name) {
super(name); super(name);
voltage = powerDrain;
} }
@Override @Override
@@ -27,7 +28,7 @@ public class ShieldBlock extends PowerBlock{
} }
if(entity.power > powerDrain * Timers.delta()){ if(entity.power > powerDrain * Timers.delta()){
if(!entity.shield.active){ if(!entity.shield.active && entity.power > powerDrain * Timers.delta() * 10f){
entity.shield.add(); entity.shield.add();
} }

View File

@@ -16,11 +16,9 @@ public class PowerBooster extends Generator{
} }
@Override @Override
public float addPower(Tile tile, float amount){ public boolean acceptsPower(Tile tile){
PowerEntity entity = tile.entity(); PowerEntity entity = tile.entity();
float canAccept = Math.min(powerCapacity - entity.power, amount); return entity.power + 0.001f <= powerCapacity;
entity.power += canAccept;
return canAccept;
} }
} }

View File

@@ -51,7 +51,8 @@ public class Generator extends PowerBlock{
if(Vector2.dst(x, y, 0, 0) < powerRange){ if(Vector2.dst(x, y, 0, 0) < powerRange){
Tile dest = World.tile(tile.x + x, tile.y + y); Tile dest = World.tile(tile.x + x, tile.y + y);
if(dest != null && dest.block() instanceof PowerAcceptor){ if(dest != null && dest.block() instanceof PowerAcceptor &&
((PowerAcceptor)dest.block()).acceptsPower(dest)){
if(i == 1){ if(i == 1){
PowerAcceptor block = (PowerAcceptor) dest.block(); PowerAcceptor block = (PowerAcceptor) dest.block();
@@ -67,15 +68,15 @@ public class Generator extends PowerBlock{
} }
} }
//TODO better distribution scheme
if(i == 0 && acceptors > 0){ if(i == 0 && acceptors > 0){
flow = Mathf.clamp(powerSpeed / acceptors, 0f, p.power / acceptors); flow = Mathf.clamp(p.power / acceptors, 0f, powerSpeed / acceptors);
} }
} }
} }
//don't accept any power
@Override @Override
public float addPower(Tile tile, float amount){ public boolean acceptsPower(Tile tile){
return amount; return false;
} }
} }