mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-30 07:50:32 +00:00
b0da14b71e
Adds a basic editor for recorded Geonet/Unity Tower locations for the Gen 4/5 games, building on this [post by Danius88](https://projectpokemon.org/home/forums/topic/62055-bw-b2w2-unity-tower-geonet-and-passerby-research/). So far, I've implemented buttons that set all locations (including unused ones), set all legal locations, and clear all recorded locations; and checkboxes to toggle whether the whole globe is visible (used in Japanese games) and whether the ferry to Unity Tower is unlocked. Haven't implemented any UI for editing the status of individual locations, since I'm not sure how to lay it out. Also haven't implemented anything related to how the data of the other players in Unity Tower is stored.
57 lines
2.1 KiB
C#
57 lines
2.1 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace PKHeX.Core;
|
|
|
|
/// <summary>
|
|
/// Generation 5 <see cref="SaveFile"/> object for <see cref="GameVersion.BW"/>.
|
|
/// </summary>
|
|
/// <inheritdoc cref="SAV5" />
|
|
public sealed class SAV5BW : SAV5
|
|
{
|
|
public SAV5BW() : base(SaveUtil.SIZE_G5RAW)
|
|
{
|
|
Blocks = new SaveBlockAccessor5BW(this);
|
|
Initialize();
|
|
}
|
|
|
|
public SAV5BW(byte[] data) : base(data)
|
|
{
|
|
Blocks = new SaveBlockAccessor5BW(this);
|
|
Initialize();
|
|
}
|
|
|
|
public override PersonalTable5BW Personal => PersonalTable.BW;
|
|
public SaveBlockAccessor5BW Blocks { get; }
|
|
protected override SAV5BW CloneInternal() => new((byte[])Data.Clone());
|
|
public override int EventWorkCount => 0x13E;
|
|
public override int EventFlagCount => 0xB60;
|
|
protected override int EventWorkOffset => 0x20100;
|
|
protected override int EventFlagOffset => EventWorkOffset + 0x27C;
|
|
public override int MaxItemID => Legal.MaxItemID_5_BW;
|
|
|
|
private void Initialize()
|
|
{
|
|
BattleBoxOffset = 0x20A00;
|
|
CGearInfoOffset = 0x1C000;
|
|
CGearDataOffset = 0x52000;
|
|
EntreeForestOffset = 0x22C00;
|
|
PokeDex = Blocks.Zukan.PokeDex;
|
|
WondercardData = Blocks.Mystery.Offset;
|
|
DaycareOffset = Blocks.Daycare.Offset;
|
|
}
|
|
|
|
public override IReadOnlyList<BlockInfo> AllBlocks => Blocks.BlockInfo;
|
|
public override MyItem Items => Blocks.Items;
|
|
public override Zukan5 Zukan => Blocks.Zukan;
|
|
public override Misc5 Misc => Blocks.Misc;
|
|
public override MysteryBlock5 Mystery => Blocks.Mystery;
|
|
public override Daycare5 Daycare => Blocks.Daycare;
|
|
public override BoxLayout5 BoxLayout => Blocks.BoxLayout;
|
|
public override PlayerData5 PlayerData => Blocks.PlayerData;
|
|
public override BattleSubway5 BattleSubway => Blocks.BattleSubway;
|
|
public override Entralink5 Entralink => Blocks.Entralink;
|
|
public override Musical5 Musical => Blocks.Musical;
|
|
public override Encount5 Encount => Blocks.Encount;
|
|
public override UnityTower5 UnityTower => Blocks.UnityTower;
|
|
public override int GTS => 0x20500;
|
|
}
|