Example #1
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);
        }