コード例 #1
0
    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++;
            }
        }
    }
コード例 #2
0
    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;
                    }
                }
            }
        }
    }
コード例 #3
0
    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);
            }
        }
    }