private void cmdAddArmor_Click(object sender, EventArgs e) { frmSelectArmor frmPickArmor = new frmSelectArmor(_objCharacter); frmPickArmor.ShowDialog(this); // Make sure the dialogue window was not canceled. if (frmPickArmor.DialogResult == DialogResult.Cancel) return; // Open the Armor XML file and locate the selected piece. XmlDocument objXmlDocument = XmlManager.Instance.Load("armor.xml"); XmlNode objXmlArmor = objXmlDocument.SelectSingleNode("/chummer/armors/armor[name = \"" + frmPickArmor.SelectedArmor + "\"]"); TreeNode objNode = new TreeNode(); Armor objArmor = new Armor(_objCharacter); objArmor.Create(objXmlArmor, objNode, cmsArmorMod, frmPickArmor.Rating); if (objArmor.InternalId == Guid.Empty.ToString()) return; _objCharacter.Armor.Add(objArmor); objNode.ContextMenuStrip = cmsArmor; treArmor.Nodes[0].Nodes.Add(objNode); treArmor.Nodes[0].Expand(); treArmor.SelectedNode = objNode; UpdateCharacterInfo(); _blnIsDirty = true; UpdateWindowTitle(); if (frmPickArmor.AddAgain) cmdAddArmor_Click(sender, e); }
private void cmdAddArmor_Click(object sender, EventArgs e) { frmSelectArmor frmPickArmor = new frmSelectArmor(_objCharacter, true); frmPickArmor.ShowDialog(this); // Make sure the dialogue window was not canceled. if (frmPickArmor.DialogResult == DialogResult.Cancel) return; // Open the Armor XML file and locate the selected piece. XmlDocument objXmlDocument = XmlManager.Instance.Load("armor.xml"); XmlNode objXmlArmor = objXmlDocument.SelectSingleNode("/chummer/armors/armor[name = \"" + frmPickArmor.SelectedArmor + "\"]"); TreeNode objNode = new TreeNode(); Armor objArmor = new Armor(_objCharacter); objArmor.Create(objXmlArmor, objNode, cmsArmorMod); if (objArmor.InternalId == Guid.Empty.ToString()) return; int intCost = objArmor.TotalCost; // Apply a markup if applicable. if (frmPickArmor.Markup != 0) { double dblCost = Convert.ToDouble(intCost, GlobalOptions.Instance.CultureInfo); dblCost *= 1 + (Convert.ToDouble(frmPickArmor.Markup, GlobalOptions.Instance.CultureInfo) / 100.0); intCost = Convert.ToInt32(dblCost); } // Multiply the cost if applicable. if (objArmor.TotalAvail.EndsWith(LanguageManager.Instance.GetString("String_AvailRestricted")) && _objOptions.MultiplyRestrictedCost) intCost *= _objOptions.RestrictedCostMultiplier; if (objArmor.TotalAvail.EndsWith(LanguageManager.Instance.GetString("String_AvailForbidden")) && _objOptions.MultiplyForbiddenCost) intCost *= _objOptions.ForbiddenCostMultiplier; // Check the item's Cost and make sure the character can afford it. if (!frmPickArmor.FreeCost) { if (intCost > _objCharacter.Nuyen) { MessageBox.Show(LanguageManager.Instance.GetString("Message_NotEnoughNuyen"), LanguageManager.Instance.GetString("MessageTitle_NotEnoughNuyen"), MessageBoxButtons.OK, MessageBoxIcon.Information); // Remove the Improvements created by the Armor. _objImprovementManager.RemoveImprovements(Improvement.ImprovementSource.Armor, objArmor.InternalId); if (frmPickArmor.AddAgain) cmdAddArmor_Click(sender, e); return; } else { // Create the Expense Log Entry. ExpenseLogEntry objExpense = new ExpenseLogEntry(); objExpense.Create(intCost * -1, LanguageManager.Instance.GetString("String_ExpensePurchaseArmor") + " " + objArmor.DisplayNameShort, ExpenseType.Nuyen, DateTime.Now); _objCharacter.ExpenseEntries.Add(objExpense); _objCharacter.Nuyen -= intCost; ExpenseUndo objUndo = new ExpenseUndo(); objUndo.CreateNuyen(NuyenExpenseType.AddArmor, objArmor.InternalId); objExpense.Undo = objUndo; } } _objCharacter.Armor.Add(objArmor); objNode.ContextMenuStrip = cmsArmor; treArmor.Nodes[0].Nodes.Add(objNode); treArmor.Nodes[0].Expand(); treArmor.SelectedNode = objNode; UpdateCharacterInfo(); _blnIsDirty = true; UpdateWindowTitle(); if (frmPickArmor.AddAgain) cmdAddArmor_Click(sender, e); }