private void PushSimToDrink(Actors.Sim sim, IBarProfessional bar, String bestDrinkName) { List <InteractionObjectPair> interactions = bar.GetAllInteractionsForActor(sim); InteractionDefinition drinkingDefinition = null; foreach (InteractionObjectPair interaction in interactions) { InteractionDefinition interactionDef = interaction.InteractionDefinition; string name = interactionDef.GetInteractionName(sim, bar, interaction); if (name != null && name.Contains(bestDrinkName)) { drinkingDefinition = interactionDef; break; } } if (drinkingDefinition != null) { IEnumerable <InteractionInstance> actions = sim.InteractionQueue.InteractionList; List <InteractionInstance> toCancel = new List <InteractionInstance>(); bool alreadyDrinking = false; foreach (InteractionInstance action in actions) { if (!(action is BarProfessional.BarInteraction)) { toCancel.Add(action); } else { alreadyDrinking = true; break; } } foreach (InteractionInstance action in toCancel) { sim.InteractionQueue.CancelInteraction(action, false); } if (!alreadyDrinking) { sim.InteractionQueue.AddAfterCheckingForDuplicates(drinkingDefinition.CreateInstance(bar, sim, new InteractionPriority(InteractionPriorityLevel.RequiredNPCBehavior), true, false)); } } }
private void PushSimToDrink(Actors.Sim sim, IBarProfessional bar, String bestDrinkName) { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Best drink for " + sim.FullName + " is: " + bestDrinkName); } List <InteractionObjectPair> interactions = bar.GetAllInteractionsForActor(sim); InteractionDefinition drinkingDefinition = null; foreach (InteractionObjectPair interaction in interactions) { InteractionDefinition interactionDef = interaction.InteractionDefinition; string name = interactionDef.GetInteractionName(sim, bar, interaction); if (name != null && name.Contains(bestDrinkName)) { drinkingDefinition = interactionDef; break; } } if (drinkingDefinition != null) { IEnumerable <InteractionInstance> actions = sim.InteractionQueue.InteractionList; List <InteractionInstance> toCancel = new List <InteractionInstance>(); bool alreadyDrinking = false; foreach (InteractionInstance action in actions) { if (!(action is BarProfessional.BarInteraction)) { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Canceling " + action.GetInteractionName()); } toCancel.Add(action); } else { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Sim is already drinking, no push added"); } alreadyDrinking = true; break; } } foreach (InteractionInstance action in toCancel) { sim.InteractionQueue.CancelInteraction(action, false); } if (!alreadyDrinking) { sim.InteractionQueue.AddAfterCheckingForDuplicates(drinkingDefinition.CreateInstance(bar, sim, new InteractionPriority(InteractionPriorityLevel.RequiredNPCBehavior), true, false)); if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Sim was pushed to drink: " + sim.FullName); } } } }
private void PushSimToDrink(Actors.Sim sim, IBarProfessional bar, String bestDrinkName) { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Best drink for " + sim.FullName + " is: " + bestDrinkName); } List<InteractionObjectPair> interactions = bar.GetAllInteractionsForActor(sim); InteractionDefinition drinkingDefinition = null; foreach (InteractionObjectPair interaction in interactions) { InteractionDefinition interactionDef = interaction.InteractionDefinition; string name = interactionDef.GetInteractionName(sim, bar, interaction); if (name != null && name.Contains(bestDrinkName)) { drinkingDefinition = interactionDef; break; } } if (drinkingDefinition != null) { IEnumerable<InteractionInstance> actions = sim.InteractionQueue.InteractionList; List<InteractionInstance> toCancel = new List<InteractionInstance>(); bool alreadyDrinking = false; foreach (InteractionInstance action in actions) { if (!(action is BarProfessional.BarInteraction)) { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Canceling " + action.GetInteractionName()); } toCancel.Add(action); } else { if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Sim is already drinking, no push added"); } alreadyDrinking = true; break; } } foreach (InteractionInstance action in toCancel) { sim.InteractionQueue.CancelInteraction(action, false); } if (!alreadyDrinking) { sim.InteractionQueue.AddAfterCheckingForDuplicates(drinkingDefinition.CreateInstance(bar, sim, new InteractionPriority(InteractionPriorityLevel.RequiredNPCBehavior), true, false)); if (Message.Sender.IsDebugging()) { Message.Sender.Debug(this, "Sim was pushed to drink: " + sim.FullName); } } } }
private void PushSimToDrink(Actors.Sim sim, IBarProfessional bar, String bestDrinkName) { List<InteractionObjectPair> interactions = bar.GetAllInteractionsForActor(sim); InteractionDefinition drinkingDefinition = null; foreach (InteractionObjectPair interaction in interactions) { InteractionDefinition interactionDef = interaction.InteractionDefinition; string name = interactionDef.GetInteractionName(sim, bar, interaction); if (name != null && name.Contains(bestDrinkName)) { drinkingDefinition = interactionDef; break; } } if (drinkingDefinition != null) { IEnumerable<InteractionInstance> actions = sim.InteractionQueue.InteractionList; List<InteractionInstance> toCancel = new List<InteractionInstance>(); bool alreadyDrinking = false; foreach (InteractionInstance action in actions) { if (!(action is BarProfessional.BarInteraction)) { toCancel.Add(action); } else { alreadyDrinking = true; break; } } foreach (InteractionInstance action in toCancel) { sim.InteractionQueue.CancelInteraction(action, false); } if (!alreadyDrinking) { sim.InteractionQueue.AddAfterCheckingForDuplicates(drinkingDefinition.CreateInstance(bar, sim, new InteractionPriority(InteractionPriorityLevel.RequiredNPCBehavior), true, false)); } } }