private void PlaceMines(int minesToPlace) { while (minesCount < minesToPlace) { int x = UnityEngine.Random.Range(0, grid.GetWidth()); int y = UnityEngine.Random.Range(0, grid.GetHeight()); MapGridObject mapGridObject = grid.GetGridObject(x, y); if (mapGridObject.GetGridObjectType() != MapGridObject.Type.Mine) { mapGridObject.SetGridObjectType(MapGridObject.Type.Mine); minesCount++; } } }
private void PlaceMinesIndicators() { for (int x = 0; x < grid.GetWidth(); x++) { for (int y = 0; y < grid.GetHeight(); y++) { MapGridObject mapGridObject = grid.GetGridObject(x, y); if (mapGridObject.GetGridObjectType() == MapGridObject.Type.Empty) { List <MapGridObject> neighbourList = GetNeighbourList(x, y); int mineCount = 0; foreach (MapGridObject neighbour in neighbourList) { if (neighbour.GetGridObjectType() == MapGridObject.Type.Mine) { mineCount++; } } switch (mineCount) { case 1: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_1); break; case 2: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_2); break; case 3: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_3); break; case 4: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_4); break; case 5: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_5); break; case 6: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_6); break; case 7: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_7); break; case 8: mapGridObject.SetGridObjectType(MapGridObject.Type.MineNum_8); break; } } } } }
private void SetupVisualNode(Transform visualNode, MapGridObject mapGridObject) { SpriteRenderer iconSpriteRenderer = visualNode.Find(GRID_OBJECT_ICON_SPRITE_NAME).GetComponent <SpriteRenderer>(); TextMeshPro indicatorText = visualNode.Find(GRID_OBJECT_MINE_INDICATOR_NAME).GetComponent <TextMeshPro>(); Transform nodeTopTransform = visualNode.Find(GRID_OBJECT_TOP_SPRITE_NAME); if (mapGridObject.IsRevealed() || revealMap) { nodeTopTransform.gameObject.SetActive(false); switch (mapGridObject.GetGridObjectType()) { default: case MapGridObject.Type.Empty: indicatorText.gameObject.SetActive(false); iconSpriteRenderer.gameObject.SetActive(false); break; case MapGridObject.Type.Mine: indicatorText.gameObject.SetActive(false); iconSpriteRenderer.gameObject.SetActive(true); iconSpriteRenderer.sprite = mineSprite; break; case MapGridObject.Type.MineNum_1: case MapGridObject.Type.MineNum_2: case MapGridObject.Type.MineNum_3: case MapGridObject.Type.MineNum_4: case MapGridObject.Type.MineNum_5: case MapGridObject.Type.MineNum_6: case MapGridObject.Type.MineNum_7: case MapGridObject.Type.MineNum_8: indicatorText.gameObject.SetActive(true); iconSpriteRenderer.gameObject.SetActive(false); switch (mapGridObject.GetGridObjectType()) { default: case MapGridObject.Type.MineNum_1: indicatorText.SetText("1"); break; case MapGridObject.Type.MineNum_2: indicatorText.SetText("2"); break; case MapGridObject.Type.MineNum_3: indicatorText.SetText("3"); break; case MapGridObject.Type.MineNum_4: indicatorText.SetText("4"); break; case MapGridObject.Type.MineNum_5: indicatorText.SetText("5"); break; case MapGridObject.Type.MineNum_6: indicatorText.SetText("6"); break; case MapGridObject.Type.MineNum_7: indicatorText.SetText("7"); break; case MapGridObject.Type.MineNum_8: indicatorText.SetText("8"); break; } break; } } else { nodeTopTransform.gameObject.SetActive(true); if (mapGridObject.IsFlagged()) { iconSpriteRenderer.gameObject.SetActive(true); iconSpriteRenderer.sortingOrder = 4; iconSpriteRenderer.sprite = flagSprite; } else { iconSpriteRenderer.gameObject.SetActive(false); } } }