diff --git a/Mine2d/game/backend/interactor/Breaking.cs b/Mine2d/game/backend/interactor/Breaking.cs index 7f9626d..d95f125 100644 --- a/Mine2d/game/backend/interactor/Breaking.cs +++ b/Mine2d/game/backend/interactor/Breaking.cs @@ -66,6 +66,10 @@ public class Breaking { return; } + if (packet.Source == BreakSource.Move && player.Mining == Vector2.Zero) + { + return; + } player.Mining = packet.Target; } diff --git a/Mine2d/game/backend/interactor/ItemPhysics.cs b/Mine2d/game/backend/interactor/ItemPhysics.cs index bb4886a..1e8a997 100644 --- a/Mine2d/game/backend/interactor/ItemPhysics.cs +++ b/Mine2d/game/backend/interactor/ItemPhysics.cs @@ -11,7 +11,7 @@ public class ItemPhysics { [Interaction(InteractorKind.Hybrid, PacketType.Tick)] - public static void TickHybrid(TickPacket packet) + public static void TickHybrid(TickPacket packet) { var gameState = Context.Get().GameState; var world = gameState.World; @@ -48,7 +48,6 @@ public class ItemPhysics var items = chunk.Value.Entities.Where(e => { - Console.WriteLine("Where"); return e is ItemEntity itemEntity && (player.Position + new Vector2(7, 3) - itemEntity.Position).LengthSquared() < 8 * 8 && player.Inventory.PickupItemStack(new ItemStack { Id = itemEntity.ItemId, Count = 1 }); diff --git a/Mine2d/game/backend/network/packets/BreakPacket.cs b/Mine2d/game/backend/network/packets/BreakPacket.cs index 7af6709..d1131d1 100644 --- a/Mine2d/game/backend/network/packets/BreakPacket.cs +++ b/Mine2d/game/backend/network/packets/BreakPacket.cs @@ -1,9 +1,16 @@ namespace Mine2d.game.backend.network.packets; +public enum BreakSource +{ + Move, + Click +} + public class BreakPacket : Packet { public override PacketType Type => PacketType.Break; public Guid PlayerGuid { get; init; } public Vector2 Target { get; init; } -} \ No newline at end of file + public BreakSource Source { get; init; } +} diff --git a/Mine2d/game/frontend/events/PlayerBreakInput.cs b/Mine2d/game/frontend/events/PlayerBreakInput.cs index b7537c4..02f7875 100644 --- a/Mine2d/game/frontend/events/PlayerBreakInput.cs +++ b/Mine2d/game/frontend/events/PlayerBreakInput.cs @@ -18,11 +18,12 @@ public class PlayerBreakInput var amp = ctx.FrontendGameState.MousePosition / ctx.FrontendGameState.Settings.GameScale + ctx.FrontendGameState.Camera.Position; - + ctx.Backend.ProcessPacket(new BreakPacket { PlayerGuid = ctx.FrontendGameState.PlayerGuid, - Target = amp + Target = amp, + Source = BreakSource.Move }); } } @@ -36,14 +37,15 @@ public class PlayerBreakInput } var ctx = Context.Get(); - var amp = ctx.FrontendGameState.MousePosition + var amp = ctx.FrontendGameState.MousePosition / ctx.FrontendGameState.Settings.GameScale + ctx.FrontendGameState.Camera.Position; - + ctx.Backend.ProcessPacket(new BreakPacket { PlayerGuid = ctx.FrontendGameState.PlayerGuid, - Target = amp + Target = amp, + Source = BreakSource.Click }); } @@ -59,7 +61,8 @@ public class PlayerBreakInput ctx.Backend.ProcessPacket(new BreakPacket { PlayerGuid = ctx.FrontendGameState.PlayerGuid, - Target = Vector2.Zero + Target = Vector2.Zero, + Source = BreakSource.Click }); } } diff --git a/Mine2d/game/frontend/renderer/WorldCursorRenderer.cs b/Mine2d/game/frontend/renderer/WorldCursorRenderer.cs index f21869f..02e9928 100644 --- a/Mine2d/game/frontend/renderer/WorldCursorRenderer.cs +++ b/Mine2d/game/frontend/renderer/WorldCursorRenderer.cs @@ -15,18 +15,14 @@ public class WorldCursorRenderer : IRenderer { return; } - - if (ctx.GameState.World.HasTileAt((int)absoluteMousePos.X, (int)absoluteMousePos.Y)) - { - var ts = Constants.TileSize; - var tilePos = new Vector2(absoluteMousePos.X - absoluteMousePos.X % ts, absoluteMousePos.Y - absoluteMousePos.Y % ts); - ctx.Renderer.SetColor(255, 255, 255); - ctx.Renderer.DrawOutline( - (int)tilePos.X * scale - (int)camera.Position.X * scale, - (int)tilePos.Y * scale - (int)camera.Position.Y * scale, - 16 * scale, - 16 * scale - ); - } + var ts = Constants.TileSize; + var tilePos = new Vector2(absoluteMousePos.X - absoluteMousePos.X % ts, absoluteMousePos.Y - absoluteMousePos.Y % ts); + ctx.Renderer.SetColor(255, 255, 255); + ctx.Renderer.DrawOutline( + (int)tilePos.X * scale - (int)camera.Position.X * scale, + (int)tilePos.Y * scale - (int)camera.Position.Y * scale, + 16 * scale, + 16 * scale + ); } }