Example #1
0
            private static void ListOptions(IInteractionProxy <IActor, TTarget, GameHitParameters <TTarget> > proxy, IEnumerable <IInteractionOptionItem <IActor, TTarget, GameHitParameters <TTarget> > > options, IActor actor, TTarget target, GameObjectHit hit, bool popup, List <string> path, List <InteractionObjectPair> results)
            {
                GameHitParameters <TTarget> parameters = new GameHitParameters <TTarget>(actor, target, hit);

                foreach (IInteractionOptionItem <IActor, TTarget, GameHitParameters <TTarget> > option in options)
                {
                    if (!option.Test(parameters))
                    {
                        continue;
                    }

                    IInteractionOptionList <TTarget> list = option as IInteractionOptionList <TTarget>;
                    if (list != null)
                    {
                        List <string> newPath = new List <string>(path);
                        newPath.Add(option.Name);

                        ListOptions(list, list.IOptions(), actor, target, hit, popup, newPath, results);
                    }
                    else
                    {
                        results.Add(new InteractionObjectPair(new CommonDefinition <INTERACTION>(proxy, option, popup, path.ToArray()), target));
                    }
                }
            }
Example #2
0
            protected override OptionResult Run(GameHitParameters <GameObject> parameters)
            {
                IInteractionOptionList <GameObject> list = mOption as IInteractionOptionList <GameObject>;

                if (list != null)
                {
                    return(new HotkeyOptionList(list).Perform(parameters));
                }
                else
                {
                    return(base.Run(parameters));
                }
            }
Example #3
0
                public HotkeyOptionList(IInteractionOptionList <GameObject> options)
                    : base(options.ToString())
                {
                    foreach (IInteractionOptionItem <IActor, GameObject, GameHitParameters <GameObject> > paramOption in options.IOptions())
                    {
                        IOptionItem option = paramOption as IOptionItem;
                        if (option == null)
                        {
                            continue;
                        }

                        if (!(option is IOptionList))
                        {
                            if (string.IsNullOrEmpty(option.HotkeyID))
                            {
                                continue;
                            }
                        }

                        mOptions.Add(new HotkeyOption(option));
                    }
                }