private void CreateButton_Click(object sender, EventArgs e) { Repoint repoint = Prompt.ShowRepointCreateDialog(); Program.Core.FEH.Point.Add(repoint); if (repoint.CurrentAddress != repoint.DefaultAddress) { Core.Repoint(this, repoint.CurrentAddress, repoint.CurrentAddress, repoint.AssetName + " repoint"); } Core_Update(); }
/// <summary> /// Returns the current pointer to the asset whose name matches the one given /// </summary> public static Repoint GetRepoint(string asset) { Repoint result = Program.Core.FEH.Point.Get(asset); if (result == null) { throw new Exception("Couldn't find pointer with asset name: " + asset); } else { return(result); } }
void Update_EditPanel(Repoint selection) { if (selection == null) { ReferenceListBox.DataSource = null; Repoint_NameTextBox.Text = ""; Repoint_DefaultPointerBox.Value = new Pointer(); Repoint_CurrentPointerBox.Value = new Pointer(); } else { ReferenceListBox.DataSource = selection.References; Repoint_NameTextBox.Text = selection.AssetName; Repoint_DefaultPointerBox.Value = selection.DefaultAddress; Repoint_CurrentPointerBox.Value = selection.CurrentAddress; } }
private void RepointButton_Click(object sender, EventArgs e) { if (PointerDataGrid.SelectedRows.Count == 0) { Program.ShowMessage("There is no pointer selected."); } else if (PointerDataGrid.SelectedRows.Count == 1) { Repoint asset = Program.Core.FEH.Point.Get((string)PointerDataGrid.CurrentRow.Cells[0].Value); asset.AssetName = Repoint_NameTextBox.Text; Core.Repoint(this, asset.CurrentAddress, Repoint_CurrentPointerBox.Value, asset.AssetName + " repointed"); } else { Program.ShowMessage("You cannot modify several asset pointers at once."); } Core_Update(); }
/// <summary> /// Replaces any occurence of the 'original' pointer found in the ROM /// </summary> public static void Repoint(Editor sender, Pointer original, Pointer repoint, string description = "") { if (original == repoint) { return; } Repoint pointer = Program.Core.FEH.Point.Get(original); if (pointer == null) { throw new Exception("Couldn't find any FEH Repoint of address: " + original); } pointer.UpdateReferences(); for (int i = 0; i < pointer.References.Length; i++) { Core.WritePointer(sender, pointer.References[i], repoint, description); } pointer.CurrentAddress = repoint; pointer.UpdateReferences(); }
/// <summary> /// Shows a prompt asking to create a FEH Repoint tracker and returns that /// </summary> public static Repoint ShowRepointCreateDialog(string assetName = "") { CreateRepointDialog dialog = new CreateRepointDialog(); if (assetName.Length != 0) { dialog.AssetName = assetName; } if (dialog.ShowDialog() == DialogResult.OK) { Repoint repoint = new Repoint(dialog.AssetName, dialog.DefaultAddress); if (dialog.RepointAddress != new Pointer() && dialog.RepointAddress != dialog.DefaultAddress) { repoint.CurrentAddress = dialog.RepointAddress; } return(repoint); } else { return(null); } }
/// <summary> /// Adds a repoint tracker for a pointer in the ROM to the list /// </summary> /// <param name="repoint"></param> public void Add(Repoint repoint) { Repoints.Add(repoint); }