Beispiel #1
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        Transition transition = (Transition)target;
        Vector2    BoxSize    = transition.gameObject.GetComponent <BoxCollider2D>().size;

        if (BoxSize != transition.LevelSize)
        {
            showMessage = false;
        }

        opt = (OPTIONS)EditorGUILayout.EnumPopup("Anchor:", opt);

        int operation = (int)opt;

        GUILayout.BeginHorizontal();

        if (GUILayout.Button("ApplySize"))
        {
            if (LevelSize.x >= 40 && LevelSize.y >= 22f)
            {
                transition.apply(operation);
                showMessage = true;
            }
            else
            {
                if (EditorUtility.DisplayDialog("Anomaly Detected", "Either the height or width of the level is smaller than the acceptable value. (40 x 22)", "Reset to default"))
                {
                    transition.ResetSize(BoxSize);
                }
            }
        }

        if (GUILayout.Button("FixEdges"))
        {
            transition.FixEdge();
        }

        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        Vector2 toSpawn = transition.SpawningPoint;

        if (GUILayout.Button("AddSpawn"))
        {
            if (Mathf.Abs(toSpawn.x) > (0.5f * LevelSize.x - 1) || Mathf.Abs(toSpawn.y) > (0.5f * LevelSize.y - 1))
            {
                EditorUtility.DisplayDialog("Anomaly Detected", "Spawning point is too close to or over the edges.", "Ok");
            }
            else
            {
                transition.AddSpawn(Vector2.zero);
            }
        }
        if (GUILayout.Button("RemoveSpawn"))
        {
            if (transition.Spawn.Count - 1 < transition.spawnIndex)
            {
                EditorUtility.DisplayDialog("Anomaly Detected", "Invalid index input.", "Ok");
            }
            else
            {
                transition.RemoveSpawn(transition.spawnIndex);
                transition.spawnIndex = 0;
            }
        }
        GUILayout.EndHorizontal();

        if (GUILayout.Button("ModifySpawn"))
        {
            if (transition.spawnIndex > transition.Spawn.Count - 1 || Mathf.Abs(toSpawn.x) > (0.5f * LevelSize.x - 1) || Mathf.Abs(toSpawn.y) > (0.5f * LevelSize.y - 1))
            {
                EditorUtility.DisplayDialog("Anomaly Detected", "Spawning point is too close to or over the edges.", "Ok");
            }
            else
            {
                transition.ModifySpawn(transition.spawnIndex, toSpawn);
            }
        }

        if (GUILayout.Button("StartHere"))
        {
            if (transition.spawnIndex > transition.Spawn.Count - 1)
            {
                EditorUtility.DisplayDialog("Anomaly Detected", "Invalid index input.", "Ok");
            }
            else
            {
                holder.corner             = new Vector2(transition.transform.position.x - (0.5f * (transition.LevelSize.x - 40f)), transition.transform.position.y - (0.5f * (transition.LevelSize.y - 22)));
                holder.corner2            = new Vector2(transition.transform.position.x + (0.5f * (transition.LevelSize.x - 40f)), transition.transform.position.y + (0.5f * (transition.LevelSize.y - 22)));
                player.currentLevel       = transition.LevelIndex;
                player.transform.position = new Vector3(transition.transform.position.x + transition.Spawn[transition.spawnIndex].x, transition.transform.position.y + transition.Spawn[transition.spawnIndex].y, player.transform.position.z);
                holder.transform.position = transition.CamPos(player.transform.position);
            }
        }

        if (showMessage)
        {
            EditorGUILayout.HelpBox("Success!", MessageType.Info);
        }

        if (currentIndex != transition.spawnIndex)
        {
            currentIndex = transition.spawnIndex;
            if (transition.spawnIndex <= transition.Spawn.Count() - 1)
            {
                transition.SpawningPoint = transition.Spawn[currentIndex];
            }
        }
        if (transition.spawnIndex > transition.Spawn.Count() - 1)
        {
            EditorGUILayout.HelpBox("Invalid Spawn Index.", MessageType.Warning);
        }
    }