diff --git a/core/assets-raw/sprites/ui/discord-banner.png b/core/assets-raw/sprites/ui/discord-banner.png index d73d665602..6cb422bc25 100644 Binary files a/core/assets-raw/sprites/ui/discord-banner.png and b/core/assets-raw/sprites/ui/discord-banner.png differ diff --git a/core/assets/sprites/sprites4.png b/core/assets/sprites/sprites4.png index 84ad928d4c..8887453e93 100644 Binary files a/core/assets/sprites/sprites4.png and b/core/assets/sprites/sprites4.png differ diff --git a/core/assets/sprites/uiskin.json b/core/assets/sprites/uiskin.json index 30e049a889..6ae168744c 100644 --- a/core/assets/sprites/uiskin.json +++ b/core/assets/sprites/uiskin.json @@ -132,6 +132,11 @@ fontColor: white, up: info-banner }, + discord: { + font: default, + fontColor: white, + up: info-banner + }, clear-partial: { down: whiteui, up: pane, diff --git a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java index 1b3908937a..317e8e188e 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/MenuFragment.java @@ -66,6 +66,7 @@ public class MenuFragment extends Fragment{ //info icon if(mobile){ parent.fill(c -> c.bottom().left().addButton("", "info", ui.about::show).size(84, 45)); + parent.fill(c -> c.bottom().right().addButton("", "discord", ui.discord::show).size(84, 45)); } String versionText = "[#ffffffba]" + ((Version.build == -1) ? "[#fc8140aa]custom build" : Version.modifier + " build " + Version.build); diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 5e5e80154c..bbf58ef453 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -25,6 +25,7 @@ import io.anuke.mindustry.game.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.input.InputHandler.*; +import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.*; import io.anuke.mindustry.ui.*; import io.anuke.mindustry.world.blocks.*; @@ -282,6 +283,15 @@ public class Block extends BlockStorage{ /** Called after the block is placed by this client. */ @CallSuper public void playerPlaced(Tile tile){ + if(outputsPower && !consumesPower){ + PowerNode.lastPlaced = tile.pos(); + } + } + + /** Called after the block is placed by anyone. */ + @CallSuper + public void placed(Tile tile){ + if(Net.client()) return; if((consumesPower && !outputsPower) || (!consumesPower && outputsPower)){ int range = 10; @@ -289,7 +299,7 @@ public class Block extends BlockStorage{ Geometry.circle(tile.x, tile.y, range, (x, y) -> { Tile other = world.ltile(x, y); if(other != null && other.block instanceof PowerNode && ((PowerNode)other.block).linkValid(other, tile) && !other.entity.proximity().contains(tile) && - !(outputsPower && tile.entity.proximity().contains(p -> p.entity != null && p.entity.power != null && p.entity.power.graph == other.entity.power.graph))){ + !(outputsPower && tile.entity.proximity().contains(p -> p.entity != null && p.entity.power != null && p.entity.power.graph == other.entity.power.graph))){ tempTiles.add(other); } }); @@ -298,19 +308,11 @@ public class Block extends BlockStorage{ Call.linkPowerNodes(null, tempTiles.first(), tile); } } - - if(outputsPower && !consumesPower){ - PowerNode.lastPlaced = tile.pos(); - } } public void removed(Tile tile){ } - /** Called after the block is placed by anyone. */ - public void placed(Tile tile){ - } - /** Called every frame a unit is on this tile. */ public void unitOn(Tile tile, Unit unit){ } diff --git a/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java b/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java index 77b4e8716f..86220b6acc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/PowerNode.java @@ -11,6 +11,7 @@ import io.anuke.arc.util.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; +import io.anuke.mindustry.net.Net; import io.anuke.mindustry.ui.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; @@ -106,6 +107,14 @@ public class PowerNode extends PowerBlock{ Call.linkPowerNodes(null, tile, before); } + lastPlaced = tile.pos(); + super.playerPlaced(tile); + } + + @Override + public void placed(Tile tile){ + if(Net.client()) return; + Predicate valid = other -> other != null && other != tile && ((!other.block().outputsPower && other.block().consumesPower) || (other.block().outputsPower && !other.block().consumesPower)) && linkValid(tile, other) && !other.entity.proximity().contains(tile) && other.entity.power.graph != tile.entity.power.graph; @@ -120,8 +129,7 @@ public class PowerNode extends PowerBlock{ tempTiles.sort(Structs.comparingFloat(t -> t.dst2(tile))); tempTiles.each(valid, other -> Call.linkPowerNodes(null, tile, other)); - lastPlaced = tile.pos(); - super.playerPlaced(tile); + super.placed(tile); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java b/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java index be88b2ff01..092fcbd3e8 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/ThermalGenerator.java @@ -29,11 +29,6 @@ public class ThermalGenerator extends PowerGenerator{ drawPlaceText(Core.bundle.formatFloat("bar.efficiency", sumAttribute(Attribute.heat, x, y) * 100, 1), x, y, valid); } - @Override - public void placed(Tile tile){ - super.placed(tile); - } - @Override public void onProximityAdded(Tile tile){ super.onProximityAdded(tile); diff --git a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java index 1d6c4ee369..7b4355eb5e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/storage/CoreBlock.java @@ -79,6 +79,7 @@ public class CoreBlock extends StorageBlock{ @Override public void placed(Tile tile){ + super.placed(tile); state.teams.get(tile.getTeam()).cores.add(tile); } diff --git a/server/src/io/anuke/mindustry/server/ServerControl.java b/server/src/io/anuke/mindustry/server/ServerControl.java index ffa388b44d..8eeeba9e1c 100644 --- a/server/src/io/anuke/mindustry/server/ServerControl.java +++ b/server/src/io/anuke/mindustry/server/ServerControl.java @@ -14,7 +14,7 @@ import io.anuke.mindustry.entities.type.Player; import io.anuke.mindustry.game.*; import io.anuke.mindustry.game.EventType.GameOverEvent; import io.anuke.mindustry.gen.Call; -import io.anuke.mindustry.io.*; +import io.anuke.mindustry.io.SaveIO; import io.anuke.mindustry.maps.Map; import io.anuke.mindustry.maps.MapException; import io.anuke.mindustry.net.Administration.PlayerInfo;