Exemplo n.º 1
0
    public override void OnInspectorGUI()
    {
        base.DrawDefaultInspector();
        PlayerAttack playerAttack = target as PlayerAttack;

        // Update if the attack lists were altered
        bool update = playerAttack.Clean();

        GUILayout.Space(20);

        GUILayout.BeginHorizontal();
        GUILayout.Label("Attack 1 Moves:");

        if (GUILayout.Button("Add Attack 1 Move"))
        {
            CreateChildPlayerAttack(playerAttack, playerAttack.AddAttack1Move);
        }

        GUILayout.EndHorizontal();

        if (DrawPlayerAttacks(playerAttack.Attack1Moves.Where(x => x != null).ToList()))
        {
            update = true;
        }

        GUILayout.Space(20);

        GUILayout.BeginHorizontal();
        GUILayout.Label("Attack 2 Moves:");

        if (GUILayout.Button("Add Attack 2 Move"))
        {
            CreateChildPlayerAttack(playerAttack, playerAttack.AddAttack2Move);
        }
        GUILayout.EndHorizontal();

        if (DrawPlayerAttacks(playerAttack.Attack2Moves.Where(x => x != null).ToList()))
        {
            update = true;
        }

        GUILayout.Space(20);


        if (useTemplate)
        {
            GUILayout.BeginHorizontal();

            GUILayout.Label("Use Template To Set Values");
            string[] templatePaths = GetAttackTemplates();
            selection = EditorGUILayout.Popup(selection, StripPaths(templatePaths));

            GUILayout.EndHorizontal();

            if (GUILayout.Button("Set With " + StripPaths(templatePaths)[selection]))
            {
                var template = AssetDatabase.LoadAssetAtPath(templatePaths[selection], typeof(PlayerAttackTemplate));
                (template as PlayerAttackTemplate).SetWithTemplate(ref playerAttack);
                useTemplate = false;
            }

            GUILayout.Space(20);

            if (GUILayout.Button("Cancel"))
            {
                useTemplate = false;
            }
        }
        else
        {
            if (GUILayout.Button("Use Template To Set Values"))
            {
                useTemplate = true;
            }
        }

        if (update)
        {
            try{
                var instance = PrefabUtility.FindPrefabRoot(playerAttack.AccessAttackHandler.gameObject);
                PrefabUtility.ReplacePrefab(instance, PrefabUtility.GetPrefabParent(instance), ReplacePrefabOptions.ConnectToPrefab);
            }
            catch {
            }
        }
    }