Added laser router block
This commit is contained in:
@@ -33,24 +33,27 @@ public class Tutorial{
|
||||
|
||||
public void buildUI(table table){
|
||||
|
||||
//TODO maybe align it to the bottom?
|
||||
table.atop();
|
||||
|
||||
new table("pane"){{
|
||||
atop();
|
||||
get().pad(Unit.dp.inPixels(14));
|
||||
get().pad(Unit.dp.inPixels(12));
|
||||
|
||||
info = new label(()->stage.text).pad(10f).padBottom(5f).width(340f).units(Unit.dp).colspan(2).get();
|
||||
info.setWrap(true);
|
||||
|
||||
row();
|
||||
|
||||
prev = new button("< Prev", ()->{
|
||||
if(!prev.isDisabled())
|
||||
move(false);
|
||||
}).get();
|
||||
|
||||
info = new label(()->stage.text).pad(10f).width(340f).units(Unit.dp).get();
|
||||
info.setWrap(true);
|
||||
}).left().get();
|
||||
|
||||
next = new button("Next >", ()->{
|
||||
if(!next.isDisabled())
|
||||
move(true);
|
||||
}).get();
|
||||
}).right().get();
|
||||
|
||||
|
||||
}}.end();
|
||||
|
||||
@@ -345,6 +345,12 @@ public class UI extends SceneModule{
|
||||
|
||||
}}.end();
|
||||
|
||||
new table(){{
|
||||
control.tutorial.buildUI(this);
|
||||
|
||||
visible(()->control.tutorial.active());
|
||||
}}.end();
|
||||
|
||||
//paused table
|
||||
new table(){{
|
||||
visible(()->GameState.is(State.paused));
|
||||
@@ -377,12 +383,6 @@ public class UI extends SceneModule{
|
||||
|
||||
get().setVisible(play);
|
||||
}}.end();
|
||||
|
||||
new table(){{
|
||||
control.tutorial.buildUI(this);
|
||||
|
||||
visible(()->control.tutorial.active());
|
||||
}}.end();
|
||||
|
||||
//menu table
|
||||
new table(){{
|
||||
|
||||
@@ -59,6 +59,7 @@ public enum Recipe{
|
||||
nuclearreactor(power, ProductionBlocks.nuclearReactor, stack(Item.titanium, 10), stack(Item.dirium, 10)),
|
||||
powerbooster(power, DistributionBlocks.powerbooster, stack(Item.titanium, 10), stack(Item.dirium, 10)),
|
||||
powerlaser(power, DistributionBlocks.powerlaser, stack(Item.titanium, 10), stack(Item.dirium, 10)),
|
||||
powerlaserrouter(power, DistributionBlocks.powerlaserrouter, stack(Item.titanium, 10), stack(Item.dirium, 10)),
|
||||
|
||||
pump(production, ProductionBlocks.pump, stack(Item.steel, 10));
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ public class Generator{
|
||||
floor = Blocks.titanium;
|
||||
}
|
||||
|
||||
if(Noise.nnoise(x + 99999, y + 99999, 6, 1) > 0.256){
|
||||
if(Noise.nnoise(x + 99999, y + 99999, 7, 1) > 0.257){
|
||||
floor = Blocks.uranium;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -308,6 +308,7 @@ public class World{
|
||||
|
||||
if(!tile.block().isMultiblock() && !tile.isLinked()){
|
||||
tile.setBlock(Blocks.air);
|
||||
Effects.effect("break", tile.worldx(), tile.worldy());
|
||||
}else{
|
||||
Tile target = tile.isLinked() ? tile.getLinked() : tile;
|
||||
Array<Tile> removals = target.getLinkedTiles();
|
||||
|
||||
@@ -51,5 +51,10 @@ public class DistributionBlocks{
|
||||
{
|
||||
formalName = "power laser";
|
||||
}
|
||||
},
|
||||
powerlaserrouter = new PowerLaserRouter("powerlaserrouter"){
|
||||
{
|
||||
formalName = "laser router";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -26,12 +26,32 @@ public class PowerLaser extends PowerBlock{
|
||||
|
||||
@Override
|
||||
public void drawOver(Tile tile){
|
||||
Tile target = target(tile);
|
||||
|
||||
PowerEntity entity = tile.entity();
|
||||
|
||||
if(target != null && entity.power > powerAmount){
|
||||
Angles.translation(tile.rotation * 90, 6f);
|
||||
if(entity.power > powerAmount){
|
||||
drawLaserTo(tile, tile.rotation);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
PowerEntity entity = tile.entity();
|
||||
Tile target = target(tile, tile.rotation);
|
||||
|
||||
if(target == null) return;
|
||||
|
||||
PowerAcceptor p = (PowerAcceptor)target.block();
|
||||
if(p.acceptsPower(target) && entity.power >= powerAmount){
|
||||
entity.power -= (powerAmount - p.addPower(target, powerAmount));
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawLaserTo(Tile tile, int rotation){
|
||||
|
||||
Tile target = target(tile, rotation);
|
||||
|
||||
if(target != null){
|
||||
Angles.translation(rotation * 90, 6f);
|
||||
|
||||
Draw.color(Color.GRAY, Color.WHITE, 0.902f + Mathf.sin(Timers.time(), 1.7f, 0.08f));
|
||||
Draw.alpha(1f);
|
||||
@@ -47,21 +67,11 @@ public class PowerLaser extends PowerBlock{
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
PowerEntity entity = tile.entity();
|
||||
Tile target = target(tile);
|
||||
|
||||
if(target == null) return;
|
||||
|
||||
PowerAcceptor p = (PowerAcceptor)target.block();
|
||||
if(p.acceptsPower(target) && entity.power >= powerAmount){
|
||||
entity.power -= (powerAmount - p.addPower(target, powerAmount));
|
||||
}
|
||||
}
|
||||
|
||||
private Tile target(Tile tile){
|
||||
GridPoint2 point = Geometry.getD4Points()[tile.rotation];
|
||||
protected Tile target(Tile tile, int rotation){
|
||||
if(rotation < 0)
|
||||
rotation += 4;
|
||||
rotation %= 4;
|
||||
GridPoint2 point = Geometry.getD4Points()[rotation];
|
||||
|
||||
int i = 0;
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package io.anuke.mindustry.world.blocks.types.distribution;
|
||||
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.PowerAcceptor;
|
||||
|
||||
public class PowerLaserRouter extends PowerLaser{
|
||||
|
||||
public PowerLaserRouter(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawOver(Tile tile){
|
||||
|
||||
PowerEntity entity = tile.entity();
|
||||
|
||||
if(entity.power > powerAmount){
|
||||
for(int i = -1; i <= 1; i ++){
|
||||
drawLaserTo(tile, tile.rotation + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
PowerEntity entity = tile.entity();
|
||||
for(int i = -1; i <= 1; i ++){
|
||||
Tile target = target(tile, tile.rotation + i);
|
||||
|
||||
if(target == null) return;
|
||||
|
||||
PowerAcceptor p = (PowerAcceptor)target.block();
|
||||
if(p.acceptsPower(target) && entity.power >= powerAmount/3f){
|
||||
entity.power -= (powerAmount/3f - p.addPower(target, powerAmount/3f));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user