public IEnumerable <Sku> GetFilteredSkuList(IEnumerable <Sku> skus) { var skuInclusions = ParseSkuInclusionAndExclusions(SkuInclusions); foreach (var filter in skuInclusions) { var attribute = filter.Key; skus = filter.Value.Count == 0 ? skus.Where(sku => sku.HasAttribute(attribute)) : filter.Value.Aggregate(skus, (current, value) => current.Where(sku => sku.HasValue(attribute, value))); } var skuExclusions = ParseSkuInclusionAndExclusions(SkuExclusions); foreach (var exclusion in skuExclusions) { var attribute = exclusion.Key; skus = exclusion.Value.Count == 0 ? skus.Where(sku => !sku.HasAttribute(attribute)) : exclusion.Value.Aggregate(skus, (current, value) => current.Where(sku => !sku.HasValue(attribute, value))); } if (ItemIds != null && ItemIds.Length > 0) { skus = skus.Where(sku => ItemIds.Contains(sku.ItemID)); } return(skus); }
/// <summary> /// アイテムを削除する処理 /// </summary> public void RemoveItemId(int itemId) { if (ItemIds.Contains(itemId)) { return; } ItemIds.Remove(itemId); }
/// <summary> /// アイテムを追加する処理 /// </summary> public void AddItemId(int itemId) { if (ItemIds.Contains(itemId)) { return; } ItemIds.Add(itemId); }
public void AskUserItemChoice() { Console.WriteLine(); Console.WriteLine("Please write ID to view the item"); ItemId = GeneralStaticClass.ReadIntNumber(); while (!ItemIds.Contains(ItemId)) { Console.WriteLine("Invalid choice"); ItemId = GeneralStaticClass.ReadIntNumber(); } }
private async Task LowerItemQuality() { if (_isDone) { await Coroutine.Yield(); return; } List <BagSlot> bagSlots = IgnoreGear ? InventoryManager.FilledSlots.ToList() : InventoryManager.FilledSlots.Where(x => x.Item.StackSize == 999).ToList(); List <uint> toLower; if (AllItems && ForceLower) { toLower = bagSlots.Where(x => x.IsHighQuality).Select(x => x.RawItemId).ToList(); } else if (AllItems) { var HQ = bagSlots.Where(x => x.IsHighQuality).Select(x => x.RawItemId).OrderBy(x => x); var NQ = bagSlots.Where(x => !x.IsHighQuality).Select(x => x.RawItemId).OrderBy(x => x); toLower = NQ.Intersect(HQ).ToList(); } else if (ForceLower) { toLower = ItemIds.Select(x => (uint)x).ToList(); } else { var slotsWithId = bagSlots.Where(x => ItemIds.Contains((int)x.RawItemId)).ToList(); var HQ = slotsWithId.Where(x => x.IsHighQuality).Select(x => x.RawItemId).OrderBy(x => x); var NQ = slotsWithId.Where(x => !x.IsHighQuality).Select(x => x.RawItemId).OrderBy(x => x); toLower = NQ.Intersect(HQ).ToList(); } if (!toLower.Any()) { _isDone = true; return; } await StopBusy(leaveDuty : false, dismount : false); foreach (var itemId in toLower) { await LowerQualityAndCombine((int)itemId); await Coroutine.Sleep(200); } _isDone = true; }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var pages = new PageService(new RockContext()).Queryable().Where(p => ItemIds.Contains(p.Id.ToString())); this.SetValues(pages); }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var metricCategories = new MetricCategoryService(new RockContext()).Queryable().Where(g => ItemIds.Contains(g.Id.ToString())); this.SetValues(metricCategories); }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var registrationTemplates = new RegistrationTemplateService(new RockContext()).Queryable().Where(g => ItemIds.Contains(g.Id.ToString())); this.SetValues(registrationTemplates); }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var workflowTypes = new WorkflowTypeService(new RockContext()).Queryable().Where(g => ItemIds.Contains(g.Id.ToString())); this.SetValues(workflowTypes); }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var schedules = new ScheduleService(new RockContext()).Queryable().Where(g => ItemIds.Contains(g.Id.ToString())); this.SetValues(schedules); }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var groups = new GroupService().Queryable().Where(g => ItemIds.Contains(g.Id.ToString())); this.SetValues(groups); }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var reports = new ReportService(new RockContext()).Queryable().Where(g => ItemIds.Contains(g.Id.ToString())); this.SetValues(reports); }
/// <summary> /// Sets the values on select. /// </summary> protected override void SetValuesOnSelect() { var dataViews = new DataViewService(new RockContext()).Queryable().Where(g => ItemIds.Contains(g.Id.ToString())); this.SetValues(dataViews); }
public override void Process(Actor actor) { if (Quantity < 0) { actor.SendMessage(new ActionNotAllowedMessage() { Message = "Cannot give negative items." }); return; } IEnumerable <Actor> receivers; if (ActorId != null) { receivers = actor.Room.ActiveActors.Where(x => x.Id == ActorId.Value); } else { receivers = actor.Room.ActiveActors.FindActorsByName(ActorName, true).ToList(); } if (!receivers.Any()) { actor.SendMessage(new ActionNotAllowedMessage() { Message = "Cannot find player!" }); return; } if (receivers.Count() > 1) { actor.SendMessage(new AmbiguousActorMessage() { Actors = receivers.Select(x => new ActorDescription(x)).ToArray() }); return; } var receiver = receivers.First(); IEnumerable <IItem> items; if (ItemIds != null && ItemIds.Any()) { items = actor.Items.Where(x => ItemIds.Contains(x.Id)); } else { var availableCurrencies = Game.Data.AllCurrencies.Where(x => Currency.Get(x, actor.Cash) > 0).ToList(); items = GetItemCommand.FindItems(availableCurrencies, actor.Items.ToList(), ItemName); } if (items.Count() > 1) { actor.SendMessage(new AmbiguousItemMessage() { Items = items.Select(x => new ItemDescription(x)).ToArray() }); return; } if (!items.Any()) { actor.SendMessage(new ActionNotAllowedMessage() { Message = "Cannot find item!" }); return; } // Handle a cash give. if (items.First() is Currency) { var currency = items.First() as Currency; if (Quantity == 0) { // In the event that no number is specified (ie 0), then we assume the user // wants to drop all currency. So, we oblige them. // TODO: see if this is a correct assumption. Could be dangerous? Quantity = (int)Currency.Get(currency, actor.Cash); } var action = actor.CanRemoveCash(currency, Quantity); if (!action.Allowed) { actor.SendMessage(new ActionNotAllowedMessage() { Message = action.FirstPerson }); return; } action = receiver.CanAcceptCash(currency, Quantity); if (!action.Allowed) { actor.SendMessage(new ActionNotAllowedMessage() { Message = action.ThirdPerson }); return; } var quantity = actor.RemoveCash(currency, Quantity); receiver.AcceptCash(currency, quantity); var message = new CashTransferMessage() { Giver = new ActorDescription(actor), Taker = new ActorDescription(receiver), Currency = new CurrencyDescription(currency, quantity) }; actor.Room.ActiveActors.ForEach(x => x.SendMessage(message)); return; } // Handle a regular give Quantity = Math.Max(Quantity, 1); // 0 is valid in the event that no number is specified. In that instance, we assume 1 instead. IEnumerable <Item> finalItems; if (items.First() is ItemGroup) { finalItems = (items.First() as ItemGroup).Items.Take(Quantity); } else { finalItems = items.Cast <Item>(); } List <Item> successes = new List <Item>(); List <string> failures = new List <string>(); foreach (var item in finalItems) { var give = actor.CanRemoveItem(item); var take = receiver.CanAcceptItem(item); if (give.Allowed && take.Allowed) { actor.RemoveItem(item); receiver.AcceptItem(item); successes.Add(item); } if (!give.Allowed) { failures.Add(give.FirstPerson); } if (!take.Allowed) { failures.Add(take.ThirdPerson); } } if (successes.Any()) { var message = new ItemOwnershipMessage() { Giver = new ActorDescription(actor), Taker = new ActorDescription(receiver), Items = successes.Select(x => new ItemDescription(x)).ToArray(), }; actor.Room.ActiveActors.ForEach(x => x.SendMessage(message)); } if (failures.Any()) { failures.Distinct().ForEach(x => actor.SendMessage(new ActionNotAllowedMessage() { Message = x })); } }
public override void Process(Actor actor) { if (Quantity < 0) { actor.SendMessage(new ActionNotAllowedMessage() { Message = "Cannot drop negative items." }); return; } IEnumerable <IItem> items; if (ItemIds != null && ItemIds.Any()) { items = actor.Items.Where(x => ItemIds.Contains(x.Id)); } else { var availableCurrencies = Game.Data.AllCurrencies.Where(x => Currency.Get(x, actor.Cash) > 0).ToList(); items = GetItemCommand.FindItems(availableCurrencies, actor.Items.ToList(), ItemName); } if (items.Count() > 1) { actor.SendMessage(new AmbiguousItemMessage() { Items = items.Select(x => new ItemDescription(x)).ToArray() }); return; } if (!items.Any()) { actor.SendMessage(new ActionNotAllowedMessage() { Message = "Cannot find item!" }); return; } // Handle a cash drop. if (items.First() is Currency) { var currency = items.First() as Currency; if (Quantity == 0) { // In the event that no number is specified (ie 0), then we assume the user // wants to drop all currency. So, we oblige them. // TODO: see if this is a correct assumption. Could be dangerous? Quantity = (int)Currency.Get(currency, actor.Cash); } var action = actor.CanDropCash(currency, Quantity, Hide); if (action.Allowed) { actor.DropCash(currency, Quantity, Hide); var message = new CashTransferMessage() { Giver = new ActorDescription(actor), Currency = new CurrencyDescription(currency, Quantity), Hide = Hide }; if (Hide == false) { // let the actors in the room know, but only if it's not being hidden. actor.Room.ActiveActors.Where(x => x != actor).ForEach(x => x.SendMessage(message)); } actor.SendMessage(message); } else { actor.SendMessage(new ActionNotAllowedMessage() { Message = action.FirstPerson }); } return; } // Handle a regular drop Quantity = Math.Max(Quantity, 1); // 0 is valid in the event that no number is specified. In that instance, we assume 1 instead. IEnumerable <Item> finalItems; if (items.First() is ItemGroup) { finalItems = (items.First() as ItemGroup).Items.Take(Quantity); } else { finalItems = items.Cast <Item>(); } List <Item> successes = new List <Item>(); List <string> failures = new List <string>(); foreach (var item in finalItems) { var action = actor.CanDropItem(item, Hide); if (action.Allowed) { actor.DropItem(item, Hide); successes.Add(item); } else { failures.Add(action.FirstPerson); } } if (successes.Any()) { var message = new ItemOwnershipMessage() { Giver = new ActorDescription(actor), Items = successes.Select(x => new ItemDescription(x)).ToArray(), Hide = Hide }; if (Hide == false) { actor.Room.ActiveActors.ForEach(x => x.SendMessage(message)); } else { actor.SendMessage(message); } } if (failures.Any()) { failures.Distinct().ForEach(x => actor.SendMessage(new ActionNotAllowedMessage() { Message = x })); } }