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; } }
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); }
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); }
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); }
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(); }
public GridPointMatrix(GridPoint[][] pt, int width, int height, float layerSyncModifier) { InitValues(pt, width, height, layerSyncModifier, true); }
public GridPointMatrix(GridPoint[][] pt, int width, int height) : this(pt, width, height, 1) { }
public GridPointMatrix(GridPoint[][] pt) : this(pt, 0, 0, 1) { }
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; } } }
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; }
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); }
public GridPoint SetGridPoint(GridPoint gridPt, int x, int y) { this[x, y] = gridPt; return this[x, y]; }