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; }
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; }
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)); }
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) { }
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)); }
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)); }
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);
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)); }
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); }