Added laser router block

This commit is contained in:
Anuken
2017-10-31 11:49:16 -04:00
parent 2e8f0a9d1a
commit 431e6c5571
11 changed files with 134 additions and 68 deletions

View File

@@ -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();

View File

@@ -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(){{

View File

@@ -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));

View File

@@ -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;
}
}

View File

@@ -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();

View File

@@ -51,5 +51,10 @@ public class DistributionBlocks{
{
formalName = "power laser";
}
},
powerlaserrouter = new PowerLaserRouter("powerlaserrouter"){
{
formalName = "laser router";
}
};
}

View File

@@ -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;

View File

@@ -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));
}
}
}
}