コード例 #1
0
    private void CreateGrid(LevelData levelData)
    {
        m_cells = new List <List <GridCell> >();
        for (int x = 0; x < m_gridWidth; x++)
        {
            for (int y = 0; y < m_gridHeight; y++)
            {
                GameObject prefab = null;
                if ((x + y) % 2 == 0)
                {
                    prefab = m_evenCellBackground;
                }
                else
                {
                    prefab = m_oddCellBackground;
                }

                LevelData.Placement placement = null;
                if (levelData != null)
                {
                    placement = levelData.GetPlacement(x, y);
                }

                GameObject gameObject = (GameObject)GameObject.Instantiate(prefab, Vector3.zero, Quaternion.identity);
                gameObject.transform.SetParent(this.transform);
                gameObject.transform.localPosition = new Vector3((x - m_gridWidth / 2.0f) * m_cellWidth + m_cellWidth / 2.0f, -(y - m_gridHeight / 2.0f) * m_cellHeight - m_cellWidth / 2.0f);

                if (y == 0)
                {
                    m_cells.Add(new List <GridCell>());
                }

                if (placement != null && placement.type == LevelData.PlaceableType.EmptyCell)
                {
                    Destroy(gameObject);
                    m_cells[m_cells.Count - 1].Add(null);
                }
                else
                {
                    GridCell gridCell = gameObject.AddComponent <GridCell>();
                    gridCell.SetCoords(x, y);
                    m_cells[m_cells.Count - 1].Add(gridCell);
                }

                if (placement != null)
                {
                    CreateGamePiece(placement.type, placement.x, placement.y, placement.team);
                }
            }
        }
    }
コード例 #2
0
    private void OnGUI()
    {
        if (m_reorderableLevelList == null)
        {
            return;
        }

        GUILayout.BeginHorizontal();

        sidebarScrollPosition = EditorGUILayout.BeginScrollView(sidebarScrollPosition, false, true, GUILayout.Width(235));

        EditorGUILayout.BeginVertical();

        if (GUILayout.Button("Save"))
        {
            int numLevels = m_reorderableLevelList.list.Count;
            for (int i = 0; i < numLevels; i++)
            {
                LevelData levelData = (LevelData)m_reorderableLevelList.list[i];
                string    assetPath = AssetDatabase.GetAssetPath(levelData);
                if (assetPath != "")
                {
                    AssetDatabase.RenameAsset(assetPath, i.ToString());
                }
            }

            for (int i = 0; i < numLevels; i++)
            {
                string    path      = "Assets/Resources/Levels/Level" + (i + 1).ToString() + ".asset";
                LevelData levelData = (LevelData)m_reorderableLevelList.list[i];
                string    assetPath = AssetDatabase.GetAssetPath(levelData);
                if (assetPath == "")
                {
                    AssetDatabase.CreateAsset(levelData, path);
                }
                else
                {
                    AssetDatabase.RenameAsset(assetPath, "Level" + (i + 1).ToString());
                }
            }

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
        }

        m_reorderableLevelList.DoLayoutList();

        EditorGUILayout.EndVertical();

        GUILayout.EndScrollView();

        GUILayout.BeginVertical();

        GUILayout.BeginHorizontal();

        if (m_currentLevelData != null)
        {
            GUILayout.BeginVertical();
            m_currentPlaceableType          = (LevelData.PlaceableType)EditorGUILayout.EnumPopup("Placeable", m_currentPlaceableType);
            m_currentTeamIndex              = EditorGUILayout.IntField("Team Index", m_currentTeamIndex);
            m_currentLevelData.m_gridWidth  = EditorGUILayout.IntField("Grid Width", m_currentLevelData.m_gridWidth);
            m_currentLevelData.m_gridHeight = EditorGUILayout.IntField("Grid Height", m_currentLevelData.m_gridHeight);
            m_zoomSlider = EditorGUILayout.Slider("Zoom", m_zoomSlider, 0.1f, 1.0f);
            GUILayout.EndVertical();
        }

        GUILayout.EndHorizontal();

        levelAreaScrollPosition = EditorGUILayout.BeginScrollView(levelAreaScrollPosition, true, true);
        if (m_currentLevelData != null)
        {
            for (int y = 0; y < m_currentLevelData.m_gridHeight; y++)
            {
                GUILayout.BeginHorizontal();
                for (int x = 0; x < m_currentLevelData.m_gridWidth; x++)
                {
                    Texture texture = null;
                    GUI.backgroundColor = (y + x) % 2 == 0?Color.grey:Color.white;
                    GUI.contentColor    = Color.white;
                    LevelData.Placement placement = m_currentLevelData.GetPlacement(x, y);
                    if (placement != null)
                    {
                        switch (placement.type)
                        {
                        case LevelData.PlaceableType.EmptyCell:
                            GUI.backgroundColor = Color.clear;
                            break;

                        case LevelData.PlaceableType.Pawn:
                            texture = m_pawnTexture;
                            break;

                        case LevelData.PlaceableType.Bishop:
                            texture = m_bishopTexture;
                            break;

                        case LevelData.PlaceableType.Knight:
                            texture = m_knightTexture;
                            break;

                        case LevelData.PlaceableType.Rook:
                            texture = m_rookTexture;
                            break;

                        case LevelData.PlaceableType.Queen:
                            texture = m_queenTexture;
                            break;

                        case LevelData.PlaceableType.King:
                            texture = m_kingTexture;
                            break;
                        }

                        if (placement.team != 0)
                        {
                            GUI.contentColor = Color.black;
                        }
                    }

                    if (GUILayout.Button(texture, new GUILayoutOption[] { GUILayout.Width(50 * m_zoomSlider), GUILayout.Height(50 * m_zoomSlider) }))
                    {
                        //paint
                        switch (m_currentPlaceableType)
                        {
                        case LevelData.PlaceableType.DefaultCell:
                            m_currentLevelData.RemovePlacement(x, y);
                            break;

                        default:
                            m_currentLevelData.SetPlacement(m_currentPlaceableType, x, y, m_currentTeamIndex);
                            break;
                        }

                        EditorUtility.SetDirty(m_currentLevelData);
                    }
                    //GUILayout.Box(texture, new GUILayoutOption[]{GUILayout.Width(50 * m_zoomSlider), GUILayout.Height(50 * m_zoomSlider)});
                }
                GUILayout.EndHorizontal();
            }
        }
        GUILayout.EndScrollView();

        GUILayout.EndVertical();

        GUILayout.EndHorizontal();
    }