mirror of
https://github.com/kwsch/NHSE.git
synced 2026-08-06 01:40:27 -05:00
Fix player room loading for v2.0.0 (#549)
This commit is contained in:
parent
8aed43a67f
commit
e7dd2c131b
|
|
@ -56,7 +56,7 @@ public class MainSaveOffsets10 : MainSaveOffsets
|
|||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class MainSaveOffsets11 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public class MainSaveOffsets110 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class MainSaveOffsets111 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class MainSaveOffsets12 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class MainSaveOffsets13 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class MainSaveOffsets14 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class MainSaveOffsets15 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class MainSaveOffsets16 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ public class MainSaveOffsets17 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public class MainSaveOffsets18 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public class MainSaveOffsets19 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse1.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse1(data);
|
||||
public override int PlayerRoomSize => PlayerHouse1.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom1.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom1(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ public class MainSaveOffsets20 : MainSaveOffsets
|
|||
|
||||
public override int PlayerHouseSize => PlayerHouse2.SIZE;
|
||||
public override IPlayerHouse ReadPlayerHouse(byte[] data) => new PlayerHouse2(data);
|
||||
public override int PlayerRoomSize => PlayerHouse2.SIZE;
|
||||
public override int PlayerRoomSize => PlayerRoom2.SIZE;
|
||||
public override IPlayerRoom ReadPlayerRoom(byte[] data) => new PlayerRoom2(data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ public interface IPlayerHouse : IHouseInfo
|
|||
string Extension { get; }
|
||||
short[] GetEventFlags();
|
||||
void SetEventFlags(short[] value);
|
||||
IPlayerRoom GetRoom(int v);
|
||||
IPlayerRoom GetRoom(int roomIndex);
|
||||
void SetRoom(int roomIndex, IPlayerRoom room);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,5 @@ public interface IPlayerRoom
|
|||
string Extension { get; }
|
||||
RoomItemLayer[] GetItemLayers();
|
||||
void SetItemLayers(IReadOnlyList<RoomItemLayer> value);
|
||||
IPlayerRoom Upgrade();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ public short[] GetEventFlags()
|
|||
public const int MaxRoom = 6;
|
||||
public const int RoomStart = 0x120;
|
||||
|
||||
public IPlayerRoom GetRoom(int roomIndex)
|
||||
public virtual IPlayerRoom GetRoom(int roomIndex)
|
||||
{
|
||||
if ((uint)roomIndex >= MaxRoom)
|
||||
throw new ArgumentOutOfRangeException(nameof(roomIndex));
|
||||
|
|
@ -53,7 +53,7 @@ public IPlayerRoom GetRoom(int roomIndex)
|
|||
return new PlayerRoom1(data);
|
||||
}
|
||||
|
||||
public void SetRoom(int roomIndex, IPlayerRoom room)
|
||||
public virtual void SetRoom(int roomIndex, IPlayerRoom room)
|
||||
{
|
||||
if ((uint)roomIndex >= MaxRoom)
|
||||
throw new ArgumentOutOfRangeException(nameof(roomIndex));
|
||||
|
|
@ -93,7 +93,7 @@ public PlayerHouse2 Upgrade()
|
|||
var data = new byte[PlayerHouse2.SIZE];
|
||||
Data.Slice(0x0, 0x120).CopyTo(data, 0); // HouseLevel -> EventFlag
|
||||
for (int i = 0; i < MaxRoom; i++)
|
||||
GetRoom(i).Upgrade().Write().CopyTo(data, 0x120 + i * PlayerRoom2.SIZE); // RoomList
|
||||
((PlayerRoom1)GetRoom(i)).Upgrade().Write().CopyTo(data, 0x120 + i * PlayerRoom2.SIZE); // RoomList
|
||||
Data.Slice(0x263D0, 0x30).CopyTo(data, 0x289F8); // PlayerList -> Cockroach
|
||||
return new PlayerHouse2(data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ public class PlayerHouse2 : PlayerHouse1
|
|||
|
||||
public PlayerHouse2(byte[] data) : base(data) { }
|
||||
|
||||
public new PlayerRoom2 GetRoom(int roomIndex)
|
||||
public override IPlayerRoom GetRoom(int roomIndex)
|
||||
{
|
||||
if ((uint)roomIndex >= MaxRoom)
|
||||
throw new ArgumentOutOfRangeException(nameof(roomIndex));
|
||||
|
|
@ -18,12 +18,12 @@ public new PlayerRoom2 GetRoom(int roomIndex)
|
|||
return new PlayerRoom2(data);
|
||||
}
|
||||
|
||||
public void SetRoom(int roomIndex, PlayerRoom2 room)
|
||||
public override void SetRoom(int roomIndex, IPlayerRoom room)
|
||||
{
|
||||
if ((uint)roomIndex >= MaxRoom)
|
||||
throw new ArgumentOutOfRangeException(nameof(roomIndex));
|
||||
|
||||
room.Data.CopyTo(Data, RoomStart + (roomIndex * PlayerRoom2.SIZE));
|
||||
room.Write().CopyTo(Data, RoomStart + (roomIndex * PlayerRoom2.SIZE));
|
||||
}
|
||||
|
||||
public new sbyte NPC1 { get => (sbyte)Data[0x289F8]; set => Data[0x289F8] = (byte)value; }
|
||||
|
|
@ -58,7 +58,7 @@ public PlayerHouse1 Downgrade()
|
|||
var data = new byte[PlayerHouse1.SIZE];
|
||||
Data.Slice(0x0, 0x120).CopyTo(data, 0); // HouseLevel -> EventFlag
|
||||
for (int i = 0; i < MaxRoom; i++)
|
||||
GetRoom(i).Downgrade().Data.CopyTo(data, 0x120 + i * PlayerRoom2.SIZE); // RoomList
|
||||
((PlayerRoom2)GetRoom(i)).Downgrade().Data.CopyTo(data, 0x120 + i * PlayerRoom2.SIZE); // RoomList
|
||||
Data.Slice(0x289F8, 0x30).CopyTo(data, 0x263D0); // PlayerList -> Cockroach
|
||||
return new PlayerHouse1(data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public GSaveRoomFloorWall RoomFloorWall
|
|||
set => value.ToBytes().CopyTo(Data, 0x65A4);
|
||||
}
|
||||
|
||||
public IPlayerRoom Upgrade()
|
||||
public PlayerRoom2 Upgrade()
|
||||
{
|
||||
var data = new byte[PlayerRoom2.SIZE];
|
||||
Data.CopyTo(data, 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user