private void IndependenceButton_Click(object sender, EventArgs e) { if (this.AddressList.SelectedIndex < 0) { return; } uint unitid = (uint)U.atoh(this.AddressList.Text); uint unitaddr = UnitForm.GetUnitAddr(unitid); string name = U.ToHexString(unitid) + " " + UnitForm.GetUnitNameByAddr(unitaddr); uint setting = this.AssignLevelUpBaseAddress + (unitid * 4); if (!U.isSafetyOffset(setting)) { return; } uint p = Program.ROM.p32(setting); if (!U.isSafetyOffset(p)) { return; } if (N1_InputFormRef.BaseAddress != p) { return; } if (N1_InputFormRef.DataCount == 0) { DialogResult dr = R.ShowNoYes("リストが0件です。\r\n空のリストを分離させても意味がないのですが、それでも分離独立させますか?"); if (dr != DialogResult.Yes) { return; } } Undo.UndoData undodata = Program.Undo.NewUndoData(this, this.Name + " Independence"); uint dataSize = (N1_InputFormRef.DataCount + 1) * N1_InputFormRef.BlockSize; PatchUtil.WriteIndependence(p, dataSize, setting, name, undodata); Program.Undo.Push(undodata); InputFormRef.ShowWriteNotifyAnimation(this, p); this.ReloadListButton.PerformClick(); this.InputFormRef.JumpTo(unitid); }