예제 #1
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        Wave wave = (Wave)target;

        if (wave.commandQueue.Count > 0)
        {
            if (wave.commandQueue.First().type == WaveCommand.CommandType.Utility)// || wave.commandQueue.Last().type == WaveCommand.CommandType.Utility)
            {
                EditorGUILayout.HelpBox("Utility commands at the beginning of the command queue will be ignored by the spawner.", MessageType.Warning);
            }
        }
        EditorGUILayout.Space();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.Space();
        if (GUILayout.Button("Add Command"))
        {
            wave.commandQueue.Add(new WaveCommand());
        }
        EditorGUILayout.Space();
        EditorGUILayout.EndHorizontal();

        for (int i = 0; i < wave.commandQueue.Count; i++)
        {
            WaveCommand command = wave.commandQueue[i];
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Command " + (i + 1));
            if (GUILayout.Button("Delete"))
            {
                wave.commandQueue.RemoveAt(i);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.BeginVertical();
            if (i > 0)
            {
                if (GUILayout.Button("Move Up"))
                {
                    Swap(wave.commandQueue, i, i - 1);
                }
            }
            if (i < wave.commandQueue.Count - 1)
            {
                if (GUILayout.Button("Move Down"))
                {
                    Swap(wave.commandQueue, i, i + 1);
                }
            }
            EditorGUILayout.EndVertical();

            EditorGUILayout.BeginVertical();
            command.type = (WaveCommand.CommandType)EditorGUILayout.EnumPopup(command.type);

            EditorGUILayout.BeginHorizontal();
            command.SetNFromEditorScript(EditorGUILayout.IntField(command.N));

            if (command.type == WaveCommand.CommandType.Spawning)
            {
                command.enemyIndex = EditorGUILayout.Popup(command.enemyIndex, wave.Enemies.Select(x => x.name).ToArray());
            }
            else
            {
                command.utility = (WaveCommand.UtilityCommand)EditorGUILayout.EnumPopup(command.utility);
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
            EditorGUILayout.EndHorizontal();
        }
    }