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); }
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); }