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

View File

@@ -17,6 +17,8 @@ public enum Recipe{
healturret(defense, DefenseBlocks.repairturret, stack(Item.iron, 30)),
megahealturret(defense, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)),
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)),
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)),
combustiongenerator(power, ProductionBlocks.combustiongenerator, 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));

View File

@@ -41,5 +41,10 @@ public class DistributionBlocks{
},
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){
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.
* To add no power, you would return 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 float powerCapacity = 10f;
public float voltage = 0.001f;
public PowerBlock(String name) {
super(name);
@@ -47,8 +48,19 @@ public abstract class PowerBlock extends Block implements PowerAcceptor{
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
public float addPower(Tile tile, float amount){
if(amount < voltage){
return amount;
}
PowerEntity entity = tile.entity();
float canAccept = Math.min(powerCapacity - entity.power, amount);

View File

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

View File

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

View File

@@ -51,7 +51,8 @@ public class Generator extends PowerBlock{
if(Vector2.dst(x, y, 0, 0) < powerRange){
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){
PowerAcceptor block = (PowerAcceptor) dest.block();
@@ -67,15 +68,15 @@ public class Generator extends PowerBlock{
}
}
//TODO better distribution scheme
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
public float addPower(Tile tile, float amount){
return amount;
public boolean acceptsPower(Tile tile){
return false;
}
}