protected override DereferenceResult Perform(Household reference, FieldInfo field, List <ReferenceWrapper> objects) { ReferenceWrapper result; if (Matches(reference, "mSharedFamilyInventory", field, objects, out result) != MatchResult.Failure) { if (Performing) { if (result.Valid) { reference.mSharedFamilyInventory = SharedFamilyInventory.Create(reference); } } return(DereferenceResult.End); } if (Matches(reference, "mSharedFridgeInventory", field, objects, out result) != MatchResult.Failure) { if (Performing) { if (result.Valid) { reference.mSharedFridgeInventory = SharedFridgeInventory.Create(reference); } } return(DereferenceResult.End); } if (Matches(reference, "ComeAndSeeOutOfWorldObjects", field, objects)) { Remove(reference.ComeAndSeeOutOfWorldObjects, objects); return(DereferenceResult.End); } return(DereferenceResult.Failure); }
public static bool Perform(string title, string subTitle, List <Inventory> inventories) { Dictionary <string, Item> stack = new Dictionary <string, Item>(); foreach (Inventory inventory in inventories) { foreach (GameObject obj in Inventories.QuickFind <GameObject>(inventory)) { if ((obj is INotTransferableOnDeath) || (obj is IHiddenInInventory)) { continue; } if (!obj.CanBeSoldBase()) { continue; } Item list; if (!stack.TryGetValue(obj.CatalogName, out list)) { list = new Item(obj.CatalogName, obj.GetThumbnailKey()); stack.Add(obj.CatalogName, list); } list.Add(obj); } } stack.Add("All", new Item("(" + Common.LocalizeEAString("Ui/Caption/ObjectPicker:All") + ")", ThumbnailKey.kInvalidThumbnailKey)); List <Item> selection = new List <Item>(new CommonSelection <Item>(title, subTitle, stack.Values).SelectMultiple()); if (selection.Count == 0) { return(false); } bool all = false; foreach (Item item in selection) { if (item.Thumbnail == ThumbnailKey.kInvalidThumbnailKey) { all = true; break; } } if (all) { selection = new List <Item>(stack.Values); } foreach (Item item in selection) { int count = 1; if (all) { count = item.Count; } else if (item.Count > 1) { string text = StringInputDialog.Show(title, Common.Localize("SellItem:Prompt", false, new object[] { item.Name }), item.Count.ToString()); if ((text == null) || (text == "")) { return(false); } if (!int.TryParse(text, out count)) { SimpleMessageDialog.Show(title, Common.Localize("Numeric:Error")); return(false); } } if (count > item.Count) { count = item.Count; } for (int i = 0; i < count; i++) { Inventory source; if (Inventories.TryToRemove(item.Value[i], out source)) { int value = item.Value[i].Value; Household house = null; Sim sourceSim = source.Owner as Sim; if (sourceSim != null) { house = sourceSim.Household; Consignments.NotifySell(sourceSim.SimDescription, item.Value[i], value); } else { SharedFamilyInventory familyInventory = source.Owner as SharedFamilyInventory; if (familyInventory != null) { house = familyInventory.OwnerHousehold; } else if (source.Owner.LotCurrent != null) { house = source.Owner.LotCurrent.Household; } } item.Value[i].Destroy(); if (house != null) { house.ModifyFamilyFunds(value); } } } } return(true); }