示例#1
0
        private void cmdAddPower_Click(object sender, EventArgs e)
        {
            frmSelectPower frmPickPower = new frmSelectPower(_objCharacter);
            frmPickPower.ShowDialog(this);

            // Make sure the dialogue window was not canceled.
            if (frmPickPower.DialogResult == DialogResult.Cancel)
                return;

            int i = panPowers.Controls.Count;

            Power objPower = new Power(_objCharacter);
            _objCharacter.Powers.Add(objPower);

            PowerControl objPowerControl = new PowerControl();
            objPowerControl.PowerObject = objPower;

            // Attach an EventHandler for the PowerRatingChanged Event.
            objPowerControl.PowerRatingChanged += objPower_PowerRatingChanged;
            objPowerControl.DeletePower += objPower_DeletePower;
            objPowerControl.PowerName = frmPickPower.SelectedPower;
            objPowerControl.PointsPerLevel = frmPickPower.PointsPerLevel;
            objPowerControl.AdeptWayDiscount = frmPickPower.AdeptWayDiscount;
            objPowerControl.LevelEnabled = frmPickPower.LevelEnabled;

			if (frmPickPower.MaxLevels() > 0)
				if (objPower.Name == "Improved Ability (skill)")
				{
					foreach (Skill objSkill in _objCharacter.Skills)
					{
						if (objPower.Extra == objSkill.Name || (objSkill.ExoticSkill && objPower.Extra == (objSkill.DisplayName + " (" + objSkill.Specialization + ")")))
						{
							int intImprovedAbilityMaximum = objSkill.Rating + (objSkill.Rating / 2);
							if (intImprovedAbilityMaximum == 0)
							{
								intImprovedAbilityMaximum = 1;
							}
							objPower.MaxLevels = intImprovedAbilityMaximum;
						}
					}
				}
				else
				{
					objPowerControl.MaxLevels = frmPickPower.MaxLevels();
				}

			// Open the Cyberware XML file and locate the selected piece.
			XmlDocument objXmlDocument = XmlManager.Instance.Load("powers.xml");

            XmlNode objXmlPower = objXmlDocument.SelectSingleNode("/chummer/powers/power[name = \"" + frmPickPower.SelectedPower + "\"]");

            objPower.Source = objXmlPower["source"].InnerText;
            objPower.Page = objXmlPower["page"].InnerText;
            if (objXmlPower["doublecost"] != null)
                objPower.DoubleCost = false;

            if (objXmlPower.InnerXml.Contains("bonus"))
            {
                objPower.Bonus = objXmlPower["bonus"];
                if (!_objImprovementManager.CreateImprovements(Improvement.ImprovementSource.Power, objPower.InternalId, objPower.Bonus, false, Convert.ToInt32(objPower.Rating), objPower.DisplayNameShort))
                {
                    _objCharacter.Powers.Remove(objPower);
                    return;
                }
                objPowerControl.Extra = _objImprovementManager.SelectedValue;
            }

            // Set the control's Maximum.
            objPowerControl.RefreshMaximum(_objCharacter.MAG.TotalValue);
            objPowerControl.Top = i * objPowerControl.Height;
            objPowerControl.RefreshTooltip();
            panPowers.Controls.Add(objPowerControl);

            UpdateCharacterInfo();

            _blnIsDirty = true;
            UpdateWindowTitle();

            if (frmPickPower.AddAgain)
                cmdAddPower_Click(sender, e);
        }
示例#2
0
        private void cmdAddPower_Click(object sender, EventArgs e)
        {
            frmSelectPower frmPickPower = new frmSelectPower(_objCharacter);
            frmPickPower.ShowDialog(this);

            // Make sure the dialogue window was not canceled.
            if (frmPickPower.DialogResult == DialogResult.Cancel)
                return;

            int i = panPowers.Controls.Count;

            // Open the Cyberware XML file and locate the selected piece.
            XmlDocument objXmlDocument = XmlManager.Instance.Load("powers.xml");

            XmlNode objXmlPower = objXmlDocument.SelectSingleNode("/chummer/powers/power[id = \"" + frmPickPower.SelectedPower + "\"]");

            Power objPower = new Power(_objCharacter);
            objPower.Create(objXmlPower, _objCharacter);
            _objCharacter.Powers.Add(objPower);

            PowerControl objPowerControl = new PowerControl();
            objPowerControl.PowerObject = objPower;

            // Attach an EventHandler for the PowerRatingChanged Event.
            objPowerControl.PowerRatingChanged += objPower_PowerRatingChanged;
            objPowerControl.DeletePower += objPower_DeletePower;

            objPower.Source = objXmlPower["source"].InnerText;
            objPower.Page = objXmlPower["page"].InnerText;
            if (objXmlPower["doublecost"] != null)
                objPower.DoubleCost = false;

            // Set the control's Maximum.
            objPowerControl.RefreshMaximum(_objCharacter.MAG.TotalValue);
            objPowerControl.Top = i * objPowerControl.Height;
            objPowerControl.RefreshTooltip();
            panPowers.Controls.Add(objPowerControl);

            UpdateCharacterInfo();

            _blnIsDirty = true;
            UpdateWindowTitle();

            if (frmPickPower.AddAgain)
                cmdAddPower_Click(sender, e);
        }