Example #1
0
        public static void UnSpoil(OFBStand stand)
        {
            foreach (var stack in stand.Inventory.InventoryItems.Values)
            {
                foreach (var item in stack.List)
                {
                    if (item.Object.Value == 0)
                    {
                        ServingContainer      single = item.Object as ServingContainer;
                        ServingContainerGroup group  = item.Object as ServingContainerGroup;
                        int servingPrice             = stand.info.ServingPrice;

                        if (group != null)
                        {
                            group.mPurchasedPrice = ReturnPriceByQuality(single.FoodQuality, servingPrice * group.NumServingsLeft);
                            group.RemoveSpoilageAlarm();
                        }
                        else if (single != null)
                        {
                            single.mPurchasedPrice = ReturnPriceByQuality(single.FoodQuality, servingPrice);
                            single.RemoveSpoilageAlarm();
                        }
                    }
                }
            }
        }
Example #2
0
 private void LoopCallback(StateMachineClient smc, InteractionInstance.LoopData ld)
 {
     if (!JapLowDinnerTable.CheckIfHasFood(this.mServingContainer))
     {
         this.Actor.AddExitReason(ExitReason.Finished);
         return;
     }
     if (this.mServingContainer is ServingContainerSingle)
     {
         ServingContainerSingle servingContainerSingle = this.mServingContainer as ServingContainerSingle;
         servingContainerSingle.DecrementFoodUnits();
     }
     else if (this.mServingContainer is Snack)
     {
         Snack snack = this.mServingContainer as Snack;
         snack.DecrementFoodUnits();
     }
     this.Actor.Motives.ChangeValue(CommodityKind.Hunger, 10f);
     if (this.Actor.ShouldDoGroupTalk())
     {
         this.Actor.DoGroupTalk(new Sim.GroupTalkDelegate(this.PauseSim), new Sim.GroupTalkDelegate(this.UnpauseSim), true);
     }
     if (SimClock.ElapsedTime(TimeUnit.Minutes) - this.mLastReactionTime > this.mEatingDuration)
     {
         this.Actor.AddExitReason(ExitReason.Finished);
         if (this.mServingContainer is ServingContainerGroup)
         {
             ServingContainerGroup servingContainerGroup = this.mServingContainer as ServingContainerGroup;
             servingContainerGroup.DecrementServings();
         }
     }
 }
Example #3
0
        public static void UnSpoil(StoreSetRegister register, StoreSetBase storebase, ani_StoreRug rug, int servingPrice)
        {
            foreach (var stack in register.Inventory.InventoryItems.Values)
            {
                if (register != null)
                {
                    foreach (var item in stack.List)
                    {
                        // if (item.Object.Value == 0)
                        {
                            ServingContainer      single = item.Object as ServingContainer;
                            ServingContainerGroup group  = item.Object as ServingContainerGroup;

                            if (group != null)
                            {
                                group.mPurchasedPrice = ReturnPriceByQuality(single.FoodQuality, servingPrice * group.NumServingsLeft);
                                group.RemoveSpoilageAlarm();
                            }
                            else if (single != null)
                            {
                                single.mPurchasedPrice = ReturnPriceByQuality(single.FoodQuality, servingPrice);
                                single.RemoveSpoilageAlarm();
                            }
                        }
                    }
                }

                //if (rug != null)
                //{
                //    List<ObjectGuid> objectsICanBuyInDisplay = rug.GetObjectsICanBuyInDisplay(null);
                //    for (int i = 0; i < objectsICanBuyInDisplay.Count; i++)
                //    {
                //        GameObject gameObject = GlobalFunctions.ConvertGuidToObject<GameObject>(objectsICanBuyInDisplay[i]);
                //        if (gameObject != null)
                //        {
                //            CMStoreSet.PrintMessage(gameObject.GetType().ToString());
                //            if (gameObject.GetType() == typeof(ServingContainerGroup) || gameObject.GetType() == typeof(ServingContainerSingle))
                //            {
                //                CMStoreSet.PrintMessage("start unspoiling");
                //                ServingContainer single = gameObject as ServingContainer;
                //                ServingContainerGroup group = gameObject as ServingContainerGroup;

                //                if (group != null)
                //                {
                //                    group.mPurchasedPrice = ReturnPriceByQuality(single.FoodQuality, servingPrice * group.NumServingsLeft);
                //                    group.RemoveSpoilageAlarm();
                //                }
                //                else if (single != null)
                //                {
                //                    single.mPurchasedPrice = ReturnPriceByQuality(single.FoodQuality, servingPrice);
                //                    single.RemoveSpoilageAlarm();
                //                }
                //            }
                //        }
                //    }
                //}
            }
        }
Example #4
0
            public override void AddInteractions(InteractionObjectPair iop, Sim actor, CraftersConsignment target, List <InteractionObjectPair> results)
            {
                List <ObjectGuid> objectsICanBuyInDisplay = DisplayHelper.GetObjectsICanBuyInDisplay(actor, target);
                bool usePath = objectsICanBuyInDisplay.Count != 1;

                foreach (ObjectGuid objectGuid in objectsICanBuyInDisplay)
                {
                    ServingContainerGroup groupServing = GlobalFunctions.ConvertGuidToObject <ServingContainerGroup>(objectGuid);
                    if (groupServing != null)
                    {
                        results.Add(new InteractionObjectPair(new Definition(groupServing, true), iop.Target, iop.Tuning));
                        results.Add(new InteractionObjectPair(new Definition(groupServing, false), iop.Target, iop.Tuning));
                        continue;
                    }
                    results.Add(new InteractionObjectPair(new Definition(objectGuid, usePath), iop.Target, iop.Tuning));
                }
            }
Example #5
0
            public override void AddInteractions(InteractionObjectPair iop, Sim actor, IGameObject target, List <InteractionObjectPair> results)
            {
                CraftersConsignment targetObject = null;

                if (this.mParentRug != ObjectGuid.InvalidObjectGuid)
                {
                    targetObject = GlobalFunctions.ConvertGuidToObject <CraftersConsignment>(this.mParentRug);
                }
                for (IGameObject obj2 = target.Parent; (targetObject == null) && (obj2 != null); obj2 = obj2.Parent)
                {
                    targetObject = obj2 as CraftersConsignment;
                }
                if ((targetObject != null) && DisplayHelper.TestIfObjectCanBeBoughtByActor(target, actor)) //DisplayHelper.GetObjectsICanBuyInDisplay(actor, targetObject).Contains(target.ObjectId))
                {
                    ServingContainerGroup groupServing = target as ServingContainerGroup;
                    if (groupServing != null)
                    {
                        results.Add(new InteractionObjectPair(new PurchaseItemEx.Definition(groupServing, true), targetObject));
                        results.Add(new InteractionObjectPair(new PurchaseItemEx.Definition(groupServing, false), targetObject));
                        return;
                    }
                    results.Add(new InteractionObjectPair(new PurchaseItemEx.Definition(target.ObjectId, false), targetObject));
                }
            }
Example #6
0
        public override bool Run()
        {
            Definition interactionDefinition = base.InteractionDefinition as Definition;

            if (interactionDefinition == null)
            {
                return(false);
            }
            ObjectGuid mObject = interactionDefinition.mObject;
            int        mCost   = interactionDefinition.mCost;

            if (mObject == ObjectGuid.InvalidObjectGuid)
            {
                List <ObjectGuid> objectsICanBuyInDisplay = DisplayHelper.GetObjectsICanBuyInDisplay(base.Actor, base.Target);
                if (!Autonomous && Actor.IsSelectable)
                {
                    List <ObjectPicker.RowInfo> list = new List <ObjectPicker.RowInfo>();
                    foreach (ObjectGuid current in objectsICanBuyInDisplay)
                    {
                        GameObject           obj  = GlobalFunctions.ConvertGuidToObject <GameObject>(current);
                        ObjectPicker.RowInfo item = new ObjectPicker.RowInfo(current, new List <ObjectPicker.ColumnInfo>
                        {
                            new ObjectPicker.ThumbAndTextColumn(obj.GetThumbnailKey(), obj.GetLocalizedName()),
                            new ObjectPicker.MoneyColumn(DisplayHelper.ComputeFinalPriceOnObject(obj, true))
                        });
                        list.Add(item);
                    }
                    List <ObjectPicker.HeaderInfo> list2 = new List <ObjectPicker.HeaderInfo>();
                    List <ObjectPicker.TabInfo>    list3 = new List <ObjectPicker.TabInfo>();
                    list2.Add(new ObjectPicker.HeaderInfo(ShoppingRegister.sLocalizationKey + ":BuyFoodColumnName", ShoppingRegister.sLocalizationKey + ":BuyFoodColumnTooltip", 200));
                    list2.Add(new ObjectPicker.HeaderInfo("Ui/Caption/Shopping/Cart:Price", "Ui/Tooltip/Shopping/Cart:Price"));
                    list3.Add(new ObjectPicker.TabInfo("", ShoppingRegister.LocalizeString("AvailableFoods"), list));
                    List <ObjectPicker.RowInfo> list4 = SimplePurchaseDialog.Show(ShoppingRegister.LocalizeString("BuyFoodTitle"), Actor.FamilyFunds, list3, list2, true);
                    if (list4 == null || list4.Count != 1)
                    {
                        return(false);
                    }
                    mObject = (ObjectGuid)list4[0].Item;
                    mCost   = ((ObjectPicker.MoneyColumn)list4[0].ColumnInfo[1]).Value;
                }
                else
                {
                    RandomUtil.RandomizeListOfObjects <ObjectGuid>(objectsICanBuyInDisplay);
                    int familyFunds = base.Actor.FamilyFunds;
                    for (int i = 0; i < objectsICanBuyInDisplay.Count; i++)
                    {
                        int cost = DisplayHelper.ComputeFinalPriceOnObject(objectsICanBuyInDisplay[i]);
                        if (cost <= familyFunds)
                        {
                            //Definition continuationDefinition = new Definition(objectsICanBuyInDisplay[i], cost, false);
                            //base.TryPushAsContinuation(continuationDefinition);
                            //return true;
                            mObject = objectsICanBuyInDisplay[i];
                            mCost   = cost;
                            break;
                        }
                    }
                    //return false;
                }
            }
            if (mObject == ObjectGuid.InvalidObjectGuid)
            {
                return(false);
            }
            if (!base.Actor.RouteToObjectRadialRange(base.Target, 0f, base.Target.MaxProximityBeforeSwiping()))
            {
                return(false);
            }
            base.Actor.RouteTurnToFace(base.Target.Position);
            if (!DisplayHelper.GetObjectsICanBuyInDisplay(base.Actor, base.Target).Contains(mObject))
            {
                return(false);
            }
            if (base.Actor.FamilyFunds < mCost)
            {
                return(false);
            }
            GameObject target = GlobalFunctions.ConvertGuidToObject <GameObject>(mObject);

            if (target == null)
            {
                return(false);
            }

            base.StandardEntry();
            base.BeginCommodityUpdates();
            string swipeAnimationName = base.Target.GetSwipeAnimationName(target);

            if (Actor.SimDescription.Child)
            {
                swipeAnimationName = "c" + swipeAnimationName.Substring(1);
            }
            base.Actor.PlaySoloAnimation(swipeAnimationName, true);
            VisualEffect effect = VisualEffect.Create(base.Target.GetSwipeVfxName());
            Vector3      zero   = Vector3.Zero;
            Vector3      axis   = Vector3.Zero;

            if (Slots.AttachToBone(effect.ObjectId, base.Target.ObjectId, ResourceUtils.HashString32("transformBone"), false, ref zero, ref axis, 0f) == TransformParentingReturnCode.Success)
            {
                effect.SetAutoDestroy(true);
                effect.Start();
            }
            else
            {
                effect.Dispose();
                effect = null;
            }
            //bool flag = false;
            //bool flag2 = false;
            bool   succeeded       = false;
            bool   addInteractions = true;
            string tnsKey          = null;

            if (target.IsLiveDraggingEnabled() && !target.InUse && (interactionDefinition.mPushEat || (target.ItemComp != null && target.ItemComp.CanAddToInventory(base.Actor.Inventory) && base.Actor.Inventory.CanAdd(target)))) //&& base.Actor.Inventory.TryToAdd(target)))
            {
                ServingContainerGroup groupServing = null;
                if (interactionDefinition.mSingleServing)
                {
                    groupServing = target as ServingContainerGroup;
                    if (groupServing != null)
                    {
                        target          = groupServing.CookingProcess.CreateSingleServingOfFood(groupServing, true, true);
                        addInteractions = false;
                    }
                }
                if (interactionDefinition.mPushEat)
                {
                    target.SetOpacity(0f, 0f);
                    if (Actor.ParentToRightHand(target))
                    {
                        succeeded = true;
                        CarrySystem.EnterWhileHolding(Actor, target as ICarryable);
                    }
                    target.FadeIn();
                }
                else if (Actor.Inventory.TryToAdd(target))
                {
                    succeeded = true;
                    tnsKey    = "PlacedInPersonalInventory";
                }
                if (succeeded)
                {
                    if (groupServing != null)
                    {
                        groupServing.DecrementServings();
                        if (groupServing.NumServingsLeft == 0)
                        {
                            groupServing.FadeOut(false, true);
                        }
                    }
                }
                else if (groupServing != null && target != null)
                {
                    target.Destroy();
                }
            }
            else if (!target.InUse && base.Actor.Household.SharedFamilyInventory.Inventory.TryToAdd(target))
            {
                succeeded = true;
                tnsKey    = "PlacedInFamilyInventory";
            }
            //bool succeeded = flag || flag2;
            if (succeeded)
            {
                if (addInteractions)
                {
                    Target.OnHandToolChildUnslotted(target, Slot.None);
                    if (target is Snack)
                    {
                        target.AddInteraction(Sims3.Gameplay.Objects.CookingObjects.Eat.Singleton, true);
                        target.AddInteraction(Snack_CleanUp.Singleton, true);
                    }
                }

                /*if (flag2)
                 * {
                 *  base.Actor.ShowTNSIfSelectable(CraftersConsignment.LocalizeString(base.Actor.IsFemale, "PlacedInFamilyInventory", new object[] { base.Actor, target }), StyledNotification.NotificationStyle.kGameMessagePositive);
                 * }
                 * else
                 * {
                 *  base.Actor.ShowTNSIfSelectable(CraftersConsignment.LocalizeString(base.Actor.IsFemale, "PlacedInPersonalInventory", new object[] { base.Actor, target }), StyledNotification.NotificationStyle.kGameMessagePositive);
                 * }*/
                if (tnsKey != null)
                {
                    Actor.ShowTNSIfSelectable(CraftersConsignment.LocalizeString(Actor.IsFemale, tnsKey, new object[] { Actor, target }), StyledNotification.NotificationStyle.kGameMessagePositive);
                }
                base.Target.GiveMarkupBuffs(base.Actor, mObject);
                base.Actor.ModifyFunds(-mCost);
                base.Target.GiveLotOwnerMoney(mCost, base.Actor);
                base.Target.AccumulateRevenue(mCost);
                if (interactionDefinition.mPushEat)
                {
                    (target as IFoodContainer).PushEatHeldFoodInteraction(Actor);
                }
            }
            base.EndCommodityUpdates(succeeded);
            base.StandardExit();
            return(succeeded);
        }