diff --git a/Maple2.File.Ingest/Maple2.File.Ingest.csproj b/Maple2.File.Ingest/Maple2.File.Ingest.csproj index 3a55fa4cb..43539a042 100644 --- a/Maple2.File.Ingest/Maple2.File.Ingest.csproj +++ b/Maple2.File.Ingest/Maple2.File.Ingest.csproj @@ -20,7 +20,7 @@ - + diff --git a/Maple2.Model/Game/FieldInstance.cs b/Maple2.Model/Game/FieldInstance.cs index 8c16c3536..183779b6a 100644 --- a/Maple2.Model/Game/FieldInstance.cs +++ b/Maple2.Model/Game/FieldInstance.cs @@ -1,10 +1,13 @@ using System.Runtime.InteropServices; using Maple2.Model.Enum; +using Maple2.PacketLib.Tools; +using Maple2.Tools; namespace Maple2.Model.Game; -[StructLayout(LayoutKind.Sequential, Size = 6)] -public readonly struct FieldInstance { +public sealed class FieldInstance : IByteSerializable { + public static FieldInstance Default = new(false, InstanceType.none, 0); + public readonly bool BlockChangeChannel; public readonly InstanceType InstanceType; public readonly int InstanceId; @@ -14,4 +17,10 @@ public FieldInstance(bool blockChangeChannel, InstanceType instanceType, int ins InstanceType = instanceType; InstanceId = instanceId; } + + public void WriteTo(IByteWriter writer) { + writer.WriteBool(BlockChangeChannel); + writer.Write(InstanceType); + writer.WriteInt(InstanceId); + } } diff --git a/Maple2.Server.Game/Manager/Field/FieldManager.cs b/Maple2.Server.Game/Manager/Field/FieldManager.cs index d31158f64..17451dc3a 100644 --- a/Maple2.Server.Game/Manager/Field/FieldManager.cs +++ b/Maple2.Server.Game/Manager/Field/FieldManager.cs @@ -67,7 +67,7 @@ public sealed partial class FieldManager : IDisposable { public int MapId => Metadata.Id; public readonly long OwnerId; public readonly int InstanceId; - public FieldInstance FieldInstance = default; + public FieldInstance FieldInstance = FieldInstance.Default; public readonly AiManager Ai; public IFieldRenderer? DebugRenderer { get; private set; } diff --git a/Maple2.Server.Game/Packets/FieldEnterPacket.cs b/Maple2.Server.Game/Packets/FieldEnterPacket.cs index 9e6b19d95..b3fb22c9e 100644 --- a/Maple2.Server.Game/Packets/FieldEnterPacket.cs +++ b/Maple2.Server.Game/Packets/FieldEnterPacket.cs @@ -7,6 +7,7 @@ using Maple2.Server.Core.Packets; using Maple2.Server.Game.Model; using Maple2.Server.Game.Session; +using Maple2.Tools.Extensions; namespace Maple2.Server.Game.Packets; @@ -15,7 +16,7 @@ public static ByteWriter Request(IActor player) { var pWriter = Packet.Of(SendOp.RequestFieldEnter); pWriter.Write(MigrationError.ok); pWriter.WriteInt(player.Value.Character.MapId); - pWriter.Write(player.Field.FieldInstance); + pWriter.WriteClass(player.Field.FieldInstance); pWriter.WriteInt(); pWriter.Write(player.Position); pWriter.Write(player.Rotation);