public void FallGemsIntoEmptyPositions() { for (int x = 0; x < gridWidth; x++) { for (int y = 0; y < gridHeight; y++) { GemGridPosition gemGridPosition = grid.GetGridObject(x, y); if (!gemGridPosition.IsEmpty()) { // Grid Position has Gem for (int i = y - 1; i >= 0; i--) { GemGridPosition nextGemGridPosition = grid.GetGridObject(x, i); if (nextGemGridPosition.IsEmpty()) { gemGridPosition.GetGemGrid().SetGemXY(x, i); nextGemGridPosition.SetGemGrid(gemGridPosition.GetGemGrid()); gemGridPosition.ClearGemGrid(); gemGridPosition = nextGemGridPosition; } else { // Next Grid Position is not empty, stop looking break; } } } } } }
private GemSO GetGemSO(int x, int y) { if (!IsValidPosition(x, y)) { return(null); } GemGridPosition gemGridPosition = grid.GetGridObject(x, y); if (gemGridPosition.GetGemGrid() == null) { return(null); } return(gemGridPosition.GetGemGrid().GetGem()); }
public void SwapGridPositions(int startX, int startY, int endX, int endY) { if (!IsValidPosition(startX, startY) || !IsValidPosition(endX, endY)) { return; // Invalid Position } if (startX == endX && startY == endY) { return; // Same Position } GemGridPosition startGemGridPosition = grid.GetGridObject(startX, startY); GemGridPosition endGemGridPosition = grid.GetGridObject(endX, endY); GemGrid startGemGrid = startGemGridPosition.GetGemGrid(); GemGrid endGemGrid = endGemGridPosition.GetGemGrid(); startGemGrid.SetGemXY(endX, endY); endGemGrid.SetGemXY(startX, startY); startGemGridPosition.SetGemGrid(endGemGrid); endGemGridPosition.SetGemGrid(startGemGrid); }