public void DrawGridContent(SpriteBatch spriteBatch, Texture2D texture) { for (int x = 0; x < CountX; x++) { for (int y = 0; y < CountY; y++) { GridEntity currentGrid = GridBox[x, y]; switch (currentGrid.Status) { case GridStatus.Mouseover: spriteBatch.Draw(texture, currentGrid.Rect, MouseoverColor); break; case GridStatus.Occupied: spriteBatch.Draw(texture, currentGrid.Rect, OccupiedColor); break; case GridStatus.Vacant: spriteBatch.Draw(texture, currentGrid.Rect, AreaColor); break; case GridStatus.Selected: spriteBatch.Draw(texture, currentGrid.Rect, currentGrid.Color); break; } } } }
private static void InitializeGridDataStructure() { GridRect = new Rectangle(OffsetX + BorderLineWidth, OffsetY + BorderLineWidth, GridSheetWidth, GridSheetHeight); GridBox = new GridEntity[CountX, CountY]; for (int y = 0; y < CountY; y++) { for (int x = 0; x < CountX; x++) { int gridLocalMinX = GridSize * x + OffsetX; int gridLocalMinY = GridSize * y + OffsetY; Rectangle gridRect = new Rectangle(gridLocalMinX + BorderLineWidth, gridLocalMinY + BorderLineWidth, GridSize, GridSize); GridBox[x, y] = new GridEntity(gridRect, GridBoxType.None, GridStatus.Vacant, false, false); } } }
public void DrawMouseAction(Point pos, MouseState state, Color color) { if (mouseWithinGrid(pos)) { if (state.LeftButton == ButtonState.Pressed) { Point targetIndex = mousePosDetector.getIntersectIndex(pos); GridEntity targetGrid = GridBox[targetIndex.X, targetIndex.Y]; targetGrid.Status = GridStatus.Selected; targetGrid.Color = color; } else if (state.RightButton == ButtonState.Pressed) { Point targetIndex = mousePosDetector.getIntersectIndex(pos); GridEntity targetGrid = GridBox[targetIndex.X, targetIndex.Y]; targetGrid.Status = GridStatus.Vacant; } } }