コード例 #1
0
        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();
            }
        }