diff --git a/core/assets/scripts/global.js b/core/assets/scripts/global.js index 8910dbd2a9..81a07f2bef 100755 --- a/core/assets/scripts/global.js +++ b/core/assets/scripts/global.js @@ -108,7 +108,6 @@ importPackage(Packages.mindustry.world.draw) importPackage(Packages.mindustry.world.meta) importPackage(Packages.mindustry.world.meta.values) importPackage(Packages.mindustry.world.modules) -importPackage(Packages.mindustry.world.producers) const PlayerIpUnbanEvent = Packages.mindustry.game.EventType.PlayerIpUnbanEvent const PlayerIpBanEvent = Packages.mindustry.game.EventType.PlayerIpBanEvent const PlayerUnbanEvent = Packages.mindustry.game.EventType.PlayerUnbanEvent @@ -118,6 +117,7 @@ const PlayerConnect = Packages.mindustry.game.EventType.PlayerConnect const PlayerJoin = Packages.mindustry.game.EventType.PlayerJoin const UnitChangeEvent = Packages.mindustry.game.EventType.UnitChangeEvent const UnitCreateEvent = Packages.mindustry.game.EventType.UnitCreateEvent +const UnitDrownEvent = Packages.mindustry.game.EventType.UnitDrownEvent const UnitDestroyEvent = Packages.mindustry.game.EventType.UnitDestroyEvent const BlockDestroyEvent = Packages.mindustry.game.EventType.BlockDestroyEvent const BuildSelectEvent = Packages.mindustry.game.EventType.BuildSelectEvent @@ -128,6 +128,7 @@ const UnlockEvent = Packages.mindustry.game.EventType.UnlockEvent const StateChangeEvent = Packages.mindustry.game.EventType.StateChangeEvent const TileChangeEvent = Packages.mindustry.game.EventType.TileChangeEvent const GameOverEvent = Packages.mindustry.game.EventType.GameOverEvent +const TapEvent = Packages.mindustry.game.EventType.TapEvent const ConfigEvent = Packages.mindustry.game.EventType.ConfigEvent const DepositEvent = Packages.mindustry.game.EventType.DepositEvent const WithdrawEvent = Packages.mindustry.game.EventType.WithdrawEvent diff --git a/core/src/mindustry/game/EventType.java b/core/src/mindustry/game/EventType.java index 1739bb1fd1..fbfa0ab032 100644 --- a/core/src/mindustry/game/EventType.java +++ b/core/src/mindustry/game/EventType.java @@ -148,7 +148,7 @@ public class EventType{ } } - /** Called when the configures sets a specific block. */ + /** Called when the player configures a specific building. */ public static class ConfigEvent{ public final Building tile; public final Player player; @@ -161,6 +161,17 @@ public class EventType{ } } + /** Called when a player taps any tile. */ + public static class TapEvent{ + public final Player player; + public final Tile tile; + + public TapEvent(Player player, Tile tile){ + this.tile = tile; + this.player = player; + } + } + public static class GameOverEvent{ public final Team winner; diff --git a/core/src/mindustry/input/DesktopInput.java b/core/src/mindustry/input/DesktopInput.java index 88c317d29b..a71ed25564 100644 --- a/core/src/mindustry/input/DesktopInput.java +++ b/core/src/mindustry/input/DesktopInput.java @@ -459,6 +459,10 @@ public class DesktopInput extends InputHandler{ } if(Core.input.keyTap(Binding.select) && !Core.scene.hasMouse()){ + if(selected != null){ + Call.tileTap(player, selected); + } + BuildPlan req = getRequest(cursorX, cursorY); if(Core.input.keyDown(Binding.break_block)){ diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index bbca06d7e0..9034bcdd07 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -274,6 +274,15 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ Core.app.post(() -> Events.fire(new ConfigEvent(tile, player, value))); } + //only useful for servers or local mods, and is not replicated across clients + //uses unreliable packets due to high frequency + @Remote(targets = Loc.both, called = Loc.both, unreliable = true) + public static void tileTap(@Nullable Player player, Tile tile){ + if(tile == null) return; + + Events.fire(new TapEvent(player, tile)); + } + @Remote(targets = Loc.both, called = Loc.both, forward = true) public static void unitControl(Player player, @Nullable Unit unit){ if(player == null) return; diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index 03d90e18be..99c77773af 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -558,6 +558,9 @@ public class MobileInput extends InputHandler implements GestureListener{ //ignore off-screen taps if(cursor == null || Core.scene.hasMouse(x, y)) return false; + + Call.tileTap(player, cursor); + Tile linked = cursor.build == null ? cursor : cursor.build.tile; if(!player.dead()){