示例#1
0
        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);
        }
示例#2
0
        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);
        }