fBaseXtensions.XML.MoveToTownObjectTag.CreateBehavior C# (CSharp) Method

CreateBehavior() protected method

protected CreateBehavior ( ) : Composite
return Composite
        protected override Composite CreateBehavior()
        {
            return new PrioritySelector
            (
                new Decorator(ret => FunkyGame.GameIsInvalid,
                    new Action(ret =>
                    {
                        if (TownPortalBehavior.FunkyTPBehaviorFlag)
                            TownPortalBehavior.ResetTPBehavior();
                        m_IsDone = true;
                    })),

                //Return To Town
                new Decorator(ret => TownPortalBehavior.FunkyTPOverlord(null),
                    new Action(ret => TownPortalBehavior.FunkyTPBehavior(null))),

                //Setup our Vector and SNO
                new Decorator(ret => !initalizedTownVars,
                    new Action(ret => InitalizeTownVariables())),

                new Decorator(ret => MovementVector==Vector3.Zero || ObjectSNO==-1,
                    new Action(ret =>
                    {
                        if (TownPortalBehavior.FunkyTPBehaviorFlag)
                            TownPortalBehavior.ResetTPBehavior();
                        m_IsDone = true;
                    })),

                //Movement
                new Decorator(ret => !UpdateObject() || ZetaDia.Me.Position.Distance(MovementVector)>10f || !Object.InLineOfSight,
                    new Action(ret => Navigator.MoveTo(MovementVector))),

                new Decorator(ret => !Interact,
                    new Action(ret =>
                    {
                        if (TownPortalBehavior.FunkyTPBehaviorFlag)
                            TownPortalBehavior.ResetTPBehavior();
                        m_IsDone = true;
                    })),

                //Interaction
                new Decorator(ret => !DialogIsVisible(),
                    new Action(ret => Object.Interact())),

                new Decorator(ret => DialogIsVisible(),
                    new Action(ret => {
                        if (TownPortalBehavior.FunkyTPBehaviorFlag)
                            TownPortalBehavior.ResetTPBehavior();
                        m_IsDone = true;
                    }))
            );
        }