示例#1
0
    /**
     * 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();
    }
示例#2
0
    /**
     * Renders the entire editor window from helper class
     */
    void OnGUI()
    {
        if (StageEditorController.LoadDatabase())
        {
            this.ShowNotification(new GUIContent("Database reloaded"));
        }

        previewView.OnGUI();
        editionView.OnGUI();
    }
示例#3
0
    /**
     * 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);
        }
    }
示例#4
0
    /**
     * 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();
    }