void UpdateItemDropLabel() { uint unit_id = (uint)this.B0.Value; uint class_id = (uint)this.B1.Value; if (unit_id > 0) { unit_id--; } uint unit_addr = UnitForm.GetUnitAddr(unit_id); uint class_addr = ClassForm.GetClassAddr(class_id); bool isItemDrop = IsItemDropFlag(unit_addr) || IsItemDropFlag(class_addr); if (isItemDrop) {//アイテムドロップ X_ITEMDROP.Text = R._("アイテムドロップ: ドロップする"); X_ITEMDROP.ForeColor = OptionForm.Color_ControlComment_ForeColor(); } else { X_ITEMDROP.Text = R._("アイテムドロップ: ドロップしない"); X_ITEMDROP.ForeColor = OptionForm.Color_Control_ForeColor(); } }
private void IndependenceButton_Click(object sender, EventArgs e) { if (this.CLASS_LISTBOX.SelectedIndex < 0) { return; } uint classid = (uint)U.atoh(this.CLASS_LISTBOX.Text); uint classaddr = ClassForm.GetClassAddr(classid); string name = U.ToHexString(classid) + " " + ClassForm.GetClassNameLow(classaddr); uint pointer; uint currentP = ClassForm.GetBattleAnimeAddrWhereID(classid, out pointer); if (!U.isSafetyOffset(currentP)) { return; } Undo.UndoData undodata = Program.Undo.NewUndoData(this, this.Name + " Independence"); uint dataSize = (InputFormRef.DataCount + 1) * InputFormRef.BlockSize; PatchUtil.WriteIndependence(currentP, dataSize, pointer, name, undodata); Program.Undo.Push(undodata); InputFormRef.ShowWriteNotifyAnimation(this, currentP); U.ReSelectList(this.CLASS_LISTBOX); }
private void IndependenceButton_Click(object sender, EventArgs e) { if (this.AddressList.SelectedIndex < 0) { return; } uint classid = (uint)U.atoh(this.AddressList.Text); uint classaddr = ClassForm.GetClassAddr(classid); string name = U.ToHexString(classid) + " " + ClassForm.GetClassNameLow(classaddr); uint p = InputFormRef.SelectToAddr(this.AddressList); uint setting = ClassForm.GetMoveCostPointerAddrLow(classaddr, (uint)this.FilterComboBox.SelectedIndex); if (setting == U.NOT_FOUND) { return; } Undo.UndoData undodata = Program.Undo.NewUndoData(this, "MoveCost Independence"); PatchUtil.WriteIndependence(p, 68, setting, name, undodata); Program.Undo.Push(undodata); InputFormRef.ShowWriteNotifyAnimation(this, p); this.ReloadListButton.PerformClick(); this.InputFormRef.JumpTo(classid); }
private void WriteButton_Click(object sender, EventArgs e) { if (!X_CC3Patch.Visible) { return; } //CC3分岐パッチが導入されている場合 uint class_id = (uint)this.AddressList.SelectedIndex; if (class_id >= this.InputFormRef.DataCount) { return; } uint classAddr = ClassForm.GetClassAddr(class_id); if (classAddr == U.NOT_FOUND) { return; } Undo.UndoData undodata = Program.Undo.NewUndoData(this); Program.ROM.write_u8(classAddr + 5, (uint)X_CC3.Value, undodata); Program.Undo.Push(undodata); }
private void IndependenceButton_Click(object sender, EventArgs e) { if (this.AddressList.SelectedIndex < 0) { return; } uint classid = (uint)U.atoh(this.AddressList.Text); uint classaddr = ClassForm.GetClassAddr(classid); string name = U.ToHexString(classid) + " " + ClassForm.GetClassNameLow(classaddr); uint setting = this.AssignLevelUpBaseAddress + (classid * 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(classid); }
private void AddressList_SelectedIndexChanged(object sender, EventArgs e) { List <U.AddrResult> list = this.InputFormRef.MakeList(); uint class_id = (uint)this.AddressList.SelectedIndex; if (class_id >= this.InputFormRef.DataCount) { return; } //選択しているクラス名. X_SELECT_CLASS.Text = ClassForm.GetClassName(class_id); //このクラスにCCできるクラスを探す. CLASS_LISTBOX.BeginUpdate(); CLASS_LISTBOX.Items.Clear(); if (class_id >= 1) { for (int i = 0; i < list.Count; i++) { uint cc_class1 = Program.ROM.u8(list[i].addr + 0); uint cc_class2 = Program.ROM.u8(list[i].addr + 1); if (cc_class1 == class_id || cc_class2 == class_id) { string name = U.ToHexString(i) + " " + ClassForm.GetClassName((uint)i); CLASS_LISTBOX.Items.Add(name); } } } CLASS_LISTBOX.EndUpdate(); if (X_CC3Patch.Visible) {//CC3分岐パッチが導入されている場合 uint classAddr = ClassForm.GetClassAddr(class_id); if (classAddr == U.NOT_FOUND) { U.ForceUpdate(X_CC3, 0); } else { uint cc_class3 = Program.ROM.u8(classAddr + 5); U.ForceUpdate(X_CC3, (int)cc_class3); } } }