Fix player room loading for v2.0.0 (#549)

This commit is contained in:
hp3721 2021-11-20 00:56:32 -06:00 committed by GitHub
parent 8aed43a67f
commit e7dd2c131b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 22 additions and 23 deletions

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -10,6 +10,5 @@ public interface IPlayerRoom
string Extension { get; }
RoomItemLayer[] GetItemLayers();
void SetItemLayers(IReadOnlyList<RoomItemLayer> value);
IPlayerRoom Upgrade();
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);