示例#1
0
 /// <summary>
 /// Get the total value of a Matrix attribute of this gear after children and Overclocker
 /// </summary>
 public static int GetTotalMatrixAttribute(this IHasMatrixAttributes objThis, string strAttributeName)
 {
     if (objThis == null)
     {
         return(0);
     }
     return(objThis.GetBaseMatrixAttribute(strAttributeName) + objThis.GetBonusMatrixAttribute(strAttributeName));
 }
示例#2
0
        /// <summary>
        /// If this item has an attribute array, refresh it.
        /// </summary>
        /// <param name="objThis"></param>
        public static void RefreshMatrixAttributeArray(this IHasMatrixAttributes objThis)
        {
            if (objThis == null)
            {
                return;
            }
            if (!objThis.CanSwapAttributes)
            {
                return;
            }
            int        intBaseAttack   = objThis.GetBaseMatrixAttribute("Attack");
            int        intBaseSleaze   = objThis.GetBaseMatrixAttribute("Sleaze");
            int        intBaseDP       = objThis.GetBaseMatrixAttribute("Data Processing");
            int        intBaseFirewall = objThis.GetBaseMatrixAttribute("Firewall");
            List <int> lstStatsArray   = new List <int>(4)
            {
                intBaseAttack,
                intBaseSleaze,
                intBaseDP,
                intBaseFirewall
            };

            lstStatsArray.Sort();
            lstStatsArray.Reverse();

            string[] strCyberdeckArray = objThis.AttributeArray.Split(',');
            foreach (IHasMatrixAttributes objChild in objThis.ChildrenWithMatrixAttributes)
            {
                string strLoopArrayText = objChild.ModAttributeArray;
                if (!string.IsNullOrEmpty(strLoopArrayText))
                {
                    string[] strLoopArray = strLoopArrayText.Split(',');
                    for (int i = 0; i < 4; ++i)
                    {
                        strCyberdeckArray[i] += "+(" + strLoopArray[i] + ')';
                    }
                }
            }
            for (int i = 0; i < 4; ++i)
            {
                if (intBaseAttack == lstStatsArray[i])
                {
                    objThis.Attack   = strCyberdeckArray[i];
                    lstStatsArray[i] = int.MinValue;
                    break;
                }
            }
            for (int i = 0; i < 4; ++i)
            {
                if (intBaseSleaze == lstStatsArray[i])
                {
                    objThis.Sleaze   = strCyberdeckArray[i];
                    lstStatsArray[i] = int.MinValue;
                    break;
                }
            }
            for (int i = 0; i < 4; ++i)
            {
                if (intBaseDP == lstStatsArray[i])
                {
                    objThis.DataProcessing = strCyberdeckArray[i];
                    lstStatsArray[i]       = int.MinValue;
                    break;
                }
            }
            for (int i = 0; i < 4; ++i)
            {
                if (intBaseFirewall == lstStatsArray[i])
                {
                    objThis.Firewall = strCyberdeckArray[i];
                    break;
                }
            }
        }
示例#3
0
        /// <summary>
        /// Refreshes a set of ComboBoxes corresponding to Matrix attributes
        /// </summary>
        public static void RefreshMatrixAttributeCBOs(this IHasMatrixAttributes objThis, ComboBox cboAttack, ComboBox cboSleaze, ComboBox cboDP, ComboBox cboFirewall)
        {
            if (objThis == null)
            {
                return;
            }
            if (cboAttack == null)
            {
                throw new ArgumentNullException(nameof(cboAttack));
            }
            if (cboSleaze == null)
            {
                throw new ArgumentNullException(nameof(cboSleaze));
            }
            if (cboDP == null)
            {
                throw new ArgumentNullException(nameof(cboDP));
            }
            if (cboFirewall == null)
            {
                throw new ArgumentNullException(nameof(cboFirewall));
            }

            int intBaseAttack    = objThis.GetBaseMatrixAttribute("Attack");
            int intBaseSleaze    = objThis.GetBaseMatrixAttribute("Sleaze");
            int intBaseDP        = objThis.GetBaseMatrixAttribute("Data Processing");
            int intBaseFirewall  = objThis.GetBaseMatrixAttribute("Firewall");
            int intBonusAttack   = objThis.GetBonusMatrixAttribute("Attack");
            int intBonusSleaze   = objThis.GetBonusMatrixAttribute("Sleaze");
            int intBonusDP       = objThis.GetBonusMatrixAttribute("Data Processing");
            int intBonusFirewall = objThis.GetBonusMatrixAttribute("Firewall");

            cboAttack.SuspendLayout();
            cboSleaze.SuspendLayout();
            cboDP.SuspendLayout();
            cboFirewall.SuspendLayout();
            cboAttack.BeginUpdate();
            cboSleaze.BeginUpdate();
            cboDP.BeginUpdate();
            cboFirewall.BeginUpdate();

            cboAttack.Enabled        = false;
            cboAttack.BindingContext = new BindingContext();
            cboAttack.DataSource     = new List <string>(4)
            {
                (intBaseAttack + intBonusAttack).ToString(GlobalOptions.InvariantCultureInfo), (intBaseSleaze + intBonusAttack).ToString(GlobalOptions.InvariantCultureInfo), (intBaseDP + intBonusAttack).ToString(GlobalOptions.InvariantCultureInfo), (intBaseFirewall + intBonusAttack).ToString(GlobalOptions.InvariantCultureInfo)
            };
            cboAttack.SelectedIndex = 0;
            cboAttack.Visible       = true;
            cboAttack.Enabled       = objThis.CanSwapAttributes;

            cboSleaze.Enabled        = false;
            cboSleaze.BindingContext = new BindingContext();
            cboSleaze.DataSource     = new List <string>(4)
            {
                (intBaseAttack + intBonusSleaze).ToString(GlobalOptions.InvariantCultureInfo), (intBaseSleaze + intBonusSleaze).ToString(GlobalOptions.InvariantCultureInfo), (intBaseDP + intBonusSleaze).ToString(GlobalOptions.InvariantCultureInfo), (intBaseFirewall + intBonusSleaze).ToString(GlobalOptions.InvariantCultureInfo)
            };
            cboSleaze.SelectedIndex = 1;
            cboSleaze.Visible       = true;
            cboSleaze.Enabled       = objThis.CanSwapAttributes;

            cboDP.Enabled        = false;
            cboDP.BindingContext = new BindingContext();
            cboDP.DataSource     = new List <string>(4)
            {
                (intBaseAttack + intBonusDP).ToString(GlobalOptions.InvariantCultureInfo), (intBaseSleaze + intBonusDP).ToString(GlobalOptions.InvariantCultureInfo), (intBaseDP + intBonusDP).ToString(GlobalOptions.InvariantCultureInfo), (intBaseFirewall + intBonusDP).ToString(GlobalOptions.InvariantCultureInfo)
            };
            cboDP.SelectedIndex = 2;
            cboDP.Visible       = true;
            cboDP.Enabled       = objThis.CanSwapAttributes;

            cboFirewall.Enabled        = false;
            cboFirewall.BindingContext = new BindingContext();
            cboFirewall.DataSource     = new List <string>(4)
            {
                (intBaseAttack + intBonusFirewall).ToString(GlobalOptions.InvariantCultureInfo), (intBaseSleaze + intBonusFirewall).ToString(GlobalOptions.InvariantCultureInfo), (intBaseDP + intBonusFirewall).ToString(GlobalOptions.InvariantCultureInfo), (intBaseFirewall + intBonusFirewall).ToString(GlobalOptions.InvariantCultureInfo)
            };
            cboFirewall.SelectedIndex = 3;
            cboFirewall.Visible       = true;
            cboFirewall.Enabled       = objThis.CanSwapAttributes;

            cboAttack.EndUpdate();
            cboSleaze.EndUpdate();
            cboDP.EndUpdate();
            cboFirewall.EndUpdate();
            cboAttack.ResumeLayout();
            cboSleaze.ResumeLayout();
            cboDP.ResumeLayout();
            cboFirewall.ResumeLayout();
        }
示例#4
0
        /// <summary>
        /// Refreshes a set of ComboBoxes corresponding to Matrix attributes
        /// </summary>
        public static void RefreshMatrixAttributeCBOs(this IHasMatrixAttributes objThis, ComboBox cboAttack, ComboBox cboSleaze, ComboBox cboDP, ComboBox cboFirewall)
        {
            if (objThis == null)
            {
                return;
            }

            int intBaseAttack    = objThis.GetBaseMatrixAttribute("Attack");
            int intBaseSleaze    = objThis.GetBaseMatrixAttribute("Sleaze");
            int intBaseDP        = objThis.GetBaseMatrixAttribute("Data Processing");
            int intBaseFirewall  = objThis.GetBaseMatrixAttribute("Firewall");
            int intBonusAttack   = objThis.GetBonusMatrixAttribute("Attack");
            int intBonusSleaze   = objThis.GetBonusMatrixAttribute("Sleaze");
            int intBonusDP       = objThis.GetBonusMatrixAttribute("Data Processing");
            int intBonusFirewall = objThis.GetBonusMatrixAttribute("Firewall");

            cboAttack.BeginUpdate();
            cboSleaze.BeginUpdate();
            cboDP.BeginUpdate();
            cboFirewall.BeginUpdate();

            cboAttack.Enabled        = false;
            cboAttack.BindingContext = new BindingContext();
            cboAttack.ValueMember    = "Value";
            cboAttack.DisplayMember  = "Name";
            cboAttack.DataSource     = new List <string>()
            {
                (intBaseAttack + intBonusAttack).ToString(), (intBaseSleaze + intBonusAttack).ToString(), (intBaseDP + intBonusAttack).ToString(), (intBaseFirewall + intBonusAttack).ToString()
            };
            cboAttack.SelectedIndex = 0;
            cboAttack.Visible       = true;
            cboAttack.Enabled       = objThis.CanSwapAttributes;

            cboSleaze.Enabled        = false;
            cboSleaze.BindingContext = new BindingContext();
            cboSleaze.ValueMember    = "Value";
            cboSleaze.DisplayMember  = "Name";
            cboSleaze.DataSource     = new List <string>()
            {
                (intBaseAttack + intBonusSleaze).ToString(), (intBaseSleaze + intBonusSleaze).ToString(), (intBaseDP + intBonusSleaze).ToString(), (intBaseFirewall + intBonusSleaze).ToString()
            };
            cboSleaze.SelectedIndex = 1;
            cboSleaze.Visible       = true;
            cboSleaze.Enabled       = objThis.CanSwapAttributes;

            cboDP.Enabled        = false;
            cboDP.BindingContext = new BindingContext();
            cboDP.ValueMember    = "Value";
            cboDP.DisplayMember  = "Name";
            cboDP.DataSource     = new List <string>()
            {
                (intBaseAttack + intBonusDP).ToString(), (intBaseSleaze + intBonusDP).ToString(), (intBaseDP + intBonusDP).ToString(), (intBaseFirewall + intBonusDP).ToString()
            };
            cboDP.SelectedIndex = 2;
            cboDP.Visible       = true;
            cboDP.Enabled       = objThis.CanSwapAttributes;

            cboFirewall.Enabled        = false;
            cboFirewall.BindingContext = new BindingContext();
            cboFirewall.ValueMember    = "Value";
            cboFirewall.DisplayMember  = "Name";
            cboFirewall.DataSource     = new List <string>()
            {
                (intBaseAttack + intBonusFirewall).ToString(), (intBaseSleaze + intBonusFirewall).ToString(), (intBaseDP + intBonusFirewall).ToString(), (intBaseFirewall + intBonusFirewall).ToString()
            };
            cboFirewall.SelectedIndex = 3;
            cboFirewall.Visible       = true;
            cboFirewall.Enabled       = objThis.CanSwapAttributes;

            cboAttack.EndUpdate();
            cboSleaze.EndUpdate();
            cboDP.EndUpdate();
            cboFirewall.EndUpdate();
        }
示例#5
0
        /// <summary>
        /// If this item has an attribute array, refresh it.
        /// </summary>
        /// <param name="objThis"></param>
        public static void RefreshMatrixAttributeArray(this IHasMatrixAttributes objThis)
        {
            if (objThis == null)
            {
                return;
            }
            if (!objThis.CanSwapAttributes)
            {
                return;
            }
            int        intBaseAttack         = objThis.GetBaseMatrixAttribute("Attack");
            int        intBaseSleaze         = objThis.GetBaseMatrixAttribute("Sleaze");
            int        intBaseDataProcessing = objThis.GetBaseMatrixAttribute("Data Processing");
            int        intBaseFirewall       = objThis.GetBaseMatrixAttribute("Firewall");
            List <int> lstStatsArray         = new List <int>(4)
            {
                intBaseAttack,
                intBaseSleaze,
                intBaseDataProcessing,
                intBaseFirewall
            };

            lstStatsArray.Sort();
            lstStatsArray.Reverse();

            string[] strCyberdeckArray = objThis.AttributeArray.Split(',');
            using (new FetchSafelyFromPool <StringBuilder>(Utils.StringBuilderPool,
                                                           out StringBuilder sbdCyberdeckArray0))
                using (new FetchSafelyFromPool <StringBuilder>(Utils.StringBuilderPool,
                                                               out StringBuilder sbdCyberdeckArray1))
                    using (new FetchSafelyFromPool <StringBuilder>(Utils.StringBuilderPool,
                                                                   out StringBuilder sbdCyberdeckArray2))
                        using (new FetchSafelyFromPool <StringBuilder>(Utils.StringBuilderPool,
                                                                       out StringBuilder sbdCyberdeckArray3))
                        {
                            sbdCyberdeckArray0.Append(strCyberdeckArray[0]);
                            sbdCyberdeckArray1.Append(strCyberdeckArray[1]);
                            sbdCyberdeckArray2.Append(strCyberdeckArray[2]);
                            sbdCyberdeckArray3.Append(strCyberdeckArray[3]);
                            StringBuilder[] asbdCyberdeckArray =
                            {
                                sbdCyberdeckArray0,
                                sbdCyberdeckArray1,
                                sbdCyberdeckArray2,
                                sbdCyberdeckArray3
                            };
                            foreach (string strLoopArrayText in objThis.ChildrenWithMatrixAttributes.Select(
                                         x => x.ModAttributeArray))
                            {
                                if (string.IsNullOrEmpty(strLoopArrayText))
                                {
                                    continue;
                                }
                                string[] strLoopArray = strLoopArrayText.Split(',');
                                for (int i = 0; i < 4; ++i)
                                {
                                    asbdCyberdeckArray[i].Append("+(").Append(strLoopArray[i]).Append(')');
                                }
                            }

                            for (int i = 0; i < 4; ++i)
                            {
                                if (intBaseAttack == lstStatsArray[i])
                                {
                                    objThis.Attack   = asbdCyberdeckArray[i].ToString();
                                    lstStatsArray[i] = int.MinValue;
                                    break;
                                }
                            }

                            for (int i = 0; i < 4; ++i)
                            {
                                if (intBaseSleaze == lstStatsArray[i])
                                {
                                    objThis.Sleaze   = asbdCyberdeckArray[i].ToString();
                                    lstStatsArray[i] = int.MinValue;
                                    break;
                                }
                            }

                            for (int i = 0; i < 4; ++i)
                            {
                                if (intBaseDataProcessing == lstStatsArray[i])
                                {
                                    objThis.DataProcessing = asbdCyberdeckArray[i].ToString();
                                    lstStatsArray[i]       = int.MinValue;
                                    break;
                                }
                            }

                            for (int i = 0; i < 4; ++i)
                            {
                                if (intBaseFirewall == lstStatsArray[i])
                                {
                                    objThis.Firewall = asbdCyberdeckArray[i].ToString();
                                    break;
                                }
                            }
                        }
        }
        /// <summary>
        /// Refreshes a set of ComboBoxes corresponding to Matrix attributes
        /// </summary>
        public static async Task RefreshMatrixAttributeComboBoxesAsync(this IHasMatrixAttributes objThis, ComboBox cboAttack, ComboBox cboSleaze, ComboBox cboDataProcessing, ComboBox cboFirewall)
        {
            if (objThis == null)
            {
                return;
            }
            if (cboAttack == null)
            {
                throw new ArgumentNullException(nameof(cboAttack));
            }
            if (cboSleaze == null)
            {
                throw new ArgumentNullException(nameof(cboSleaze));
            }
            if (cboDataProcessing == null)
            {
                throw new ArgumentNullException(nameof(cboDataProcessing));
            }
            if (cboFirewall == null)
            {
                throw new ArgumentNullException(nameof(cboFirewall));
            }

            int intBaseAttack          = objThis.GetBaseMatrixAttribute("Attack");
            int intBaseSleaze          = objThis.GetBaseMatrixAttribute("Sleaze");
            int intBaseDataProcessing  = objThis.GetBaseMatrixAttribute("Data Processing");
            int intBaseFirewall        = objThis.GetBaseMatrixAttribute("Firewall");
            int intBonusAttack         = objThis.GetBonusMatrixAttribute("Attack");
            int intBonusSleaze         = objThis.GetBonusMatrixAttribute("Sleaze");
            int intBonusDataProcessing = objThis.GetBonusMatrixAttribute("Data Processing");
            int intBonusFirewall       = objThis.GetBonusMatrixAttribute("Firewall");

            await cboAttack.DoThreadSafeAsync(x =>
            {
                x.SuspendLayout();
                x.BeginUpdate();
            });

            await cboSleaze.DoThreadSafeAsync(x =>
            {
                x.SuspendLayout();
                x.BeginUpdate();
            });

            await cboDataProcessing.DoThreadSafeAsync(x =>
            {
                x.SuspendLayout();
                x.BeginUpdate();
            });

            await cboFirewall.DoThreadSafeAsync(x =>
            {
                x.SuspendLayout();
                x.BeginUpdate();
            });

            try
            {
                await cboAttack.DoThreadSafeAsync(x =>
                {
                    x.Enabled        = false;
                    x.BindingContext = new BindingContext();
                    x.DataSource     = new List <string>(4)
                    {
                        (intBaseAttack + intBonusAttack).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseSleaze + intBonusAttack).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseDataProcessing + intBonusAttack).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseFirewall + intBonusAttack).ToString(GlobalSettings.InvariantCultureInfo)
                    };
                    x.SelectedIndex = 0;
                    x.Visible       = true;
                    x.Enabled       = objThis.CanSwapAttributes;
                });

                await cboSleaze.DoThreadSafeAsync(x =>
                {
                    x.Enabled        = false;
                    x.BindingContext = new BindingContext();
                    x.DataSource     = new List <string>(4)
                    {
                        (intBaseAttack + intBonusSleaze).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseSleaze + intBonusSleaze).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseDataProcessing + intBonusSleaze).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseFirewall + intBonusSleaze).ToString(GlobalSettings.InvariantCultureInfo)
                    };
                    x.SelectedIndex = 1;
                    x.Visible       = true;
                    x.Enabled       = objThis.CanSwapAttributes;
                });

                await cboDataProcessing.DoThreadSafeAsync(x =>
                {
                    x.Enabled        = false;
                    x.BindingContext = new BindingContext();
                    x.DataSource     = new List <string>(4)
                    {
                        (intBaseAttack + intBonusDataProcessing).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseSleaze + intBonusDataProcessing).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseDataProcessing + intBonusDataProcessing).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseFirewall + intBonusDataProcessing).ToString(GlobalSettings.InvariantCultureInfo)
                    };
                    x.SelectedIndex = 2;
                    x.Visible       = true;
                    x.Enabled       = objThis.CanSwapAttributes;
                });

                await cboFirewall.DoThreadSafeAsync(x =>
                {
                    x.Enabled        = false;
                    x.BindingContext = new BindingContext();
                    x.DataSource     = new List <string>(4)
                    {
                        (intBaseAttack + intBonusFirewall).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseSleaze + intBonusFirewall).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseDataProcessing + intBonusFirewall).ToString(GlobalSettings.InvariantCultureInfo),
                        (intBaseFirewall + intBonusFirewall).ToString(GlobalSettings.InvariantCultureInfo)
                    };
                    x.SelectedIndex = 3;
                    x.Visible       = true;
                    x.Enabled       = objThis.CanSwapAttributes;
                });
            }
            finally
            {
                await cboAttack.DoThreadSafeAsync(x =>
                {
                    x.EndUpdate();
                    x.ResumeLayout();
                });

                await cboSleaze.DoThreadSafeAsync(x =>
                {
                    x.EndUpdate();
                    x.ResumeLayout();
                });

                await cboDataProcessing.DoThreadSafeAsync(x =>
                {
                    x.EndUpdate();
                    x.ResumeLayout();
                });

                await cboFirewall.DoThreadSafeAsync(x =>
                {
                    x.EndUpdate();
                    x.ResumeLayout();
                });
            }
        }