/// <summary> /// Purchase effect handler /// </summary> private void PurchaseEffect(int userId, CatalogueItem catalogueItem, int amount) { List <EffectData> purchaseEffectsQueue = new List <EffectData>(); var existingEffects = EffectDao.GetUserEffects(userId); for (int i = 0; i < amount; i++) { foreach (var cataloguePackage in catalogueItem.Packages) { var dataList = GenerateEffectData(userId, cataloguePackage, existingEffects); if (!dataList.Any()) { continue; } purchaseEffectsQueue.AddRange(dataList); } } // Bulk create items EffectDao.SaveEffects(purchaseEffectsQueue); var player = PlayerManager.Instance.GetPlayerById(userId); if (player == null) { return; } player.Send(new PurchaseOKComposer(catalogueItem)); purchaseEffectsQueue.ForEach(player.EffectManager.AddEffect); }
public void Load() { Effects = new ConcurrentDictionary <int, Effect>(); foreach (var effectData in EffectDao.GetUserEffects(player.EntityData.Id)) { Effect effect = new Effect(effectData); Effects.TryAdd(effect.Id, effect); } player.Send(new EffectsMessageComposer(new List <Effect>(Effects.Values))); }