Inheritance: ScriptableObject
    void OnEnable()
    {
        //sceneFadeInOut = GameObject.FindGameObjectWithTag(Tags.gameController).GetComponent<SceneFadeInOut>();
        scriptedEvents = GameObject.FindGameObjectsWithTag (Tags.scriptedEvent);
        foreach (GameObject go in scriptedEvents) {
            if(go.GetComponent<ScriptedEvent>().scriptedEventIndex == scriptedEventIndex){
                scriptedEvent = go.GetComponent<ScriptedEvent>();
                scriptedEvent.CompleteScriptedEvent ();
                break;
            }
        }

        //If post-action event exists, execute it...
        if(!targetEnabled && targetGO != null){
            (targetGO.GetComponent(scriptNameToEnable) as MonoBehaviour).enabled = true;
            targetEnabled = true;
        }

        StartCoroutine (DelayedDestroy ());
    }
    public override void OnInspectorGUI()
    {
        scriptedEvent = (ScriptedEvent)target;
        if (scriptedEvent.eventTriggers == null)
        {
            scriptedEvent.eventTriggers = new List <EventTrigger>();
        }
        int sizeDiff = foldOuts.Count - scriptedEvent.eventTriggers.Count;

        if (sizeDiff < 0)
        {
            for (int i = 0; i > sizeDiff; i--)
            {
                foldOuts.Add(true);
            }
        }
        else if (sizeDiff > 0)
        {
            for (int i = 0; i < sizeDiff; i++)
            {
                foldOuts.RemoveAt(foldOuts.Count - 1);
            }
        }

        DrawDefaultInspector();

        showTriggers = EditorGUILayout.Foldout(showTriggers, "Event Triggers");
        if (showTriggers)
        {
            EditorGUI.indentLevel++;

            monoBehaviourOnly = EditorGUILayout.Toggle("MonoBehaviour Only", monoBehaviourOnly);
            if (monoBehaviourOnly)
            {
                components = FindObjectsOfType <MonoBehaviour>();
            }
            else
            {
                components = FindObjectsOfType <Component>();
            }

            componentNames = components.Select(s => s.GetType().Name).ToList();
            componentNames.Add("None");

            for (int i = 0; i < scriptedEvent.eventTriggers.Count; i++)
            {
                foldOuts[i] = EditorGUILayout.Foldout(foldOuts[i], "Event Trigger " + i);
                if (!foldOuts[i])
                {
                    continue;
                }
                EditorGUI.indentLevel++;

                EventTrigger eventTrigger = scriptedEvent.eventTriggers[i];
                eventTrigger.triggerType = (TriggerType)EditorGUILayout.EnumPopup(eventTrigger.triggerType);

                switch (eventTrigger.triggerType)
                {
                case TriggerType.TimeInLevel:
                    DrawTimeTriggerGUI(eventTrigger);
                    break;

                case TriggerType.ComponentValue:
                    DrawValueTriggerGUI(eventTrigger, i);
                    break;

                default:
                    break;
                }
                EditorGUI.indentLevel--;
                EditorGUILayout.LabelField("", GUI.skin.horizontalSlider);
            }

            EditorGUI.indentLevel--;

            GUILayout.BeginHorizontal();
            GUILayout.Space(EditorGUI.indentLevel * 10);
            if (GUILayout.Button("Add event trigger"))
            {
                scriptedEvent.eventTriggers.Add(new EventTrigger());
            }
            GUILayout.EndHorizontal();

            if (scriptedEvent.eventTriggers.Count > 0)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Space(EditorGUI.indentLevel * 10);
                if (GUILayout.Button("Remove last event trigger"))
                {
                    scriptedEvent.eventTriggers.RemoveAt(scriptedEvent.eventTriggers.Count - 1);
                }
                GUILayout.EndHorizontal();
            }
        }

        EditorUtility.SetDirty(scriptedEvent);
    }
示例#3
0
 private void UnlockEvent(ScriptedEvent scriptedEvent)
 {
     scriptedEvent.eventLocked = false;
 }
示例#4
0
 //methods and shit for loading each map and stuff
 public static ScriptedEvent[, ,] GetScriptedEvents(string mapName, int[] mapDims)
 {
     ScriptedEvent[,,] ans = new ScriptedEvent[mapDims[0], mapDims[1], mapDims[2]];
     if (mapName.CompareTo("DemoMap") == 0)
     {
         //Yale_Jasmine
         ans[2, 3, 0] = new ScriptedEvent(new EventPage[1] {
             new EventPage("Images/Characters/Jasmine", new int[3] {
                 2, 3, 0
             }, Entities.Terrain.Tile.Direction.SOUTH,
                           new Movement(Movement.Type.FIXED, Movement.Trigger.ACTION, true, 1),
                           (player) => {
                 Global.action.dialog.CallDialog(
                     "Hi! My name is Jasmine. I go to Yale, but I'm here visiting Harvard. " +
                     "I have one question though -- do people pee on the John Harvard Statue? " +
                     "Because, I'll be honest, I saw people peeing on that staue last night!! <<Yes;No>>",
                     (response) => {
                     if (response.CompareTo("Yes") == 0)
                     {
                         return(Global.action.dialog.CallDialog("Yuck! I knew it... ", null));
                     }
                     else
                     {
                         return(Global.action.dialog.CallDialog("Really? I don't believe you! ", null));
                     }
                 });
             }, "Yale_Jasmine")
         }, new int[3] {
             2, 3, 0
         }, "Yale_Jasmine");
         //Princeton_Jasmine
         ans[4, 3, 0] = new ScriptedEvent(new EventPage[1] {
             new EventPage("Images/Characters/Jasmine", new int[3] {
                 4, 3, 0
             }, Entities.Terrain.Tile.Direction.EAST,
                           new Movement(Movement.Type.LOOK_AROUND, Movement.Trigger.ACTION, true, 1),
                           (player) => {
                 bool[] plyrAns = new bool[4];
                 Global.action.dialog.CallDialog(
                     "Hi! My name is also Jasmine. I go to Princeton, but I'm here visiting Harvard. " +
                     "I have a series of questions to ask you: Are you Nick? <<YUP;NOPE>>",
                     (r0) => {
                     plyrAns[0] = (r0.CompareTo("YUP") == 0);
                     return(Global.action.dialog.CallDialog(
                                "And, for this question, please do be honest, we're trying to minimize bias: " +
                                "Do you like Harvard? <<YUP;NOPE>>",
                                (r1) => {
                         plyrAns[1] = (r1.CompareTo("YUP") == 0);
                         return Global.action.dialog.CallDialog(
                             "Do you like Yale? <<YUP;NOPE>>",
                             (r2) => {
                             plyrAns[2] = (r2.CompareTo("YUP") == 0);
                             return Global.action.dialog.CallDialog(
                                 "Lastly, are you from the West Coast? <<YUP;NOPE>>",
                                 (r3) => {
                                 plyrAns[3] = (r3.CompareTo("YUP") == 0);
                                 return Global.action.dialog.CallDialog(
                                     "Therefore: you are " + (plyrAns[0]?"":"not ") + "Nick, you do " +
                                     (plyrAns[1]?"":"not ") + "like Harvard, you do " + (plyrAns[2]?"":"not ") + "like Yale, and lastly, " +
                                     "are " + (plyrAns[3]?"":"not ") + "from the West Coast! ",
                                     null);
                             }
                                 );
                         });
                     }));
                 });
             }, "Princeton_Jasmine")
         }, new int[3] {
             4, 3, 0
         }, "Princeton_Jasmine");
         //Crunch Time
         ans[5, 5, 0] = new ScriptedEvent(new EventPage[1] {
             new EventPage("Images/Characters/Jasmine", new int[3] {
                 5, 5, 0
             }, Entities.Terrain.Tile.Direction.WEST,
                           new Movement(Movement.Type.WALK_AROUND, Movement.Trigger.ACTION, true, 1),
                           (player) => {
                 Global.action.dialog.CallDialog(
                     "At what point do you start seeing bread? " +
                     "Been out hustling for years, shoe box right under my bed " +
                     "I move the work out my momma's house, got me a little old crib " +
                     "I always fantasize if I had went to college instead " +
                     "Would I be happily married instead of broke and unwed? " +
                     "My n***a made a major move I said I hope for the best " +
                     "I told my sister as I kissed her cheek I'm better off dead " +
                     "F*****g with this white, it's all been downhill like a sled " +
                     "Now listen, I understand they say you make your own bed " +
                     "But tell me who supplied these sheets with this cheap ass thread " +
                     "In denial about the feds, he can't see past bread " +
                     "Now do exactly what the man in the ski mask says, okay? " +
                     "These are the times, survival my only crime " +
                     "I gotta be on my grind, a lot of my homies gone " +
                     "Inside of me Lord I know, it's a lie that we gon' be fine " +
                     "But momma I'm tired of crying, just lie to me one more time, " +
                     "Cause it's Crunch Time ... ",
                     null);
             }, "Crunch Time")
         }, new int[3] {
             5, 5, 0
         }, "Crunch Time");
     }
     return(ans);
 }