Exemple #1
0
        /// <summary>
        /// Adds the FieldMovementRateModifier to the MovementRateModifiers List. Replaces another modifier with the same ID. Sorts the new Entry: First alls additive, then all multiplicative modifiers. Calculates the new Expenditures value for the Field.
        /// </summary>
        /// <param name="expendituresModifier">The modifier to add to the list.</param>
        private void AddExpendituresModifier(Modifier.FieldExpendituresModifier expendituresModifier)
        {
            bool   ModIsInserted = false;
            double expenditures  = 1;

            for (int i = 0; i < ExpendituresModifiers.Count; i++)
            {
                //Is there a modifier with the same ID? Replace it.
                if (expendituresModifier.ModifierID == ExpendituresModifiers[i].ModifierID)
                {
                    ExpendituresModifiers.RemoveAt(i);
                    ExpendituresModifiers.Insert(i, expendituresModifier);
                    ModIsInserted = true;
                }
                //Insert the additive modifier at the end of all the additive modifiers, if there was no duplicate.
                if (!ModIsInserted && expendituresModifier.Additive && !ExpendituresModifiers[i].Additive)
                {
                    ExpendituresModifiers.Insert(i, expendituresModifier);
                    ModIsInserted = true;
                }
                //Insert the modifier, when the end of the list is reached and it wasn't inserted already.
                if (!ModIsInserted && i == ExpendituresModifiers.Count - 1)
                {
                    ExpendituresModifiers.Add(expendituresModifier);
                    ModIsInserted = true;
                }

                //If the modifier at position i is Additive, add it. If it is a multiplicator, multiply it.
                if (ExpendituresModifiers[i].Additive)
                {
                    expenditures += ExpendituresModifiers[i].Value;
                }
                else
                {
                    expenditures *= ExpendituresModifiers[i].Value;
                }
            }

            Expenditures = expenditures;
        }
Exemple #2
0
 /// <summary>
 /// Adds a FieldExpendituresModifier to the ExpendituresModifiers List by ID.
 /// </summary>
 /// <param name="modifierID"></param>
 /// <param name="value"></param>
 public void AddExpendituresModifier(int modifierID, double value = 1)
 {
     Modifier.FieldExpendituresModifier expendituresModifier = new Modifier.FieldExpendituresModifier(this, modifierID, value);
     AddExpendituresModifier(expendituresModifier);
 }