diff --git a/core/assets-raw/sprites/blocks/turrets/turrets/hail.png b/core/assets-raw/sprites/blocks/turrets/turrets/hail.png new file mode 100644 index 0000000000..075325a110 Binary files /dev/null and b/core/assets-raw/sprites/blocks/turrets/turrets/hail.png differ diff --git a/core/assets/sprites/sprites.atlas b/core/assets/sprites/sprites.atlas index bcdce9015b..962f9ac84a 100644 --- a/core/assets/sprites/sprites.atlas +++ b/core/assets/sprites/sprites.atlas @@ -937,7 +937,7 @@ playerspawn index: -1 ripples rotate: false - xy: 667, 203 + xy: 667, 191 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1621,16 +1621,30 @@ spectre orig: 24, 24 offset: 0, 0 index: -1 +hail + rotate: false + xy: 267, 43 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 +scatter + rotate: false + xy: 267, 43 + size: 10, 10 + orig: 10, 10 + offset: 0, 0 + index: -1 lancer rotate: false - xy: 685, 215 + xy: 697, 215 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 lancer-heat rotate: false - xy: 697, 215 + xy: 667, 203 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -1642,13 +1656,6 @@ meltdown orig: 32, 32 offset: 0, 0 index: -1 -scatter - rotate: false - xy: 667, 191 - size: 10, 10 - orig: 10, 10 - offset: 0, 0 - index: -1 scatter-heat rotate: false xy: 679, 203 @@ -2244,79 +2251,93 @@ grass1 orig: 8, 8 offset: 0, 0 index: -1 -block-icon-ice +block-icon-hail rotate: false xy: 387, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 +block-icon-scatter + rotate: false + xy: 387, 53 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 +block-icon-ice + rotate: false + xy: 397, 53 + size: 8, 8 + orig: 8, 8 + offset: 0, 0 + index: -1 ice1 rotate: false - xy: 387, 53 + xy: 397, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-icerock rotate: false - xy: 397, 53 + xy: 407, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 icerock1 rotate: false - xy: 397, 53 + xy: 407, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-incinerator rotate: false - xy: 407, 53 + xy: 295, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 incinerator rotate: false - xy: 407, 53 + xy: 295, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-iron rotate: false - xy: 295, 43 + xy: 305, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 iron1 rotate: false - xy: 295, 43 + xy: 305, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-irondrill rotate: false - xy: 305, 43 + xy: 315, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-ironwall rotate: false - xy: 315, 43 + xy: 325, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 ironwall rotate: false - xy: 315, 43 + xy: 325, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2337,42 +2358,42 @@ ironwall-large index: -1 block-icon-itemsource rotate: false - xy: 325, 43 + xy: 335, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemsource rotate: false - xy: 325, 43 + xy: 335, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-itemvoid rotate: false - xy: 335, 43 + xy: 345, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 itemvoid rotate: false - xy: 335, 43 + xy: 345, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-junction rotate: false - xy: 345, 43 + xy: 355, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 junction rotate: false - xy: 345, 43 + xy: 355, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2400,28 +2421,28 @@ large-solar-panel index: -1 block-icon-laserconduit rotate: false - xy: 355, 43 + xy: 365, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconduit rotate: false - xy: 355, 43 + xy: 365, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-laserconveyor rotate: false - xy: 365, 43 + xy: 375, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 laserconveyor rotate: false - xy: 365, 43 + xy: 375, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2435,63 +2456,63 @@ block-icon-laserdrill index: -1 block-icon-lava rotate: false - xy: 375, 43 + xy: 385, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lava rotate: false - xy: 375, 43 + xy: 385, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-lead rotate: false - xy: 385, 43 + xy: 395, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 lead1 rotate: false - xy: 385, 43 + xy: 395, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquidjunction rotate: false - xy: 395, 43 + xy: 405, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidjunction rotate: false - xy: 395, 43 + xy: 405, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquidrouter rotate: false - xy: 405, 43 + xy: 417, 53 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-liquidsource rotate: false - xy: 417, 53 + xy: 415, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 liquidsource rotate: false - xy: 417, 53 + xy: 415, 43 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2526,14 +2547,14 @@ core-top index: -1 block-icon-mechanical-pump rotate: false - xy: 415, 43 + xy: 427, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 mechanical-pump rotate: false - xy: 415, 43 + xy: 427, 55 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2547,28 +2568,28 @@ block-icon-meltdown index: -1 block-icon-melter rotate: false - xy: 427, 55 + xy: 439, 71 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 melter rotate: false - xy: 427, 55 + xy: 439, 71 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-metalfloor rotate: false - xy: 439, 71 + xy: 439, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 metalfloor1 rotate: false - xy: 439, 71 + xy: 439, 61 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2610,14 +2631,14 @@ block-icon-nucleardrill index: -1 block-icon-oil rotate: false - xy: 439, 61 + xy: 437, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oil rotate: false - xy: 439, 61 + xy: 437, 51 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2631,28 +2652,28 @@ block-icon-oilextractor index: -1 block-icon-oilrefinery rotate: false - xy: 437, 51 + xy: 427, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 oilrefinery rotate: false - xy: 437, 51 + xy: 427, 45 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-overflowgate rotate: false - xy: 427, 45 + xy: 437, 41 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 overflowgate rotate: false - xy: 427, 45 + xy: 437, 41 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2680,14 +2701,14 @@ plasteel-compressor index: -1 block-icon-power-node rotate: false - xy: 437, 41 + xy: 705, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 power-node rotate: false - xy: 437, 41 + xy: 705, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2708,56 +2729,56 @@ power-node-large index: -1 block-icon-poweredconveyor rotate: false - xy: 705, 339 + xy: 715, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 poweredconveyor rotate: false - xy: 705, 339 + xy: 715, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-powerinfinite rotate: false - xy: 715, 339 + xy: 725, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powerinfinite rotate: false - xy: 715, 339 + xy: 725, 339 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-powervoid rotate: false - xy: 725, 339 + xy: 843, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 powervoid rotate: false - xy: 725, 339 + xy: 843, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulseconduit rotate: false - xy: 843, 425 + xy: 853, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-pulverizer rotate: false - xy: 853, 425 + xy: 863, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2792,35 +2813,35 @@ walkerfactory index: -1 block-icon-reinforceddrill rotate: false - xy: 863, 425 + xy: 873, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-repairpoint rotate: false - xy: 873, 425 + xy: 883, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 repairpoint rotate: false - xy: 873, 425 + xy: 883, 425 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-resupplypoint rotate: false - xy: 883, 425 + xy: 893, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 resupplypoint rotate: false - xy: 883, 425 + xy: 893, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2834,14 +2855,14 @@ block-icon-ripple index: -1 block-icon-rock rotate: false - xy: 893, 427 + xy: 903, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rock1 rotate: false - xy: 893, 427 + xy: 903, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 @@ -2862,47 +2883,40 @@ rotary-pump index: -1 block-icon-router rotate: false - xy: 903, 427 + xy: 913, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 router rotate: false - xy: 903, 427 + xy: 913, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-rtg-generator rotate: false - xy: 913, 427 + xy: 923, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 rtg-generator rotate: false - xy: 913, 427 + xy: 923, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 block-icon-sand rotate: false - xy: 923, 427 + xy: 933, 427 size: 8, 8 orig: 8, 8 offset: 0, 0 index: -1 sand1 - rotate: false - xy: 923, 427 - size: 8, 8 - orig: 8, 8 - offset: 0, 0 - index: -1 -block-icon-scatter rotate: false xy: 933, 427 size: 8, 8 @@ -3893,7 +3907,7 @@ icon-admin-small index: -1 icon-areaDelete rotate: false - xy: 267, 43 + xy: 251, 1 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -3914,28 +3928,28 @@ icon-arrow-16 index: -1 icon-arrow-down rotate: false - xy: 251, 1 + xy: 263, 1 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-left rotate: false - xy: 263, 1 + xy: 463, 120 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-right rotate: false - xy: 463, 120 + xy: 475, 120 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-arrow-up rotate: false - xy: 475, 120 + xy: 487, 120 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -3970,7 +3984,7 @@ icon-cancel index: -1 icon-chat rotate: false - xy: 487, 120 + xy: 463, 108 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -3984,21 +3998,21 @@ icon-check index: -1 icon-crafting rotate: false - xy: 463, 108 + xy: 475, 108 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-cursor rotate: false - xy: 475, 108 + xy: 487, 108 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-defense rotate: false - xy: 487, 108 + xy: 499, 109 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4019,7 +4033,7 @@ icon-discord index: -1 icon-distribution rotate: false - xy: 499, 109 + xy: 511, 109 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4152,14 +4166,14 @@ icon-grid index: -1 icon-hold rotate: false - xy: 511, 109 + xy: 523, 109 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-holdDelete rotate: false - xy: 523, 109 + xy: 535, 109 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4180,7 +4194,7 @@ icon-host index: -1 icon-info rotate: false - xy: 535, 109 + xy: 547, 109 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4215,7 +4229,7 @@ icon-link index: -1 icon-liquid rotate: false - xy: 547, 109 + xy: 559, 109 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4250,14 +4264,14 @@ icon-loading index: -1 icon-logic rotate: false - xy: 559, 109 + xy: 571, 109 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-menu rotate: false - xy: 571, 109 + xy: 659, 229 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4271,14 +4285,14 @@ icon-menu-large index: -1 icon-none rotate: false - xy: 659, 229 + xy: 671, 227 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-pause rotate: false - xy: 671, 227 + xy: 683, 227 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4306,7 +4320,7 @@ icon-pick index: -1 icon-play rotate: false - xy: 683, 227 + xy: 695, 227 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4320,21 +4334,21 @@ icon-play-2 index: -1 icon-players rotate: false - xy: 695, 227 + xy: 651, 217 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-power rotate: false - xy: 651, 217 + xy: 655, 205 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-production rotate: false - xy: 655, 205 + xy: 655, 193 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4425,7 +4439,7 @@ icon-save-map index: -1 icon-settings rotate: false - xy: 655, 193 + xy: 655, 181 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4446,14 +4460,14 @@ icon-tools index: -1 icon-touch rotate: false - xy: 655, 181 + xy: 655, 169 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-touchDelete rotate: false - xy: 655, 169 + xy: 655, 157 size: 10, 10 orig: 10, 10 offset: 0, 0 @@ -4495,14 +4509,14 @@ icon-undo index: -1 icon-units rotate: false - xy: 655, 157 + xy: 673, 215 size: 10, 10 orig: 10, 10 offset: 0, 0 index: -1 icon-weapon rotate: false - xy: 673, 215 + xy: 685, 215 size: 10, 10 orig: 10, 10 offset: 0, 0 diff --git a/core/assets/sprites/sprites.png b/core/assets/sprites/sprites.png index a0123f38d9..294d47cd3c 100644 Binary files a/core/assets/sprites/sprites.png and b/core/assets/sprites/sprites.png differ diff --git a/core/src/io/anuke/mindustry/content/blocks/Blocks.java b/core/src/io/anuke/mindustry/content/blocks/Blocks.java index 0b38edf83f..842aad091e 100644 --- a/core/src/io/anuke/mindustry/content/blocks/Blocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/Blocks.java @@ -46,7 +46,6 @@ public class Blocks extends BlockList implements ContentList{ }}; deepwater = new Floor("deepwater") {{ - placeableOn = false; liquidColor = Color.valueOf("546bb3"); speedMultiplier = 0.2f; variants = 0; @@ -59,7 +58,6 @@ public class Blocks extends BlockList implements ContentList{ }}; water = new Floor("water") {{ - placeableOn = false; liquidColor = Color.valueOf("546bb3"); speedMultiplier = 0.5f; variants = 0; @@ -71,7 +69,6 @@ public class Blocks extends BlockList implements ContentList{ }}; lava = new Floor("lava") {{ - placeableOn = false; liquidColor = Color.valueOf("ed5334"); speedMultiplier = 0.2f; damageTaken = 0.1f; @@ -84,7 +81,6 @@ public class Blocks extends BlockList implements ContentList{ }}; oil = new Floor("oil") {{ - placeableOn = false; liquidColor = Color.valueOf("292929"); status = StatusEffects.tarred; statusIntensity = 1f; diff --git a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java index 72735f37e2..169fc18461 100644 --- a/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/OverlayRenderer.java @@ -9,10 +9,9 @@ import io.anuke.mindustry.entities.Player; import io.anuke.mindustry.entities.Unit; import io.anuke.mindustry.game.TeamInfo.TeamData; import io.anuke.mindustry.input.InputHandler; -import io.anuke.mindustry.world.meta.BlockBar; import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.meta.BlockBar; import io.anuke.ucore.core.Graphics; -import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Settings; import io.anuke.ucore.core.Timers; import io.anuke.ucore.function.Callable; @@ -91,12 +90,6 @@ public class OverlayRenderer { Draw.reset(); } - if (Inputs.keyDown("block_info") && target.block().isAccessible()) { - Draw.color(Palette.accent); - Lines.crect(target.drawx(), target.drawy(), target.block().size * tilesize, target.block().size * tilesize); - Draw.color(); - } - if (target.entity != null) { int[] values = {0, 0}; Tile t = target; diff --git a/core/src/io/anuke/mindustry/input/DefaultKeybinds.java b/core/src/io/anuke/mindustry/input/DefaultKeybinds.java index fbdd127464..49726d4cf4 100644 --- a/core/src/io/anuke/mindustry/input/DefaultKeybinds.java +++ b/core/src/io/anuke/mindustry/input/DefaultKeybinds.java @@ -33,7 +33,6 @@ public class DefaultKeybinds { "menu", Gdx.app.getType() == ApplicationType.Android ? Input.BACK : Input.ESCAPE, "pause", Input.SPACE, "toggle_menus", Input.C, - "block_info", Input.CONTROL_LEFT, "item_withdraw", Input.SHIFT_LEFT, new Category("Multiplayer"), "player_list", Input.TAB, diff --git a/core/src/io/anuke/mindustry/input/DesktopInput.java b/core/src/io/anuke/mindustry/input/DesktopInput.java index 8b5779b836..50a6b3c7e2 100644 --- a/core/src/io/anuke/mindustry/input/DesktopInput.java +++ b/core/src/io/anuke/mindustry/input/DesktopInput.java @@ -205,6 +205,10 @@ public class DesktopInput extends InputHandler{ selectY = cursor.y; mode = breaking; }else if(button == Buttons.MIDDLE){ //middle button = cancel placing + if(recipe == null){ + player.clearBuilding(); + } + recipe = null; mode = none; } diff --git a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java index a50a555e19..43676da20c 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/BlocksFragment.java @@ -161,6 +161,8 @@ public class BlocksFragment implements Fragment{ Element e = Core.scene.hit(Graphics.mouse().x, Graphics.mouse().y, true); if(e != null && e.isDescendantOf(pane)){ Core.scene.setScrollFocus(pane); + }else if(Core.scene.getScrollFocus() == pane){ + Core.scene.setScrollFocus(null); } if(lastCategory == cat){ diff --git a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java index 632626a587..d05fedacd8 100644 --- a/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java +++ b/core/src/io/anuke/mindustry/ui/fragments/HudFragment.java @@ -11,6 +11,7 @@ import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.type.Recipe; import io.anuke.ucore.core.Core; +import io.anuke.ucore.core.Graphics; import io.anuke.ucore.core.Inputs; import io.anuke.ucore.core.Settings; import io.anuke.ucore.graphics.Draw; @@ -20,6 +21,8 @@ import io.anuke.ucore.scene.actions.Actions; import io.anuke.ucore.scene.builders.imagebutton; import io.anuke.ucore.scene.builders.label; import io.anuke.ucore.scene.builders.table; +import io.anuke.ucore.scene.event.InputEvent; +import io.anuke.ucore.scene.event.InputListener; import io.anuke.ucore.scene.event.Touchable; import io.anuke.ucore.scene.style.TextureRegionDrawable; import io.anuke.ucore.scene.ui.Image; @@ -130,6 +133,7 @@ public class HudFragment implements Fragment{ aright(); new table("button"){{ + Table table = get(); margin(5); marginBottom(10); TextureRegionDrawable draw = new TextureRegionDrawable(new TextureRegion()); @@ -143,7 +147,21 @@ public class HudFragment implements Fragment{ } }; image.setDrawable(draw); + table.addListener(new InputListener(){ + public boolean scrolled (InputEvent event, float x, float y, int amount) { + renderer.minimap().zoomBy(amount); + return true; + } + }); image.update(() -> { + + Element e = Core.scene.hit(Graphics.mouse().x, Graphics.mouse().y, true); + if(e != null && e.isDescendantOf(table)){ + Core.scene.setScrollFocus(table); + }else if(Core.scene.getScrollFocus() == table){ + Core.scene.setScrollFocus(null); + } + if (renderer.minimap().getTexture() == null) { draw.getRegion().setRegion(Draw.region("white")); } else { diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 7f4ea092b6..3a09313158 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -74,6 +74,8 @@ public class Block extends BaseBlock implements UnlockableContent{ public float baseExplosiveness = 0f; /**whether to display a different shadow per variant*/ public boolean varyShadow = false; + /**whether this block can be placed on liquids.*/ + public boolean floating = true; /**number of block variants, 0 to disable*/ public int variants = 0; /**stuff that drops when broken*/ diff --git a/core/src/io/anuke/mindustry/world/Build.java b/core/src/io/anuke/mindustry/world/Build.java index 2d841b11c1..2bbb408d1e 100644 --- a/core/src/io/anuke/mindustry/world/Build.java +++ b/core/src/io/anuke/mindustry/world/Build.java @@ -191,15 +191,20 @@ public class Build { for (int dx = 0; dx < type.size; dx++) { for (int dy = 0; dy < type.size; dy++) { Tile other = world.tile(x + dx + offsetx, y + dy + offsety); - if (other == null || (other.block() != Blocks.air && !other.block().alwaysReplace) || !type.canPlaceOn(other) || other.cliffs != 0 || !other.floor().placeableOn) { + if (other == null || (other.block() != Blocks.air && !other.block().alwaysReplace) + || !type.canPlaceOn(other) || other.cliffs != 0 || !other.floor().placeableOn || + (tile.floor().liquidDrop != null && !type.floating)) { return false; } } } return true; } else { - return (tile.getTeam() == Team.none || tile.getTeam() == team) && tile.floor().placeableOn && tile.cliffs == 0 - && ((type.canReplace(tile.block()) && !(type == tile.block() && rotation == tile.getRotation() && type.rotate)) || tile.block().alwaysReplace || tile.block() == Blocks.air) + return (tile.getTeam() == Team.none || tile.getTeam() == team) + && (tile.floor().liquidDrop == null || type.floating) + && tile.floor().placeableOn && tile.cliffs == 0 + && ((type.canReplace(tile.block()) + && !(type == tile.block() && rotation == tile.getRotation() && type.rotate)) || tile.block().alwaysReplace || tile.block() == Blocks.air) && tile.block().isMultiblock() == type.isMultiblock() && type.canPlaceOn(tile); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/BreakBlock.java b/core/src/io/anuke/mindustry/world/blocks/BreakBlock.java index abd811fe8a..3f417e825a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/BreakBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/BreakBlock.java @@ -15,6 +15,7 @@ import io.anuke.mindustry.gen.CallBlocks; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; +import io.anuke.mindustry.input.CursorType; import io.anuke.mindustry.net.In; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.type.Recipe; @@ -38,14 +39,16 @@ public class BreakBlock extends Block { size = Integer.parseInt(name.charAt(name.length()-1) + ""); health = 1; layer = Layer.placement; - configurable = true; consumesTap = true; } @Override - public void tapped(Tile tile, Player player) { - BreakEntity entity = tile.entity(); + public CursorType getCursor(Tile tile) { + return CursorType.hand; + } + @Override + public void tapped(Tile tile, Player player) { player.clearBuilding(); player.addBuildRequest(new BuildRequest(tile.x, tile.y)); } diff --git a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java index 41cb7a60c5..b7f7d8ad64 100644 --- a/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/BuildBlock.java @@ -14,6 +14,7 @@ import io.anuke.mindustry.gen.CallBlocks; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; +import io.anuke.mindustry.input.CursorType; import io.anuke.mindustry.net.In; import io.anuke.mindustry.type.Recipe; import io.anuke.mindustry.world.BarType; @@ -37,10 +38,14 @@ public class BuildBlock extends Block { size = Integer.parseInt(name.charAt(name.length()-1) + ""); health = 1; layer = Layer.placement; - configurable = true; consumesTap = true; } + @Override + public CursorType getCursor(Tile tile) { + return CursorType.hand; + } + @Override public void tapped(Tile tile, Player player) { BuildEntity entity = tile.entity(); diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java index af1995d030..d8aa792fe4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java @@ -44,7 +44,7 @@ public class Junction extends Block{ Tile dest = tile.getNearby(direction); if(dest == null || !dest.block().acceptItem(item, dest, tile)){ - if(buffer.index > 1){ + if(buffer.index > 1 && Bits.getRightShort(Bits.getRightInt(buffer.items[1])) != direction){ System.arraycopy(buffer.items, 1, buffer.items, 0, buffer.index - 1); buffer.index --; } diff --git a/core/src/io/anuke/mindustry/world/blocks/production/Pump.java b/core/src/io/anuke/mindustry/world/blocks/production/Pump.java index b5317a28d5..e5a4adba79 100644 --- a/core/src/io/anuke/mindustry/world/blocks/production/Pump.java +++ b/core/src/io/anuke/mindustry/world/blocks/production/Pump.java @@ -29,6 +29,7 @@ public class Pump extends LiquidBlock{ liquidFlowFactor = 3f; group = BlockGroup.liquids; liquidRegion = "pump-liquid"; + floating = true; } @Override