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); } } } }
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(); }