Beispiel #1
0
        /// <summary>
        /// Returns whether there are any bonuses for the given stat,
        /// and if so returns the total multiplier and the names of the
        /// events that affected it via out parameter.
        /// </summary>
        /// <param name="stat"></param>
        /// <param name="multiplier"></param>
        /// <param name="eventNames"></param>
        public bool GetBonusMultiplier(GlobalBonusStat stat, out float multiplier, out string eventNames)
        {
            multiplier = 0;
            eventNames = "";

            lock (_bonuses)
            {
                if (!_bonuses.Any(a => a.Stat == stat))
                {
                    return(false);
                }
            }

            var names = new HashSet <string>();

            lock (_bonuses)
            {
                foreach (var bonus in _bonuses.Where(a => a.Stat == stat))
                {
                    multiplier += bonus.Multiplier;
                    if (!string.IsNullOrWhiteSpace(bonus.Name))
                    {
                        names.Add(bonus.Name);
                    }
                }
            }

            eventNames = string.Join(", ", names);

            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// Adds global bonus.
        /// </summary>
        /// <param name="identifier"></param>
        /// <param name="name"></param>
        /// <param name="stat"></param>
        /// <param name="multiplier"></param>
        public void AddBonus(string identifier, string name, GlobalBonusStat stat, float multiplier)
        {
            var bonus = new GlobalBonus(identifier, name, stat, multiplier);

            lock (_bonuses)
                _bonuses.Add(bonus);
        }
Beispiel #3
0
 public GlobalBonus(string identifier, string name, GlobalBonusStat stat, float multiplier)
 {
     this.Identifier = identifier;
     this.Name       = name;
     this.Stat       = stat;
     this.Multiplier = multiplier;
 }
Beispiel #4
0
		/// <summary>
		/// Returns whether there are any bonuses for the given stat,
		/// and if so returns the total multiplier and the names of the
		/// events that affected it via out parameter.
		/// </summary>
		/// <param name="stat"></param>
		/// <param name="multiplier"></param>
		/// <param name="eventNames"></param>
		public bool GetBonusMultiplier(GlobalBonusStat stat, out float multiplier, out string eventNames)
		{
			multiplier = 0;
			eventNames = "";

			lock (_bonuses)
			{
				if (!_bonuses.Any(a => a.Stat == stat))
					return false;
			}

			var names = new HashSet<string>();

			lock (_bonuses)
			{
				foreach (var bonus in _bonuses.Where(a => a.Stat == stat))
				{
					multiplier += bonus.Multiplier;
					if (!string.IsNullOrWhiteSpace(bonus.Name))
						names.Add(bonus.Name);
				}
			}

			eventNames = string.Join(", ", names);

			return true;
		}
Beispiel #5
0
 /// <summary>
 /// Adds global bonus.
 /// </summary>
 /// <param name="stat"></param>
 /// <param name="multiplier"></param>
 protected void AddGlobalBonus(GlobalBonusStat stat, float multiplier)
 {
     ChannelServer.Instance.GameEventManager.GlobalBonuses.AddBonus(this.Id, this.Name, stat, multiplier);
 }
Beispiel #6
0
		/// <summary>
		/// Adds global bonus.
		/// </summary>
		/// <param name="stat"></param>
		/// <param name="multiplier"></param>
		protected void AddGlobalBonus(GlobalBonusStat stat, float multiplier)
		{
			ChannelServer.Instance.GameEventManager.GlobalBonuses.AddBonus(this.Id, this.Name, stat, multiplier);
		}
Beispiel #7
0
		/// <summary>
		/// Adds global bonus.
		/// </summary>
		/// <param name="identifier"></param>
		/// <param name="name"></param>
		/// <param name="stat"></param>
		/// <param name="multiplier"></param>
		public void AddBonus(string identifier, string name, GlobalBonusStat stat, float multiplier)
		{
			var bonus = new GlobalBonus(identifier, name, stat, multiplier);
			lock (_bonuses)
				_bonuses.Add(bonus);
		}
Beispiel #8
0
		public GlobalBonus(string identifier, string name, GlobalBonusStat stat, float multiplier)
		{
			this.Identifier = identifier;
			this.Name = name;
			this.Stat = stat;
			this.Multiplier = multiplier;
		}