/// <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); }
/// <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); }
public GlobalBonus(string identifier, string name, GlobalBonusStat stat, float multiplier) { this.Identifier = identifier; this.Name = name; this.Stat = stat; this.Multiplier = multiplier; }
/// <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; }
/// <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); }
/// <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); }
/// <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); }
public GlobalBonus(string identifier, string name, GlobalBonusStat stat, float multiplier) { this.Identifier = identifier; this.Name = name; this.Stat = stat; this.Multiplier = multiplier; }