예제 #1
0
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            // First get the value from StaticResource
            var o = base.ProvideValue(serviceProvider);

            return(Path == null ? o : PathEvaluator.Evaluate(o, Path));
        }
예제 #2
0
        public void CanGetAScore()
        {
            var map = new MapObjects[7, 7];

            map[2, 4] = MapObjects.Wall; map[2, 5] = MapObjects.Wall; map[2, 6] = MapObjects.Wall;

            map[3, 0] = MapObjects.Wall;
            map[3, 1] = MapObjects.Wall;
            map[3, 2] = MapObjects.Wall;
            map[3, 3] = MapObjects.FreeSquare;
            map[3, 4] = MapObjects.Wall;
            map[3, 5] = MapObjects.FreeSquare;

            map[4, 0] = MapObjects.Wall;
            map[4, 1] = MapObjects.FreeSquare;
            map[4, 2] = MapObjects.FreeSquare;
            map[4, 3] = MapObjects.Motorcycle;
            map[4, 4] = MapObjects.FreeSquare;
            map[4, 5] = MapObjects.FreeSquare;

            map[5, 0] = MapObjects.Wall;
            map[5, 1] = MapObjects.FreeSquare;
            map[5, 2] = MapObjects.FreeSquare;
            map[5, 3] = MapObjects.Wall;
            map[5, 4] = MapObjects.FreeSquare;
            map[5, 5] = MapObjects.FreeSquare;

            // sanity check
            Assert.Equal(map[4, 3], MapObjects.Motorcycle);

            var result1 = PathEvaluator.GetScore(new Vector2D(4, 2), map);
            var result2 = PathEvaluator.GetScore(new Vector2D(3, 3), map);
            var result3 = PathEvaluator.GetScore(new Vector2D(4, 4), map);
            var result4 = PathEvaluator.GetScore(new Vector2D(5, 3), map);
        }
예제 #3
0
            public static object Eval(object source, PropertyPath path)
            {
                PathEvaluator d = new PathEvaluator();

                BindingOperations.SetBinding(d, DummyProperty, new Binding(path.Path)
                {
                    Source = source
                });
                return(d.GetValue(DummyProperty));
            }
예제 #4
0
            public static object Evaluate(object source, PropertyPath path)
            {
                var d = new PathEvaluator();

                BindingOperations.SetBinding(d, _dummyProperty, new Binding(path.Path)
                {
                    Source = source
                });

                // Force binding to give us the desired value defined in path.
                var result = d.GetValue(_dummyProperty);

                // Clear the binding to leave nice memory footprints
                BindingOperations.ClearBinding(d, _dummyProperty);

                return(result);
            }
예제 #5
0
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            object o = base.ProvideValue(serviceProvider);

            return(Path == null ? o : PathEvaluator.Eval(o, Path));
        }
        internal BidirectionalTraverserIterator(Resource resource, MonoDirectionalTraversalDescription start, MonoDirectionalTraversalDescription end, SideSelectorPolicy sideSelector, Org.Neo4j.Graphdb.traversal.BranchCollisionPolicy collisionPolicy, PathEvaluator collisionEvaluator, int maxDepth, IEnumerable <Node> startNodes, IEnumerable <Node> endNodes) : base(resource)
        {
            this._sides[Direction.OUTGOING] = new Side(start);
            this._sides[Direction.INCOMING] = new Side(end);
            this._uniqueness = MakeSureStartAndEndHasSameUniqueness(start, end);

            // A little chicken-and-egg problem. This happens when constructing the start/end
            // selectors and they initially call evaluate() and isUniqueFirst, where the selector is used.
            // Solved this way for now, to have it return the start side to begin with.
            this._selector = FixedSide(Direction.OUTGOING);
            BranchSelector startSelector = start.BranchOrdering.create(new AsOneStartBranch(this, startNodes, start.InitialState, start.UniquenessConflict), start.Expander);

            this._selector = FixedSide(Direction.INCOMING);
            BranchSelector endSelector = end.BranchOrdering.create(new AsOneStartBranch(this, endNodes, end.InitialState, start.UniquenessConflict), end.Expander);

            this._selector          = sideSelector.Create(startSelector, endSelector, maxDepth);
            this._collisionDetector = collisionPolicy.Create(collisionEvaluator, _uniqueness.checkFull);
        }
예제 #7
0
 internal MonoDirectionalTraverserIterator(Resource resource, UniquenessFilter uniqueness, PathExpander expander, BranchOrderingPolicy order, PathEvaluator evaluator, IEnumerable <Node> startNodes, InitialBranchState initialState, UniquenessFactory uniquenessFactory) : base(resource)
 {
     this._uniqueness = uniqueness;
     this._evaluator  = evaluator;
     this._selector   = order.Create(new AsOneStartBranch(this, startNodes, initialState, uniquenessFactory), expander);
 }
예제 #8
0
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            var value = base.ProvideValue(serviceProvider);

            return(Path == null ? value : PathEvaluator.Eval(value, Path));
        }
예제 #9
0
 public static object Eval(object source, PropertyPath path)
 {
     PathEvaluator d = new PathEvaluator();
     BindingOperations.SetBinding(d, DummyProperty, new Binding(path.Path) { Source=source } );
     return d.GetValue(DummyProperty);
 }
예제 #10
0
 public int GetScore(Direction direction) => PathEvaluator.GetScore(PlayerPosition + direction.ToVector2d(), DiscoveredMap);