Example #1
0
 protected virtual void Initialize(ref InteractionInstanceParameters parameters)
 {
     OverridedFridge_Have.Definition definition = parameters.InteractionDefinition as OverridedFridge_Have.Definition;
     this.MenuText           = definition.MenuText;
     this.MenuPath           = definition.MenuPath;
     this.mbWasHaveSomething = definition.WasHaveSomething;
     this.Destination        = definition.Destination;
     this.Quantity           = definition.Quantity;
     if (definition.ChosenRecipe == null)
     {
         if (base.Autonomous && this.Actor.SimDescription.IsVampire)
         {
             this.ChosenRecipe = Recipe.NameToRecipeHash["VampireJuice"];
         }
         else
         {
             Lot lotCurrent = parameters.Actor.LotCurrent;
             if (lotCurrent != null && lotCurrent.GetSims(new Predicate <Sim>(this.ShouldCookFor)).Count > 1)
             {
                 this.Quantity = Recipe.MealQuantity.Group;
             }
             this.ChosenRecipe = Food.ChooseRecipeRandomly(parameters.Target.LotCurrent, parameters.Actor as Sim, parameters.Autonomous, null, this.Quantity);
             if (!this.ChosenRecipe.CanMakeGroupServing && this.Quantity == Recipe.MealQuantity.Group)
             {
                 this.Quantity = Recipe.MealQuantity.Single;
             }
         }
         this.ObjectClickedOn = (parameters.Target as GameObject);
         return;
     }
     this.ChosenRecipe    = definition.ChosenRecipe;
     this.ObjectClickedOn = definition.ObjectClickedOn;
     this.Repetition      = definition.Repetition;
 }
Example #2
0
 public OverridedFoodMenuInteractionDefinition(string menuText, Recipe recipe, string[] menuPath, GameObject objectClickedOn, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition, bool bWasHaveSomething, int cost)
 {
     this.MenuText         = menuText;
     this.ChosenRecipe     = recipe;
     this.MenuPath         = menuPath;
     this.Destination      = destination;
     this.Quantity         = quantity;
     this.Repetition       = repetition;
     this.WasHaveSomething = bWasHaveSomething;
     this.ObjectClickedOn  = objectClickedOn;
     this.Cost             = cost;
 }
Example #3
0
 public override FoodMenuInteractionDefinition <Stove, Stove_Have> Create(string menuText, Recipe recipe, string[] menuPath, GameObject objectClickedOn, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition, bool bWasHaveSomething, int cost)
 {
     if (cost > 0)
     {
         cost = -2147483648;
     }
     return(new Definition(menuText, recipe, menuPath, objectClickedOn, destination, quantity, repetition, bWasHaveSomething, cost));
 }
Example #4
0
 public Definition(string menuText, Recipe recipe, string[] menuPath, GameObject objectClickedOn, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition, bool bWasHaveSomething, int cost)
     : base(menuText, recipe, menuPath, objectClickedOn, destination, quantity, repetition, bWasHaveSomething, cost)
 {
 }
Example #5
0
 protected override OverridedFoodMenuInteractionDefinition <Microwave, OverridedMicrowave_Have> Create(string menuText, Recipe recipe, string[] menuPath, GameObject objectClickedOn, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition, bool bWasHaveSomething, int cost)
 {
     return(new OverridedMicrowave_Have.Definition(menuText, recipe, menuPath, objectClickedOn, destination, quantity, repetition, bWasHaveSomething, cost));
 }
Example #6
0
 protected override OverridedFoodMenuInteractionDefinition <Fridge, OverridedFridge_Have> Create(string menuText, Recipe recipe, string[] menuPath, GameObject objectClickedOn, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition, bool bWasHaveSomething, int cost)
 {
     menuPath = new string[]
     {
         Localization.LocalizeString("Gameplay/Objects/FoodObjects:PrepareMenuPath", new object[0])
     };
     return(new OverridedFridge_Prepare.PrepareDefinition(menuText, recipe, menuPath, objectClickedOn, Recipe.MealDestination.SurfaceOnly, Recipe.MealQuantity.Group, repetition, bWasHaveSomething, cost));
 }
Example #7
0
 protected abstract OverridedFoodMenuInteractionDefinition <TTarget, TInteraction> Create(string menuText, Recipe recipe, string[] menuPath, GameObject objectClickedOn, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition, bool bWasHaveSomething, int cost);
Example #8
0
        private bool StartCookingProcessWithFoodTray(string menuText, string[] menuPath, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition)
        {
            List <Ingredient> ingredientsUsed = new List <Ingredient>();

            if (!this.Actor.IsNPC && !AniRecipe.UseUpIngredientsFrom(this.ChosenRecipe, this.Actor, ref ingredientsUsed, quantity, false))
            {
                return(false);
            }
            this.Actor.SkillManager.AddElement(SkillNames.Cooking);
            FoodTray foodTray = (FoodTray)GlobalFunctions.CreateObject("FoodTray", Vector3.OutOfWorld, 0, Vector3.UnitZ);

            foodTray.CookingProcess = new CookingProcess(this.ChosenRecipe, ingredientsUsed, this.Target, this.Target.LotCurrent, destination, quantity, repetition, menuText, menuPath, foodTray, this.Actor);
            foodTray.CreateFoodProp(Slots.Hash("Slot_0"), foodTray.CookingProcess.Recipe.ModelsAndMaterials.GrillModel_FoodTray);
            CookingProcess.MoveToNextStep(foodTray, this.Actor);
            CookingProcess.MoveToNextStep(foodTray, this.Actor);
            CookingProcess.MoveToNextStep(foodTray, this.Actor);
            StateMachineClient stateMachineClient = StateMachineClient.Acquire(this.Actor.Proxy.ObjectId, "Grill");

            if (stateMachineClient == null)
            {
                return(false);
            }
            stateMachineClient.AddInterest <TraitNames>(TraitNames.Clumsy);
            stateMachineClient.SetActor("x", this.Actor);
            stateMachineClient.SetActor("FoodTray", foodTray);
            stateMachineClient.EnterState("x", "Enter - Hands Empty");
            stateMachineClient.RequestState("x", "Take Out Food Tray");
            stateMachineClient.RequestState("x", "Exit - Holding Food Tray");
            if (this.Actor.HasExitReason(ExitReason.Canceled))
            {
                CarrySystem.EnterWhileHolding(this.Actor, foodTray);
                Food.PutHeldObjectDownOnCounterTableOrFloor(this.Actor, SurfaceType.Normal);
                return(false);
            }
            CarrySystem.EnterWhileHolding(this.Actor, foodTray);
            InteractionInstance instance = FoodTray_Prepare.Singleton.CreateInstance(foodTray, this.Actor, this.Actor.InheritedPriority(), base.Autonomous, true);

            return(this.Actor.InteractionQueue.PushAsContinuation(instance, true));
        }
Example #9
0
        public static bool ForcePushFridgeHave(Sim sim, GameObject objectToFindFridgeRelativeTo, Recipe chosenRecipe, Recipe.MealDestination destination, Recipe.MealQuantity quantity, Recipe.MealRepetition repetition)
        {
            Fridge closestObject = GlobalFunctions.GetClosestObject <Fridge>(objectToFindFridgeRelativeTo, false, true, null, null);

            if (closestObject == null)
            {
                return(false);
            }
            InteractionObjectPair         iop = new InteractionObjectPair(new OverridedFridge_Have.Definition(null, chosenRecipe, null, objectToFindFridgeRelativeTo, destination, quantity, repetition, false, 0), closestObject);
            InteractionInstanceParameters interactionInstanceParameters = new InteractionInstanceParameters(iop, sim, sim.InheritedPriority(), false, true);

            return(sim.InteractionQueue.AddNext(OverridedFridge_Have.Singleton.CreateInstanceFromParameters(ref interactionInstanceParameters)));
        }
        public override bool Run()
        {
            if (this.CheckForCancelAndCleanup())
            {
                return(false);
            }
            if (!Target.RouteToOpen(this, true))
            {
                return(false);
            }
            if (Target.InUse)
            {
                this.Actor.AddExitReason(ExitReason.RouteFailed);
                return(false);
            }
            this.mImpassableRegion.AddMember(this.Actor);
            this.mImpassableRegion.AddMember(this.Target);
            this.mImpassableRegion.UpdateFootprint();
            base.StandardEntry();

            bool flag = true;
            List <Ingredient> ingredientsUsed = new List <Ingredient>();

            if (this.ChosenRecipe.UseUpIngredientsFrom(this.Actor, ref ingredientsUsed, Recipe.MealQuantity.Single) || this.Actor.IsNPC)
            {
                Fridge.EnterStateMachine(this);
                TrueBlood  trueBlood  = GlobalFunctions.CreateObjectOutOfWorld(this.ChosenRecipe.ObjectToCreateInFridge, this.ChosenRecipe.CodeVersion) as TrueBlood;
                GameObject gameObject = trueBlood as GameObject;
                gameObject.AddToUseList(this.Actor);
                try
                {
                    this.Target.PutOnFridgeShelf(gameObject);
                    trueBlood.InitializeForRecipe(this.ChosenRecipe);
                    Recipe.MealDestination destination = Recipe.MealDestination.SurfaceOrEat;
                    CookingProcess         process     = new CookingProcess(ChosenRecipe, new List <Ingredient>(), Target, Actor.LotCurrent, destination,
                                                                            Recipe.MealQuantity.Single, Recipe.MealRepetition.MakeOne, "Tru Blood", new String[] { }, trueBlood, Actor, false);
                    trueBlood.CookingProcess = process;
                    CookingProcess.MoveToNextStep(trueBlood, Actor);
                    base.SetActor(trueBlood.ActorNameForFridge, gameObject);

                    base.AnimateSim("Remove - " + trueBlood.ActorNameForFridge);
                }
                catch
                {
                    gameObject.Destroy();
                    throw;
                }
                CarrySystem.EnterWhileHolding(this.Actor, trueBlood, false);
                if (this.CheckForCancelAndCleanup())
                {
                    return(false);
                }
                if (this.Actor.HasTrait(TraitNames.NaturalCook))
                {
                    TraitTipsManager.ShowTraitTip(13271263770231522448uL, this.Actor, TraitTipsManager.TraitTipCounterIndex.NaturalCook, TraitTipsManager.kNaturalCookCountOfMealsCooked);
                }

                InteractionDefinition warmUp = PutBloodToMicrowave.Singleton;
                Actor.InteractionQueue.PushAsContinuation(warmUp, gameObject, true);
                base.AnimateSim("Exit - Standing");
            }
            else
            {
                flag = false;
            }
            base.StandardExit();
            if (flag)
            {
                ActiveTopic.AddToSim(this.Actor, "Has Made Food");
            }
            return(flag);
        }