public InitialPositionEventArgs(InitialPositionState positionState)
 {
     this.positionState = positionState;
 }
    void OnGUI()
    {
        nameSkill   = EditorGUILayout.TextField("Name", nameSkill);
        folderName  = EditorGUILayout.TextField("Save folder", folderName);
        description = EditorGUILayout.TextField("Description", description);
        skillLevel  = EditorGUILayout.IntField("Start skill level", skillLevel);
        skillShot   = EditorGUILayout.Toggle("Is a skillshot", skillShot);

        string assetPath = "Assets/Prefabs/Skills/SkillGUI/";

        string[] search_results = null;
        search_results     = System.IO.Directory.GetFiles(assetPath, "*.prefab", System.IO.SearchOption.AllDirectories);
        indexAreaSkillshot = EditorGUILayout.Popup("Area skillshot", indexAreaSkillshot, search_results);

        targetted = EditorGUILayout.Toggle("Is a targetted skill", targetted);
        passive   = EditorGUILayout.Toggle("Is a passive skill", passive);

        targetSelf    = EditorGUILayout.Toggle("Can hit sender", targetSelf);
        targetEnemies = EditorGUILayout.Toggle("Can hit enemies", targetEnemies);
        if (targetEnemies)
        {
            int cpt = 0;
            foreach (UnitType type in Enum.GetValues(typeof(UnitType)))
            {
                targettableEnemies[cpt] = EditorGUILayout.Toggle(type.ToString(), targettableEnemies[cpt]);
                cpt++;
            }
            EditorGUILayout.Space();
        }

        targetFriendlies = EditorGUILayout.Toggle("Can hit friendlies", targetFriendlies);
        if (targetFriendlies)
        {
            int cpt = 0;
            foreach (UnitType type in Enum.GetValues(typeof(UnitType)))
            {
                targettableFriendlies[cpt] = EditorGUILayout.Toggle(type.ToString(), targettableFriendlies[cpt]);
                cpt++;
            }
            EditorGUILayout.Space();
        }

        initialPosition = (InitialPositionState)EditorGUILayout.EnumPopup("Initial position", initialPosition);
        levelRequired   = EditorGUILayout.IntField("Level required", levelRequired);

        levelAttributesModifiersSize = EditorGUILayout.IntField("Skill levels", levelAttributesModifiersSize);
        if (levelAttributesModifiersSize > attributesModifiers.Count)
        {
            while (levelAttributesModifiersSize > attributesModifiers.Count)
            {
                attributesModifiers.Add(new ListSkillAttributes());
                attributesModifiersSizes.Add(new int());
            }
        }
        else if (levelAttributesModifiersSize < attributesModifiers.Count)
        {
            while (levelAttributesModifiersSize < attributesModifiers.Count)
            {
                attributesModifiers.RemoveAt(attributesModifiers.Count - 1);
                attributesModifiersSizes.RemoveAt(attributesModifiersSizes.Count - 1);
            }
        }

        for (int i = 0; i < attributesModifiers.Count; i++)
        {
            GUIStyle gstyleTextLevel = new GUIStyle(GUI.skin.textArea);
            gstyleTextLevel.margin.left += 10;
            GUIStyle gstyleTextAttributes = new GUIStyle(GUI.skin.textArea);
            gstyleTextAttributes.margin.left += 20;
            GUIStyle gstyleEnum = new GUIStyle(GUI.skin.GetStyle("MiniToolbarPopup"));
            gstyleEnum.margin.left += 24;

            attributesModifiersSizes[i] = EditorGUILayout.IntField("Level " + (i + 1) + " modifiers", attributesModifiersSizes[i], gstyleTextLevel);
            if (attributesModifiers[i].skillAttributes == null)
            {
                ListSkillAttributes lsa = new ListSkillAttributes();
                lsa.skillAttributes    = new List <SkillAttribute>();
                attributesModifiers[i] = lsa;
            }

            if (attributesModifiersSizes[i] > attributesModifiers[i].skillAttributes.Count)
            {
                while (attributesModifiersSizes[i] > attributesModifiers[i].skillAttributes.Count)
                {
                    attributesModifiers[i].skillAttributes.Add(new SkillAttribute());
                }
            }
            else if (attributesModifiersSizes[i] < attributesModifiers[i].skillAttributes.Count)
            {
                while (attributesModifiersSizes[i] < attributesModifiers[i].skillAttributes.Count)
                {
                    attributesModifiers[i].skillAttributes.RemoveAt(attributesModifiers[i].skillAttributes.Count - 1);
                }
            }

            for (int j = 0; j < attributesModifiers[i].skillAttributes.Count; j++)
            {
                SkillAttribute sa = new SkillAttribute();
                sa.nameSkillAttribute = (NameSkillAttribute)EditorGUILayout.EnumPopup("Attribute name", attributesModifiers[i].skillAttributes[j].nameSkillAttribute, gstyleEnum);
                sa.value = EditorGUILayout.FloatField("Value", attributesModifiers[i].skillAttributes[j].value, gstyleTextAttributes);
                attributesModifiers[i].skillAttributes[j] = sa;
            }

            EditorGUILayout.Space();
        }

        ps_skill = (GameObject)EditorGUILayout.ObjectField("Particle System", ps_skill, typeof(GameObject), true);

        if (GUILayout.Button("Add new skill"))
        {
            AddNewSkill(search_results);
        }
    }