/** * Called to draw the preview */ public void OnGUI() { GUILayout.Label("Stages", EditorStyles.boldLabel); GUILayout.BeginArea(new Rect(10, 25, 400, 600)); EditorGUILayout.BeginHorizontal(); scrollBarPosition = EditorGUILayout.BeginScrollView(scrollBarPosition, false, true, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)); GUILayout.Space(10); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("New stage")) { StageEditorController.CreateStage(); } if (GUILayout.Button("Remove all")) { StageEditorController.RemoveAllStages(); } GUILayout.Space(20); EditorGUILayout.EndHorizontal(); GUILayout.Space(30); DisplayAllStagePreviews(); EditorGUILayout.EndToggleGroup(); EditorGUILayout.EndScrollView(); GUILayout.EndArea(); }
/** * Renders the entire editor window from helper class */ void OnGUI() { if (StageEditorController.LoadDatabase()) { this.ShowNotification(new GUIContent("Database reloaded")); } previewView.OnGUI(); editionView.OnGUI(); }
/** * Displays all stages from the model stage list */ private void DisplayAllStagePreviews() { if (StageEditorModel.databaseInstance == null) { return; } // Getting the list of stages from the model List <Stage> stages = StageEditorModel.databaseInstance.stages; if (stages == null) { EditorUtility.DisplayDialog( "Stages list null reference", "Unable to initializes the refernce for the stages list", "Ok"); return; } int stageCount = stages.Count; for (int nStage = 0; nStage < stageCount; ++nStage) { Stage stage = stages[nStage]; EditorGUILayout.LabelField("Stage ID :", stage.StageID.ToString()); EditorGUILayout.LabelField("Stage name :", stage.StageName); EditorGUILayout.LabelField("Stage description :", stage.StageDescription); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Edit", GUILayout.Width(185))) { StageEditorController.EditStage(stage); } if (GUILayout.Button("Remove", GUILayout.Width(185))) { StageEditorController.RemoveStage(stage); return; } GUILayout.Space(10); EditorGUILayout.EndHorizontal(); GUILayout.Space(20); GUILayout.Box("", GUILayout.Width(370), GUILayout.Height(1)); GUILayout.Space(20); } }
/** * Displays the edition area */ public void OnGUI() { // Displays stage properties EditorGUILayout.BeginHorizontal(); GUILayout.BeginArea(new Rect(420, 10, 560, 250)); GUILayout.Label("Edition", EditorStyles.boldLabel); GUILayout.Space(10); EditorGUILayout.LabelField("General"); GUILayout.Space(5); // Displays basic stage informations CurrentStage.StageID = (uint)EditorGUILayout.IntField("Stage ID", (int)CurrentStage.StageID, GUILayout.Width(530)); CurrentStage.StageName = EditorGUILayout.TextField("Stage name", CurrentStage.StageName, GUILayout.Width(530)); CurrentStage.StageDescription = EditorGUILayout.TextField("Stage description", CurrentStage.StageDescription, GUILayout.Width(530)); CurrentStage.StageTimeout = EditorGUILayout.FloatField("Stage timeout", CurrentStage.StageTimeout, GUILayout.Width(530)); GUILayout.Space(10); EditorGUILayout.LabelField("Waves"); GUILayout.Space(5); // Display stage waves informations List <Wave> waves = CurrentStage.StageWaves; EditorGUILayout.LabelField("Waves count", waves.Count.ToString(), GUILayout.Width(210)); GUILayout.Space(20); EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Add Wave", GUILayout.Width(270))) { StageEditorEditionController.AddWave(waves); } if (GUILayout.Button("Remove all", GUILayout.Width(270))) { StageEditorEditionController.RemoveAll(waves); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Create Spawner", GUILayout.Width(270))) { StageEditorEditionController.CreateSpawner(); } if (GUILayout.Button("Edit Spawner", GUILayout.Width(270))) { StageEditorEditionController.EditSpawner(); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); GUILayout.EndArea(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.BeginArea(new Rect(420, 260, 560, 300)); scrollBarPosition = GUILayout.BeginScrollView(scrollBarPosition, false, true, GUIStyle.none, GUI.skin.verticalScrollbar); int waveCount = waves.Count; for (int nWave = 0; nWave < waveCount; ++nWave) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(400); if (GUILayout.Button("Remove", GUILayout.Width(140))) { StageEditorEditionController.RemoveWave(waves, waves[nWave]); return; } EditorGUILayout.EndHorizontal(); waves[nWave].WaveID = (uint)EditorGUILayout.IntField("Wave ID", (int)waves[nWave].WaveID); waves[nWave].WaveName = EditorGUILayout.TextField("Wave name", waves[nWave].WaveName); waves[nWave].WaveBlocking = EditorGUILayout.Toggle("Wave Blocking", waves[nWave].WaveBlocking); waves[nWave].WaveTiming = EditorGUILayout.FloatField("Wave timing", waves[nWave].WaveTiming); waves[nWave].WaveSpawner = EditorGUILayout.ObjectField("Wave spawner", waves[nWave].WaveSpawner, typeof(SpawnerData), false) as SpawnerData; GUILayout.Space(20); GUILayout.Box("", GUILayout.Width(535), GUILayout.Height(1)); GUILayout.Space(20); } EditorGUILayout.EndScrollView(); GUILayout.EndArea(); EditorGUILayout.EndHorizontal(); GUILayout.BeginArea(new Rect(420, 570, 560, 50)); if (State == EditionState.Creation) { if (GUILayout.Button("Create")) { StageEditorController.AddStage(CurrentStage); ToogleCreation(); } } else { if (GUILayout.Button("Update")) { StageEditorController.UpdateStage(SourceStage, CurrentStage); ToogleCreation(); } } GUILayout.EndArea(); }