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); }
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); }
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); }
public static string GetBlockFileNameWithoutExtension(SCBlock block) { var key = block.Key; var name = $"{key:X8}"; if (block.HasValue()) { name += $" {block.GetValue()}"; } return(name); }
/// <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); }
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; } }
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; } }
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()); }
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); }
public PlayTime8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data) { }
public Record8(SAV8SWSH sav, SCBlock block, IReadOnlyList <byte> maxes) : base(sav, block.Data) =>
public LastSaved8a(SaveFile sav, SCBlock block) : base(sav, block.Data) { }
public FieldMoveModelSave8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data) { }
public RaidSpawnList8(SAV8SWSH sav, SCBlock block, int legal) : base(sav, block.Data) { CountAll = block.Data.Length / RaidSpawnDetail.SIZE; CountUsed = legal; }
public Coordinates8a(SAV8LA sav, SCBlock block) : base(sav, block.Data) { }
public AdventureStart8a(SaveFile sav, SCBlock block) : base(sav, block.Data) { }
public PlayerFashion8a(SAV8LA sav, SCBlock block) : base(sav, block.Data) { }
public MassiveOutbreakSet8a(SCBlock block) : this(block.Data) { }
public Box8(SaveFile sav, SCBlock block) : base(sav, block.Data) { }
public TrainerCard8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data) { }
public LastSaved8a(SAV8LA sav, SCBlock block) : base(sav, block.Data) { }
public Fused8(SaveFile sav, SCBlock block) : base(sav, block.Data) { }
public MyItem8a(SAV8LA SAV, SCBlock block) : base(SAV, block.Data) { }
public HallOfFameTime8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data) { Debug.Assert(Data.Length == 8); }
private const int StringMaxLength = SAV6.LongStringLength / 2; // 0x22 bytes public BoxLayout8a(SAV8LA sav, SCBlock block) : base(sav, block.Data) { }
public MyStatus8a(SAV8LA sav, SCBlock block) : base(sav, block.Data) { }
public Party8a(SAV8LA sav, SCBlock block) : base(sav, block.Data) { }
public PlayTime8a(SAV8LA sav, SCBlock block) : base(sav, block.Data) { }
public BoxLayout8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data) { }
public MyItem8(SaveFile SAV, SCBlock block) : base(SAV, block.Data) { }