public GridPoint GetAdjGridPt(GridPoint gridPt, CardinalDirections direction)
        {
            GridPointMatrix matrix = gridPt.ParentGrid;

            switch (direction)
            {
                case CardinalDirections.N:
                    return matrix[gridPt.GridCoordinatesAbs.X, gridPt.GridCoordinatesAbs.Y - 1];
                case CardinalDirections.NE:
                    return matrix[gridPt.GridCoordinatesAbs.X - 1, gridPt.GridCoordinatesAbs.Y - 1];
                case CardinalDirections.E:
                    return matrix[gridPt.GridCoordinatesAbs.X + 1, gridPt.GridCoordinatesAbs.Y];
                case CardinalDirections.SE:
                    return matrix[gridPt.GridCoordinatesAbs.X + 1, gridPt.GridCoordinatesAbs.Y + 1];
                case CardinalDirections.S:
                    return matrix[gridPt.GridCoordinatesAbs.X, gridPt.GridCoordinatesAbs.Y + 1];
                case CardinalDirections.SW:
                    return matrix[gridPt.GridCoordinatesAbs.X - 1, gridPt.GridCoordinatesAbs.Y + 1];
                case CardinalDirections.W:
                    return matrix[gridPt.GridCoordinatesAbs.X - 1, gridPt.GridCoordinatesAbs.Y];
                case CardinalDirections.NW:
                    return matrix[gridPt.GridCoordinatesAbs.X - 1, gridPt.GridCoordinatesAbs.Y - 1];
                default:
                    return null;
            }
        }
Beispiel #2
0
        public GridPointMatrix(int columnCount, int rowCount, int width, int height, float layerSyncModifier)
        {
            var pt = new GridPoint[columnCount][];

            for (int i = 0; i < pt.Length; i++)
                pt[i] = new GridPoint[rowCount];

            InitValues(pt, width, height, layerSyncModifier, true);
        }
Beispiel #3
0
        internal GridPoint(GridPoint gridPoint, Point gridCoord)
        {
            parentGrid = gridPoint.parentGrid;
            gridCoordinates = gridCoord;
            disableAddToRefreshQueue = gridPoint.disableAddToRefreshQueue;
            zOrder = gridPoint.zOrder;
            visible = gridPoint.visible;
            frame = gridPoint.frame;
            rasterOp = gridPoint.rasterOp;
            enableFog = gridPoint.enableFog;
            Tag = gridPoint.Tag;

            // associate new GridPoint (child, this) with existing GridPoint (parent)
            gridPoint.AddChild(this);
        }
Beispiel #4
0
        private GridPoint GetIndexer_Wrap(int x, int y)
        {
            // if not wrapping horizontally and outside of x bound range, return null
            if ((!_wrapHoriz) && ((x > _matrix.GetUpperBound(0)) || (x < 0)))
            {
                return(null);
            }

            // if not wrapping vertically and outside of y bound range, return null
            if ((!_wrapVerti) && ((y > _matrix[x].GetUpperBound(0)) || (y < 0)))
            {
                return(null);
            }

            // check "non-wrapping" coordinates
            GridPoint newGridPoint = GetIndexer_NoWrap(x, y);

            // if outside of "non-wrapping" coordinates, find the equivalent point
            if (newGridPoint == null)
            {
                // find the coordinated of the GridPoint being "wrapped"
                PointF actualGridPoint =
                    CoordinateSystem.FindEquivGridCoord(new PointF((float)x, (float)y), _matrix.GetUpperBound(0), _matrix[x].GetUpperBound(0));

                // capture GridPoint if x-y coord already exists in wrappedGridPts
                foreach (GridPoint pt in wrappedGridPts)
                {
                    if ((pt.gridCoordinates.X == x) && (pt.gridCoordinates.Y == y))
                    {
                        newGridPoint = pt;
                        break;
                    }
                }

                // if not already found, create and add to wrappedGridPts, and associate with "parent"
                if (newGridPoint == null)
                {
                    newGridPoint = new GridPoint(_matrix[(int)actualGridPoint.X][(int)actualGridPoint.Y],
                                                 new Point(x, y));
                    wrappedGridPts.Add(newGridPoint);
                }
            }

            return(newGridPoint);
        }
Beispiel #5
0
 public GridPoint SetGridPoint(GridPoint gridPt, int x, int y)
 {
     this[x, y] = gridPt;
     return(this[x, y]);
 }
 public GridPoint GetAdjGridPt(GridPoint gridPt, CardinalDirections direction)
 {
     throw new NotImplementedException();
 }
Beispiel #7
0
 public GridPointMatrix(GridPoint[][] pt, int width, int height, float layerSyncModifier)
 {
     InitValues(pt, width, height, layerSyncModifier, true);
 }
Beispiel #8
0
 public GridPointMatrix(GridPoint[][] pt, int width, int height)
     : this(pt, width, height, 1)
 {
 }
Beispiel #9
0
 public GridPointMatrix(GridPoint[][] pt)
     : this(pt, 0, 0, 1)
 {
 }
Beispiel #10
0
 private void SaveGridCoordinatesToGridPoints()
 {
     // let each GridPoint in array know its position in the array
     for (int X = 0; X <= _matrix.GetUpperBound(0); X++)
     {
         for (int Y = 0; Y <= _matrix[X].GetUpperBound(0); Y++)
         {
             _matrix[X][Y] = new GridPoint(this);
             _matrix[X][Y].gridCoordinates = new Point(X, Y);
             _matrix[X][Y].DoNotRedrawChanges = false;
         }
     }
 }
Beispiel #11
0
        private GridPoint GetIndexer_Wrap(int x, int y)
        {
            // if not wrapping horizontally and outside of x bound range, return null
            if ((!_wrapHoriz) && ((x > _matrix.GetUpperBound(0)) || (x < 0)))
                return null;

            // if not wrapping vertically and outside of y bound range, return null
            if ((!_wrapVerti) && ((y > _matrix[x].GetUpperBound(0)) || (y < 0)))
                return null;

            // check "non-wrapping" coordinates
            GridPoint newGridPoint = GetIndexer_NoWrap(x, y);

            // if outside of "non-wrapping" coordinates, find the equivalent point
            if (newGridPoint == null)
            {
                // find the coordinated of the GridPoint being "wrapped"
                PointF actualGridPoint =
                    CoordinateSystem.FindEquivGridCoord(new PointF((float)x, (float)y), _matrix.GetUpperBound(0), _matrix[x].GetUpperBound(0));

                // capture GridPoint if x-y coord already exists in wrappedGridPts
                foreach (GridPoint pt in wrappedGridPts)
                {
                    if ((pt.gridCoordinates.X == x) && (pt.gridCoordinates.Y == y))
                    {
                        newGridPoint = pt;
                        break;
                    }
                }

                // if not already found, create and add to wrappedGridPts, and associate with "parent"
                if (newGridPoint == null)
                {
                    newGridPoint = new GridPoint(_matrix[(int)actualGridPoint.X][(int)actualGridPoint.Y],
                        new Point(x, y));
                    wrappedGridPts.Add(newGridPoint);
                }
            }

            return newGridPoint;
        }
Beispiel #12
0
        protected void InitValues(GridPoint[][] pt, int width, int height, float layerSyncModifier, bool addToInstances)
        {
            _matrix = pt;
            _layerSyncModifier = layerSyncModifier;
            _tileWidth = width;
            _tileHeight = height;
            _visible = true;
            _gridPtZeroPxl = new Point(0, 0);
            // let each GridPoint in array know its position in the array
            SaveGridCoordinatesToGridPoints();
            RefreshQueue = new RefreshQueue(this);
            refQueueDel = new RefreshQueueAreaAddedEventHandler(RefreshQueueNewTile);
            RefreshQueue.RefreshQueueAreaAdded += refQueueDel;
            FindIndexedGridPoint = new GetIndexer(GetIndexer_NoWrap);
            _movement = new Movement(this);

            if (addToInstances)
                _allGridPointMatrix.Add(this);
        }
Beispiel #13
0
 public GridPoint SetGridPoint(GridPoint gridPt, int x, int y)
 {
     this[x, y] = gridPt;
     return this[x, y];
 }