Ejemplo n.º 1
0
 public void CreateGamePiece(LevelData.PlaceableType type, int x, int y, int teamId)
 {
     Debug.Log(type.ToString() + ", " + x + ", " + y + ", " + teamId);
     switch (type)
     {
     case LevelData.PlaceableType.Bishop:
     case LevelData.PlaceableType.King:
     case LevelData.PlaceableType.Knight:
     case LevelData.PlaceableType.Pawn:
     case LevelData.PlaceableType.Queen:
     case LevelData.PlaceableType.Rook:
         CreateGamePiece("GamePiece" + type.ToString(), x, y, teamId);
         break;
     }
 }
Ejemplo n.º 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();
    }