private void BuildWeaponList(XmlNodeList objNodeList) { if (tabControl.SelectedIndex == 1) { DataTable tabWeapons = new DataTable("weapons"); tabWeapons.Columns.Add("WeaponGuid"); tabWeapons.Columns.Add("WeaponName"); tabWeapons.Columns.Add("Dice"); tabWeapons.Columns.Add("Accuracy"); tabWeapons.Columns["Accuracy"].DataType = typeof(Int32); tabWeapons.Columns.Add("Damage"); tabWeapons.Columns.Add("AP"); tabWeapons.Columns.Add("RC"); tabWeapons.Columns["RC"].DataType = typeof(Int32); tabWeapons.Columns.Add("Ammo"); tabWeapons.Columns.Add("Mode"); tabWeapons.Columns.Add("Reach"); tabWeapons.Columns.Add("Accessories"); tabWeapons.Columns.Add("Avail"); tabWeapons.Columns.Add("Source"); tabWeapons.Columns.Add("Cost"); tabWeapons.Columns["Cost"].DataType = typeof(Int32); foreach (XmlNode objXmlWeapon in objNodeList) { bool blnHide = objXmlWeapon["cyberware"]?.InnerText == "yes" || objXmlWeapon["hide"]?.InnerText == "yes"; if (objXmlWeapon["mount"] != null && !blnHide) { blnHide = !Mounts.Contains(objXmlWeapon["mount"].InnerText); } if (objXmlWeapon["extramount"] != null && !blnHide) { blnHide = !Mounts.Contains(objXmlWeapon["extramount"].InnerText); } if (!blnHide && !Backend.Shared_Methods.SelectionShared.CheckAvailRestriction(objXmlWeapon, _objCharacter, chkHideOverAvailLimit.Checked)) { continue; } if (!blnHide) { TreeNode objNode = new TreeNode(); Weapon objWeapon = new Weapon(_objCharacter); objWeapon.Create(objXmlWeapon, _objCharacter, objNode, null, null); string strID = objWeapon.SourceID.ToString(); string strWeaponName = objWeapon.DisplayName; string strDice = objWeapon.DicePool; int intAccuracy = Convert.ToInt32(objWeapon.TotalAccuracy); string strDamage = objWeapon.CalculatedDamage(_objCharacter.STR.Augmented); string strAP = objWeapon.TotalAP; if (strAP == "-") { strAP = "0"; } int intRC; int.TryParse(objWeapon.TotalRC, out intRC); string strAmmo = objWeapon.Ammo; string strMode = objWeapon.Mode; string strReach = objWeapon.TotalReach.ToString(); string strAccessories = string.Empty; foreach (WeaponAccessory objAccessory in objWeapon.WeaponAccessories) { if (strAccessories.Length > 0) { strAccessories += "\n"; } strAccessories += objAccessory.DisplayName; } string strAvail = objWeapon.TotalAvail; string strSource = objWeapon.Source + " " + objWeapon.Page; int intCost = objWeapon.Cost; tabWeapons.Rows.Add(strID, strWeaponName, strDice, intAccuracy, strDamage, strAP, intRC, strAmmo, strMode, strReach, strAccessories, strAvail, strSource, intCost); } } DataSet set = new DataSet("weapons"); set.Tables.Add(tabWeapons); if (cboCategory.SelectedValue == null || cboCategory.SelectedValue.ToString() == "Show All") { dgvWeapons.Columns[5].Visible = true; dgvWeapons.Columns[6].Visible = true; dgvWeapons.Columns[7].Visible = true; dgvWeapons.Columns[8].Visible = true; } else if (cboCategory.SelectedValue.ToString() == "Blades" || cboCategory.SelectedValue.ToString() == "Clubs" || cboCategory.SelectedValue.ToString() == "Improvised Weapons" || cboCategory.SelectedValue.ToString() == "Exotic Melee Weapons" || cboCategory.SelectedValue.ToString() == "Unarmed") { dgvWeapons.Columns[5].Visible = false; dgvWeapons.Columns[6].Visible = false; dgvWeapons.Columns[7].Visible = false; dgvWeapons.Columns[8].Visible = true; } else { dgvWeapons.Columns[5].Visible = true; dgvWeapons.Columns[6].Visible = true; dgvWeapons.Columns[7].Visible = true; dgvWeapons.Columns[8].Visible = false; } dgvWeapons.Columns[0].Visible = false; dgvWeapons.Columns[12].DefaultCellStyle.Alignment = DataGridViewContentAlignment.TopRight; dgvWeapons.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; dgvWeapons.DataSource = set; dgvWeapons.DataMember = "weapons"; } else { List <ListItem> lstWeapons = new List <ListItem>(); foreach (XmlNode objXmlWeapon in objNodeList) { bool blnHide = objXmlWeapon["cyberware"]?.InnerText == "yes" || objXmlWeapon["hide"]?.InnerText == "yes"; if (objXmlWeapon["mount"] != null && !blnHide) { blnHide = !Mounts.Contains(objXmlWeapon["mount"].InnerText); } if (objXmlWeapon["extramount"] != null && !blnHide) { blnHide = !Mounts.Contains(objXmlWeapon["extramount"].InnerText); } if (!blnHide && !Backend.Shared_Methods.SelectionShared.CheckAvailRestriction(objXmlWeapon, _objCharacter, chkHideOverAvailLimit.Checked)) { continue; } if (!Backend.Shared_Methods.SelectionShared.CheckAvailRestriction(objXmlWeapon, _objCharacter, chkHideOverAvailLimit.Checked)) { continue; } if (blnHide) { continue; } ListItem objItem = new ListItem { Value = objXmlWeapon["id"]?.InnerText, Name = objXmlWeapon["translate"]?.InnerText ?? objXmlWeapon["name"]?.InnerText }; lstWeapons.Add(objItem); } SortListItem objSort = new SortListItem(); lstWeapons.Sort(objSort.Compare); lstWeapon.BeginUpdate(); lstWeapon.DataSource = null; lstWeapon.ValueMember = "Value"; lstWeapon.DisplayMember = "Name"; lstWeapon.DataSource = lstWeapons; lstWeapon.EndUpdate(); } }