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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
 }
Пример #4
0
 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);
 }
Пример #5
0
        /// <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);
        }
Пример #6
0
        /// <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);
        }
Пример #8
0
 private void ChildPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     MakeDirtyWithCharacterUpdate?.Invoke(sender, e);
 }