mirror of
https://github.com/Anuken/Mindustry.git
synced 2025-07-30 22:49:06 +07:00
Added laser router block
This commit is contained in:
BIN
core/assets-raw/sprites/blocks/powerlaserrouter.png
Normal file
BIN
core/assets-raw/sprites/blocks/powerlaserrouter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 246 B |
@ -445,13 +445,20 @@ blocks/powerlaser
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/pump
|
||||
blocks/powerlaserrouter
|
||||
rotate: false
|
||||
xy: 499, 387
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/pump
|
||||
rotate: false
|
||||
xy: 389, 224
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/repairturret
|
||||
rotate: false
|
||||
xy: 177, 2
|
||||
@ -461,35 +468,35 @@ blocks/repairturret
|
||||
index: -1
|
||||
blocks/rock
|
||||
rotate: false
|
||||
xy: 389, 214
|
||||
xy: 389, 204
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/rock2
|
||||
rotate: false
|
||||
xy: 389, 204
|
||||
xy: 332, 197
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/rock2shadow
|
||||
rotate: false
|
||||
xy: 332, 197
|
||||
xy: 332, 187
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/rockshadow
|
||||
rotate: false
|
||||
xy: 332, 187
|
||||
xy: 342, 197
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/router
|
||||
rotate: false
|
||||
xy: 342, 197
|
||||
xy: 332, 177
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
@ -503,7 +510,7 @@ blocks/shadow
|
||||
index: -1
|
||||
blocks/shieldgenerator
|
||||
rotate: false
|
||||
xy: 332, 177
|
||||
xy: 342, 187
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
@ -517,21 +524,21 @@ blocks/shotgunturret
|
||||
index: -1
|
||||
blocks/shrub
|
||||
rotate: false
|
||||
xy: 342, 187
|
||||
xy: 342, 177
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/shrubshadow
|
||||
rotate: false
|
||||
xy: 342, 177
|
||||
xy: 352, 192
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/smelter
|
||||
rotate: false
|
||||
xy: 352, 192
|
||||
xy: 352, 182
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
@ -545,21 +552,21 @@ blocks/sniperturret
|
||||
index: -1
|
||||
blocks/steelconveyor
|
||||
rotate: false
|
||||
xy: 352, 182
|
||||
xy: 362, 192
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/steelconveyormove
|
||||
rotate: false
|
||||
xy: 362, 192
|
||||
xy: 362, 182
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/steelwall
|
||||
rotate: false
|
||||
xy: 362, 182
|
||||
xy: 372, 192
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
@ -573,49 +580,49 @@ blocks/stone
|
||||
index: -1
|
||||
blocks/stone1
|
||||
rotate: false
|
||||
xy: 372, 192
|
||||
xy: 372, 182
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/stone2
|
||||
rotate: false
|
||||
xy: 372, 182
|
||||
xy: 382, 192
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/stone3
|
||||
rotate: false
|
||||
xy: 382, 192
|
||||
xy: 382, 182
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/stoneblock
|
||||
rotate: false
|
||||
xy: 382, 182
|
||||
xy: 352, 172
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/stoneblock2
|
||||
rotate: false
|
||||
xy: 352, 172
|
||||
xy: 362, 172
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/stoneblock3
|
||||
rotate: false
|
||||
xy: 362, 172
|
||||
xy: 372, 172
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/stonedrill
|
||||
rotate: false
|
||||
xy: 372, 172
|
||||
xy: 382, 172
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
@ -629,63 +636,63 @@ blocks/stoneedge
|
||||
index: -1
|
||||
blocks/stonewall
|
||||
rotate: false
|
||||
xy: 382, 172
|
||||
xy: 392, 194
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/thermalgenerator
|
||||
rotate: false
|
||||
xy: 392, 194
|
||||
xy: 392, 184
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/titanium1
|
||||
rotate: false
|
||||
xy: 392, 184
|
||||
xy: 392, 174
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/titanium2
|
||||
rotate: false
|
||||
xy: 392, 174
|
||||
xy: 332, 167
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/titanium3
|
||||
rotate: false
|
||||
xy: 332, 167
|
||||
xy: 342, 167
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/titaniumdrill
|
||||
rotate: false
|
||||
xy: 342, 167
|
||||
xy: 352, 162
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/titaniumpurifier
|
||||
rotate: false
|
||||
xy: 352, 162
|
||||
xy: 362, 162
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/titaniumshieldwall
|
||||
rotate: false
|
||||
xy: 362, 162
|
||||
xy: 372, 162
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/titaniumwall
|
||||
rotate: false
|
||||
xy: 372, 162
|
||||
xy: 382, 162
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
@ -699,35 +706,35 @@ blocks/turret
|
||||
index: -1
|
||||
blocks/uranium1
|
||||
rotate: false
|
||||
xy: 392, 164
|
||||
xy: 389, 282
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/uranium2
|
||||
rotate: false
|
||||
xy: 389, 282
|
||||
xy: 389, 272
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/uranium3
|
||||
rotate: false
|
||||
xy: 389, 272
|
||||
xy: 389, 262
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/uraniumdrill
|
||||
rotate: false
|
||||
xy: 389, 262
|
||||
xy: 389, 252
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
blocks/water
|
||||
rotate: false
|
||||
xy: 389, 252
|
||||
xy: 391, 242
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
@ -1381,14 +1388,14 @@ weapons/multigun
|
||||
index: -1
|
||||
weapons/railgun
|
||||
rotate: false
|
||||
xy: 389, 224
|
||||
xy: 389, 214
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
index: -1
|
||||
weapons/triblaster
|
||||
rotate: false
|
||||
xy: 382, 162
|
||||
xy: 392, 164
|
||||
size: 8, 8
|
||||
orig: 8, 8
|
||||
offset: 0, 0
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 41 KiB |
@ -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