Ejemplo n.º 1
0
    private static void ExportBlock(SCBlock block, BinaryWriter bw, int blockIndex, SCBlockExportOption option)
    {
        if (option.HasFlagFast(SCBlockExportOption.DataOnly) && block.Data.Length == 0)
        {
            return;
        }

        if (option.HasFlagFast(SCBlockExportOption.FakeHeader))
        {
            bw.Write($"BLOCK{blockIndex:0000} {block.Key:X8}");
        }

        if (option.HasFlagFast(SCBlockExportOption.Key))
        {
            bw.Write(block.Key);
        }

        if (option.HasFlagFast(SCBlockExportOption.TypeInfo))
        {
            bw.Write((byte)block.Type);
            bw.Write((byte)block.SubType);
        }

        bw.Write(block.Data);
    }
Ejemplo n.º 2
0
    public Zukan8(SAV8SWSH sav, SCBlock galar, SCBlock rigel1, SCBlock rigel2) : base(sav, 0)
    {
        Galar  = galar;
        Rigel1 = rigel1;
        Rigel2 = rigel2;
        var revision = GetRevision();

        DexLookup = GetDexLookup(PersonalTable.SWSH, revision);
    }
Ejemplo n.º 3
0
    private static void ExportSelectBlock(SCBlock block)
    {
        var name = GetBlockFileNameWithoutExtension(block);

        using var sfd = new SaveFileDialog { FileName = $"{name}.bin" };
        if (sfd.ShowDialog() != DialogResult.OK)
        {
            return;
        }
        File.WriteAllBytes(sfd.FileName, block.Data);
    }
Ejemplo n.º 4
0
    public static string GetBlockFileNameWithoutExtension(SCBlock block)
    {
        var key  = block.Key;
        var name = $"{key:X8}";

        if (block.HasValue())
        {
            name += $" {block.GetValue()}";
        }
        return(name);
    }
Ejemplo n.º 5
0
    /// <summary>
    /// Create a blank block array using the provided <see cref="arr"/> definition.
    /// </summary>
    /// <param name="arr">Block specification tuples (key, size)</param>
    /// <returns>List of blocks</returns>
    private static SCBlock[] GetBlankBlockArray(IReadOnlyList <uint> arr)
    {
        var blocks = new SCBlock[arr.Count / 2];

        for (int i = 0; i < blocks.Length; i++)
        {
            int index  = i * 2;
            var key    = arr[index];
            var length = (int)arr[index + 1];
            var dummy  = new byte[length];
            blocks[i] = new SCBlock(key, SCTypeCode.None, dummy);
        }
        return(blocks);
    }
Ejemplo n.º 6
0
    private void CB_Key_SelectedIndexChanged(object sender, EventArgs e)
    {
        var key = (uint)WinFormsUtil.GetIndex(CB_Key);

        CurrentBlock = SAV.Accessor.GetBlock(key);
        UpdateBlockSummaryControls();
        if (CurrentBlock.Type.IsBoolean())
        {
            CB_TypeToggle.SelectedValue = (int)CurrentBlock.Type;
            CB_TypeToggle.Visible       = true;
        }
        else
        {
            CB_TypeToggle.Visible = false;
        }
    }
Ejemplo n.º 7
0
        private void CB_Key_SelectedIndexChanged(object sender, EventArgs e)
        {
            var key = (uint)WinFormsUtil.GetIndex(CB_Key);

            CurrentBlock    = SAV.Blocks.GetBlock(key);
            L_Detail_R.Text = GetBlockSummary(CurrentBlock);
            if (CurrentBlock.Type.IsBoolean())
            {
                CB_TypeToggle.SelectedValue = (int)CurrentBlock.Type;
                CB_TypeToggle.Visible       = true;
            }
            else
            {
                CB_TypeToggle.Visible = false;
            }
        }
Ejemplo n.º 8
0
    public static string GetBlockSummary(SCBlock b)
    {
        var sb = new StringBuilder(64);

        sb.Append("Key: ").AppendFormat("{0:X8}", b.Key).AppendLine();
        sb.Append("Type: ").Append(b.Type).AppendLine();
        if (b.Data.Length != 0)
        {
            sb.Append("Length: ").AppendFormat("{0:X8}", b.Data.Length).AppendLine();
        }

        if (b.SubType != 0)
        {
            sb.Append("SubType: ").Append(b.SubType).AppendLine();
        }
        else if (b.HasValue())
        {
            sb.Append("Value: ").Append(b.GetValue()).AppendLine();
        }

        return(sb.ToString());
    }
Ejemplo n.º 9
0
    private static void ImportSelectBlock(SCBlock blockTarget)
    {
        var key  = blockTarget.Key;
        var data = blockTarget.Data;

        using var ofd = new OpenFileDialog { FileName = $"{key:X8}.bin" };
        if (ofd.ShowDialog() != DialogResult.OK)
        {
            return;
        }

        var path = ofd.FileName;
        var file = new FileInfo(path);

        if (file.Length != data.Length)
        {
            WinFormsUtil.Error(string.Format(MessageStrings.MsgFileSize, $"0x{file.Length:X8}"));
            return;
        }

        var bytes = File.ReadAllBytes(path);

        bytes.CopyTo(data, 0);
    }
Ejemplo n.º 10
0
 public PlayTime8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 11
0
 public Record8(SAV8SWSH sav, SCBlock block, IReadOnlyList <byte> maxes) : base(sav, block.Data) =>
Ejemplo n.º 12
0
 public LastSaved8a(SaveFile sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 13
0
 public FieldMoveModelSave8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 14
0
 public RaidSpawnList8(SAV8SWSH sav, SCBlock block, int legal) : base(sav, block.Data)
 {
     CountAll  = block.Data.Length / RaidSpawnDetail.SIZE;
     CountUsed = legal;
 }
Ejemplo n.º 15
0
 public Coordinates8a(SAV8LA sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 16
0
 public AdventureStart8a(SaveFile sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 17
0
 public PlayerFashion8a(SAV8LA sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 18
0
 public MassiveOutbreakSet8a(SCBlock block) : this(block.Data)
 {
 }
Ejemplo n.º 19
0
 public Box8(SaveFile sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 20
0
 public TrainerCard8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 21
0
 public LastSaved8a(SAV8LA sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 22
0
 public Fused8(SaveFile sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 23
0
 public MyItem8a(SAV8LA SAV, SCBlock block) : base(SAV, block.Data)
 {
 }
Ejemplo n.º 24
0
 public HallOfFameTime8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data)
 {
     Debug.Assert(Data.Length == 8);
 }
Ejemplo n.º 25
0
    private const int StringMaxLength = SAV6.LongStringLength / 2; // 0x22 bytes

    public BoxLayout8a(SAV8LA sav, SCBlock block) : base(sav, block.Data)
    {
    }
Ejemplo n.º 26
0
 public MyStatus8a(SAV8LA sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 27
0
 public Party8a(SAV8LA sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 28
0
 public PlayTime8a(SAV8LA sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 29
0
 public BoxLayout8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data)
 {
 }
Ejemplo n.º 30
0
 public MyItem8(SaveFile SAV, SCBlock block) : base(SAV, block.Data)
 {
 }