diff --git a/Maple2.Model/Game/FieldInstance.cs b/Maple2.Model/Game/FieldInstance.cs deleted file mode 100644 index 3b6b1b78a..000000000 --- a/Maple2.Model/Game/FieldInstance.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Maple2.Model.Enum; -using Maple2.PacketLib.Tools; -using Maple2.Tools; - -namespace Maple2.Model.Game; - -public sealed class FieldInstance : IByteSerializable { - public static FieldInstance Default = new(InstanceType.none, 0); - - public readonly InstanceType InstanceType; - public readonly int InstanceId; - - public FieldInstance(InstanceType instanceType, int instanceId) { - InstanceType = instanceType; - InstanceId = instanceId; - } - - public void WriteTo(IByteWriter writer) { - writer.Write(InstanceType); - writer.WriteInt(InstanceId); - } -} diff --git a/Maple2.Server.Game/Manager/DungeonManager.cs b/Maple2.Server.Game/Manager/DungeonManager.cs index 3dd157fec..dc177a138 100644 --- a/Maple2.Server.Game/Manager/DungeonManager.cs +++ b/Maple2.Server.Game/Manager/DungeonManager.cs @@ -72,7 +72,7 @@ public void LoadField() { return; } - if (session.Field.FieldInstance.InstanceType == InstanceType.DungeonLobby) { + if (session.Field.FieldInstance.Type == InstanceType.DungeonLobby) { session.Send(DungeonWaitingPacket.Set(Lobby.DungeonId, Lobby.Size)); } } diff --git a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.State.cs b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.State.cs index 8d7f9868c..055414581 100644 --- a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.State.cs +++ b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.State.cs @@ -94,7 +94,7 @@ public FieldPlayer SpawnPlayer(GameSession session, Player player, int portalId player.Character.ReviveMapId = Metadata.Property.RevivalReturnId; } - if (FieldInstance.InstanceType == InstanceType.none) { + if (FieldInstance.Type == InstanceType.none || FieldInstance.SaveField) { if (Metadata.Property.EnterReturnId != 0) { player.Character.ReturnMapId = Metadata.Property.EnterReturnId; } diff --git a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs index 510a554c9..7ae376bcf 100644 --- a/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs +++ b/Maple2.Server.Game/Manager/Field/FieldManager/FieldManager.cs @@ -74,7 +74,7 @@ public partial class FieldManager : IField { public int DungeonId { get; init; } public int Size { get; init; } public FieldType FieldType { get; init; } - public FieldInstance FieldInstance { get; private set; } + public InstanceFieldMetadata FieldInstance { get; private set; } public readonly AiManager Ai; public IFieldRenderer? DebugRenderer { get; private set; } @@ -92,7 +92,7 @@ public FieldManager(MapMetadata metadata, UgcMapMetadata ugcMetadata, MapEntityM Ai = new AiManager(this); RoomId = NextGlobalId(); - FieldInstance = FieldInstance.Default; + FieldInstance = new InstanceFieldMetadata(0, InstanceType.none, 0, false, 0, true, 0, 0, 0, 0); ItemDrop = new ItemDropManager(this); @@ -120,7 +120,7 @@ public virtual void Init() { } if (ServerTableMetadata.InstanceFieldTable.Entries.TryGetValue(Metadata.Id, out InstanceFieldMetadata? instanceField)) { - FieldInstance = new FieldInstance(instanceField.Type, instanceField.InstanceId); + FieldInstance = instanceField; } if (ugcMetadata.Plots.Count > 0) { diff --git a/Maple2.Server.Game/Manager/Field/FieldManager/IField.cs b/Maple2.Server.Game/Manager/Field/FieldManager/IField.cs index 05ab32032..7fd186cf0 100644 --- a/Maple2.Server.Game/Manager/Field/FieldManager/IField.cs +++ b/Maple2.Server.Game/Manager/Field/FieldManager/IField.cs @@ -52,7 +52,7 @@ public interface IField : IDisposable { public ConcurrentDictionary Pets { get; } public RoomTimer? RoomTimer { get; } - public FieldInstance FieldInstance { get; } + public InstanceFieldMetadata FieldInstance { get; } public FieldType FieldType { get; } public int Size { get; init; } diff --git a/Maple2.Server.Game/Packets/FieldEnterPacket.cs b/Maple2.Server.Game/Packets/FieldEnterPacket.cs index b73e3bb95..82cc28301 100644 --- a/Maple2.Server.Game/Packets/FieldEnterPacket.cs +++ b/Maple2.Server.Game/Packets/FieldEnterPacket.cs @@ -17,7 +17,8 @@ public static ByteWriter Request(IActor player) { pWriter.Write(MigrationError.ok); pWriter.WriteInt(player.Value.Character.MapId); pWriter.Write(player.Field.FieldType); - pWriter.WriteClass(player.Field.FieldInstance); + pWriter.Write(player.Field.FieldInstance.Type); + pWriter.WriteInt(player.Field.FieldInstance.InstanceId); pWriter.WriteInt(player.Field.DungeonId); pWriter.Write(player.Position); pWriter.Write(player.Rotation);