Exemplo n.º 1
0
        /// <summary>
        /// Merges the loaded layers!
        /// </summary>
        public void MergeLayers()
        {
            if (this.layers.Count() == 0)
            {
                throw new Exception("Perform LoadLayers() first.");
            }

            mapTiles = new Texture2D[this.layers.GetFirst().data.GetLength(0), this.layers.GetFirst().data.GetLength(1)];
            for (int i = 0; i < this.layers.GetFirst().data.GetLength(0); i++)
            {
                for (int j = 0; j < this.layers.GetFirst().data.GetLength(1); j++)
                {
                    CustomArrayList<Texture2D> preBlend = new CustomArrayList<Texture2D>();
                    for (int k = 0; k < this.layers.Count(); k++)
                    {
                        int data = this.layers.ElementAt(k).data[i, j];
                        if (data != -1) preBlend.AddLast(this.individualTiles[data]);
                    }
                    mapTiles[i, j] = this.BlendTextures(preBlend.ToArray(), BlendMode.PriorityBlend);

                    // One step closer to completion
                    Game1.GetInstance().currentLoadProgress += 9;
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Merges a linked list of textures.
 /// </summary>
 /// <param name="textures"></param>
 /// <returns></returns>
 public Texture2D MergeTextures(CustomArrayList<Texture2D> textures)
 {
     return this.MergeTextures(textures.ToArray());
 }
Exemplo n.º 3
0
        /// <summary>
        /// Gets the pixels between points.
        /// </summary>
        /// <param name="p1">Point one</param>
        /// <param name="p2">Point two</param>
        /// <param name="spacing">The pixel spacing between the points (default should be 1). Lower than 1 will use 1.</param>
        /// <returns></returns>
        public Point[] PixelsBetweenPoints(Point p1, Point p2, int spacing)
        {
            if (spacing < 1) spacing = 1;
            int xDiff = p2.X - p1.X;
            int yDiff = p2.Y - p1.Y;

            double maxWidth = Math.Max(Math.Abs(xDiff), Math.Abs(yDiff));

            double xDelta = (xDiff / maxWidth) * spacing;
            // Console.Out.WriteLine("xDelta: " + xDelta);
            double yDelta = (yDiff / maxWidth) * spacing;
            // Console.Out.WriteLine("yDelta: " + yDelta);

            CustomArrayList<Point> pointList = new CustomArrayList<Point>();
            Point currentPoint = p1;
            Point previousPoint = new Point(-100, -100);
            double currentX = p1.X, currentY = p1.Y;
            for (int i = 0; i < maxWidth / spacing; i++)
            {
                currentX += xDelta;
                currentY += yDelta;

                currentPoint.X = (int)currentX;
                currentPoint.Y = (int)currentY;

                Point newPoint = new Point(currentPoint.X, currentPoint.Y);
                if (previousPoint != null && !previousPoint.Equals(newPoint))
                {
                    // Console.Out.WriteLine(i + ". Adding point to list: " + newPoint);
                    pointList.AddLast(newPoint);
                }
                previousPoint = newPoint;
            }
            return pointList.ToArray();
        }