public static InteractionDefinitionOptionList CreateNesting(IActor actor, GameObjectHit hit, List <InteractionObjectPair> pairs) { InteractionDefinitionOptionList primary = new InteractionDefinitionOptionList(""); foreach (InteractionObjectPair pair in pairs) { GreyedOutTooltipCallback greyedOutTooltipCallback = null; InteractionInstanceParameters parameters = new InteractionInstanceParameters(pair, actor, new InteractionPriority(InteractionPriorityLevel.UserDirected), false, true); parameters.mGameObjectHit = hit; InteractionTestResult result = pair.InteractionDefinition.Test(ref parameters, ref greyedOutTooltipCallback); if (!IUtil.IsPass(result)) { continue; } string[] paths = pair.InteractionDefinition.GetPath(actor.IsFemale); List <string> fullPath = new List <string>(); if (paths != null) { fullPath.AddRange(paths); } if (pair is IopWithPrependedPath) { fullPath.Insert(0, (pair as IopWithPrependedPath).PrependPath); } InteractionDefinitionOptionList list = primary; foreach (string path in fullPath) { string lookup = path; if (lookup == null) { lookup = ""; } InteractionDefinitionOptionList nextList = list.GetOption(lookup); if (nextList == null) { nextList = new InteractionDefinitionOptionList(lookup); list.Add(nextList); } list = nextList; } list.Add(new InteractionDefinitionOption(pair, actor)); } return(primary); }
public static OptionResult Perform(IActor actor, GameObjectHit hit, List <InteractionObjectPair> pairs, bool popupStyle) { if (popupStyle) { Sims3.Gameplay.UI.PieMenu.TestAndBringUpPieMenu(actor, new InteractionDefinitionOptionList.UIMouseEventArgsEx(), hit, pairs, InteractionMenuTypes.Normal); return(OptionResult.SuccessClose); } else { InteractionDefinitionOptionList primary = InteractionDefinitionOptionList.CreateNesting(actor, hit, pairs); return(primary.Perform(new GameHitParameters <GameObject>(actor, actor as GameObject, hit))); } }
public InteractionDefinitionOptionList GetOption(string name) { if (name == null) { return(null); } InteractionDefinitionOptionList option = null; if (!mLookup.TryGetValue(name, out option)) { return(null); } return(option); }