public void SetMissionBonus(MissionBonus missionBonus) { missionBonus.SaveToDb(); Transaction.Current.OnCommited(() => { if (missionBonus.Bonus == 0) { MissionBonusCollector collector; if (_missionBonuses.TryGetValue(missionBonus.character.Id, out collector)) { collector.RemoveBonus(missionBonus); if (collector.IsEmpty) { RemoveCollector(missionBonus.character); } } } else { var collector = GetOrAddBonusCollector(missionBonus.character); collector.AddBonus(missionBonus); } missionBonus.SendUpdateToClient(); }); }
private void LoadMissionBonuses() { var records = Db.Query().CommandText("select characterid,missioncategory,missionlevel,agentid,bonus from missionbonus").Execute(); foreach (var record in records) { var mb = MissionBonus.FromRecrod(record); var collector = GetOrAddBonusCollector(mb.character); collector.AddBonus(mb); } Logger.Info(_missionBonuses.Count + " mission bonuses loaded."); }