Пример #1
0
        public override List <IExplicitShape <GridPoint2> > Execute(IEnumerable <IExplicitShape <GridPoint2> > input)
        {
            if (input == null)
            {
                return(null);
            }

            var inputList = input.ToList();

            if (inputList.Count == 0)
            {
                return(inputList);                //leave it empty
            }

            if (inputList.Count == 1)
            {
                //product of 1 shape with empty is empty.
                return(new List <IExplicitShape <GridPoint2> >());
            }

            var shape1 = inputList[0];
            var shape2 = inputList[1];
            var scale  = scaleFactor.GetGridPoint();
            var shape  = shape1.Product(shape2, scale);

            var storageRect = new GridRect(
                shape1.Bounds.Point.Mul(scale) - shape2.Bounds.Size,
                shape1.Bounds.Size.Mul(scale) + shape2.Bounds.Size * 2);

            return(new List <IExplicitShape <GridPoint2> >
            {
                shape.ToExplicit(storageRect)
            });
        }
Пример #2
0
        protected override IExplicitShape <GridPoint2> Generate()
        {
            var dimensions1 = dimensions.GetGridPoint();

            return(ImplicitShape
                   .Parallelogram(dimensions1)
                   .ToExplicit(new GridRect(GridPoint2.Zero, dimensions1)));
        }
Пример #3
0
        public override IExplicitShape <GridPoint2> Transform(IExplicitShape <GridPoint2> input)
        {
            var offset1     = offset.GetGridPoint();
            var shape       = input.Translate(offset1);
            var storageRect = GridRect.Translate(input.Bounds, offset1);

            return(shape.ToExplicit(storageRect));
        }
Пример #4
0
        private Grid2 <SpriteCell> CreateGrid()
        {
            var dimensions = gridDimensions.GetGridPoint();
            var shape      = ExplicitShape.Hex.FlatFatRectangle(dimensions);
            var grid       = new Grid2 <SpriteCell>(shape);

            return(grid);
        }
Пример #5
0
        private Grid2 <SpriteCell> CreateGrid()
        {
            var dimensions = gridDimensions.GetGridPoint();
            var shape      = ImplicitShape.Parallelogram(dimensions);
            var storage    = shape.ToExplicit(new GridRect(GridPoint2.Zero, dimensions));
            var grid       = new Grid2 <SpriteCell>(storage);

            return(grid);
        }
Пример #6
0
        private Grid2 <SpriteCell> CreateGrid()
        {
            var gridDimensions = new InspectableGridPoint2
            {
                x = radius,
                y = radius
            };

            var dimensions = gridDimensions.GetGridPoint();
            var shape      = ImplicitShape.Hexagon(radius);
            var storage    = shape.ToExplicit(new GridRect(GridPoint2.Zero, dimensions));
            var grid       = new Grid2 <SpriteCell>(storage);

            return(grid);
        }
Пример #7
0
        public override List <IExplicitShape <GridPoint2> > Execute(IEnumerable <IExplicitShape <GridPoint2> > input)
        {
            var inputList = input.ToList();

            var shape1 = inputList[0];
            var shape2 = inputList[1];
            var scale  = scaleFactor.GetGridPoint();
            var shape  = shape1.Product(shape2, scale);

            var storageRect = new GridRect(
                shape1.Bounds.Point.Mul(scale) - shape2.Bounds.Size,
                shape1.Bounds.Size.Mul(scale) + shape2.Bounds.Size * 2);

            return(new List <IExplicitShape <GridPoint2> >
            {
                shape.ToExplicit(storageRect)
            });
        }
Пример #8
0
        protected override IExplicitShape <GridPoint2> Generate()
        {
            var size = dimensions.GetGridPoint();

            switch (hexType)
            {
            case HexType.Pointy:
                switch (type)
                {
                case RectangleType.Normal:
                    return(ExplicitShape.Hex.PointyRectangle(size));

                case RectangleType.Fat:
                    return(ExplicitShape.Hex.PointyFatRectangle(size));

                case RectangleType.Thin:
                    return(ExplicitShape.Hex.PointyThinRectangle(size));

                default:
                    throw new ArgumentOutOfRangeException();
                }

            case HexType.Flat:
                switch (type)
                {
                case RectangleType.Normal:
                    return(ExplicitShape.Hex.FlatRectangle(size));

                case RectangleType.Fat:
                    return(ExplicitShape.Hex.FlatFatRectangle(size));

                case RectangleType.Thin:
                    return(ExplicitShape.Hex.FlatThinRectangle(size));

                default:
                    throw new ArgumentOutOfRangeException();
                }

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #9
0
        protected override IExplicitShape <GridPoint2> Generate()
        {
            var dimensions1 = dimensions.GetGridPoint();

            return(ExplicitShape.Parallelogram(dimensions1));
        }