private void cmdAddPower_Click(object sender, EventArgs e) { // Open the Cyberware XML file and locate the selected piece. XmlDocument objXmlDocument = XmlManager.Load("powers.xml"); bool blnAddAgain; do { frmSelectPower frmPickPower = new frmSelectPower(_objCharacter); frmPickPower.ShowDialog(this); // Make sure the dialogue window was not canceled. if (frmPickPower.DialogResult == DialogResult.Cancel) { frmPickPower.Dispose(); break; } blnAddAgain = frmPickPower.AddAgain; Power objPower = new Power(_objCharacter); XmlNode objXmlPower = objXmlDocument.SelectSingleNode("/chummer/powers/power[id = \"" + frmPickPower.SelectedPower + "\"]"); frmPickPower.Dispose(); if (objPower.Create(objXmlPower)) { _objCharacter.Powers.Add(objPower); MakeDirtyWithCharacterUpdate?.Invoke(null, null); } }while (blnAddAgain); }
private async void cmdAddLimitModifier_Click(object sender, EventArgs e) { using (ThreadSafeForm <SelectLimitModifier> frmPickLimitModifier = await ThreadSafeForm <SelectLimitModifier> .GetAsync(() => new SelectLimitModifier(null, "Physical", "Mental", "Social"))) { if (await frmPickLimitModifier.ShowDialogSafeAsync(_objCharacter) == DialogResult.Cancel) { return; } // Create the new limit modifier. LimitModifier objLimitModifier = new LimitModifier(_objCharacter); objLimitModifier.Create(frmPickLimitModifier.MyForm.SelectedName, frmPickLimitModifier.MyForm.SelectedBonus, frmPickLimitModifier.MyForm.SelectedLimitType, frmPickLimitModifier.MyForm.SelectedCondition, true); if (objLimitModifier.InternalId.IsEmptyGuid()) { return; } await _objCharacter.LimitModifiers.AddAsync(objLimitModifier); } MakeDirtyWithCharacterUpdate?.Invoke(this, EventArgs.Empty); }
private void cmdDeleteLimitModifier_Click(object sender, EventArgs e) { if (!(treLimit.SelectedNode?.Tag is ICanRemove selectedObject)) { return; } if (!selectedObject.Remove(_objCharacter.Options.ConfirmDelete)) { return; } MakeDirtyWithCharacterUpdate?.Invoke(null, null); }
private void cmdDeleteLimitModifier_Click(object sender, EventArgs e) { if (!(treLimit.SelectedNode?.Tag is ICanRemove selectedObject)) { return; } if (!selectedObject.Remove()) { return; } MakeDirtyWithCharacterUpdate?.Invoke(this, EventArgs.Empty); }
/// <summary> /// Edit and update a Limit Modifier. /// </summary> protected async ValueTask UpdateLimitModifier() { TreeNode objSelectedNode = await treLimit.DoThreadSafeFuncAsync(x => x.SelectedNode); if (objSelectedNode == null || objSelectedNode.Level <= 0) { return; } string strGuid = (objSelectedNode.Tag as IHasInternalId)?.InternalId ?? string.Empty; if (string.IsNullOrEmpty(strGuid) || strGuid.IsEmptyGuid()) { return; } LimitModifier objLimitModifier = _objCharacter.LimitModifiers.FindById(strGuid); //If the LimitModifier couldn't be found (Ie it comes from an Improvement or the user hasn't properly selected a treenode, fail out early. if (objLimitModifier == null) { Program.ShowMessageBox(await LanguageManager.GetStringAsync("Warning_NoLimitFound")); return; } using (ThreadSafeForm <SelectLimitModifier> frmPickLimitModifier = await ThreadSafeForm <SelectLimitModifier> .GetAsync(() => new SelectLimitModifier(objLimitModifier, "Physical", "Mental", "Social"))) { if (await frmPickLimitModifier.ShowDialogSafeAsync(_objCharacter) == DialogResult.Cancel) { return; } //Remove the old LimitModifier to ensure we don't double up. await _objCharacter.LimitModifiers.RemoveAsync(objLimitModifier); // Create the new limit modifier. objLimitModifier = new LimitModifier(_objCharacter, strGuid); objLimitModifier.Create(frmPickLimitModifier.MyForm.SelectedName, frmPickLimitModifier.MyForm.SelectedBonus, frmPickLimitModifier.MyForm.SelectedLimitType, frmPickLimitModifier.MyForm.SelectedCondition, true); await _objCharacter.LimitModifiers.AddAsync(objLimitModifier); } MakeDirtyWithCharacterUpdate?.Invoke(this, EventArgs.Empty); }
/// <summary> /// Edit and update a Limit Modifier. /// </summary> protected void UpdateLimitModifier() { if (treLimit.SelectedNode.Level <= 0) { return; } TreeNode objSelectedNode = treLimit.SelectedNode; string strGuid = (objSelectedNode?.Tag as IHasInternalId)?.InternalId ?? string.Empty; if (string.IsNullOrEmpty(strGuid) || strGuid.IsEmptyGuid()) { return; } LimitModifier objLimitModifier = _objCharacter.LimitModifiers.FindById(strGuid); //If the LimitModifier couldn't be found (Ie it comes from an Improvement or the user hasn't properly selected a treenode, fail out early. if (objLimitModifier == null) { Program.MainForm.ShowMessageBox(LanguageManager.GetString("Warning_NoLimitFound")); return; } using (frmSelectLimitModifier frmPickLimitModifier = new frmSelectLimitModifier(objLimitModifier, "Physical", "Mental", "Social")) { frmPickLimitModifier.ShowDialog(this); if (frmPickLimitModifier.DialogResult == DialogResult.Cancel) { return; } //Remove the old LimitModifier to ensure we don't double up. _objCharacter.LimitModifiers.Remove(objLimitModifier); // Create the new limit modifier. objLimitModifier = new LimitModifier(_objCharacter, strGuid); objLimitModifier.Create(frmPickLimitModifier.SelectedName, frmPickLimitModifier.SelectedBonus, frmPickLimitModifier.SelectedLimitType, frmPickLimitModifier.SelectedCondition, true); _objCharacter.LimitModifiers.Add(objLimitModifier); } MakeDirtyWithCharacterUpdate?.Invoke(null, null); }
private void cmdAddLimitModifier_Click(object sender, EventArgs e) { frmSelectLimitModifier frmPickLimitModifier = new frmSelectLimitModifier(null, "Physical", "Mental", "Social"); frmPickLimitModifier.ShowDialog(this); if (frmPickLimitModifier.DialogResult == DialogResult.Cancel) { return; } // Create the new limit modifier. LimitModifier objLimitModifier = new LimitModifier(_objCharacter); objLimitModifier.Create(frmPickLimitModifier.SelectedName, frmPickLimitModifier.SelectedBonus, frmPickLimitModifier.SelectedLimitType, frmPickLimitModifier.SelectedCondition); if (objLimitModifier.InternalId.IsEmptyGuid()) { return; } _objCharacter.LimitModifiers.Add(objLimitModifier); MakeDirtyWithCharacterUpdate?.Invoke(null, null); }
private void ChildPropertyChanged(object sender, PropertyChangedEventArgs e) { MakeDirtyWithCharacterUpdate?.Invoke(sender, e); }