예제 #1
0
    public override Node AddNode(Type type)
    {
        Node.graphHotfix = this;
        Node node = ScriptableObject.CreateInstance(type) as Node;

        node.graph = this;
        nodes.Add(node);
        if (type == typeof(DialogNode))
        {
            DialogNode dNode = node as DialogNode;
            dNode.dialogID = AddDialog();
            dNode.dialog   = dNode.GetObject();
            dNode.Output0  = 0;
            dNode.Output1  = 1;
            dNode.Output2  = 2;
            dNode.Output3  = 3;
            dNode.Output4  = 4;
        }
        else if (type == typeof(DialogEventNode))
        {
            DialogObject.DialogEvent dEvent = new DialogObject.DialogEvent();
            dEvent.id = dialogObject.events.Count + UnityEngine.Random.Range(0, 100000);
            dialogObject.events.Add(dEvent);
            DialogEventNode dEventNode = node as DialogEventNode;
            dEventNode.dialogObjectRef = dialogObject;
            dEventNode.dialogEventID   = dEvent.id;
        }
        return(node);
    }
예제 #2
0
 public bool DoesChainEnd(int i)
 {
     if (dialogTrigger.dialogObject.dialog[placeInDialog].responses[i].eventID > 0)
     {
         DialogObject.DialogEvent dEvent = dialogTrigger.dialogObject.GetEvent(dialogTrigger.dialogObject.dialog[placeInDialog].responses[i].eventID);
         if (dEvent.nextDialogID > 0)
         {
             return(false);
         }
         if (dEvent.nextEventID > 0 && dEvent.type != DialogObject.DialogEventType.CloseDialog)
         {
             DialogObject.DialogEvent dEvent2 = dialogTrigger.dialogObject.GetEvent(dEvent.nextEventID);
             if (dEvent2.nextDialogID > 0)
             {
                 return(false);
             }
             if (dEvent2.nextEventID > 0 && dEvent2.type != DialogObject.DialogEventType.CloseDialog)
             {
                 DialogObject.DialogEvent dEvent3 = dialogTrigger.dialogObject.GetEvent(dEvent.nextEventID);
                 if (dEvent3.nextDialogID > 0)
                 {
                     return(false);
                 }
                 if (dEvent3.nextEventID > 0 || dEvent3.nextDialogID > 0 && dEvent3.type != DialogObject.DialogEventType.CloseDialog)
                 {
                     DialogObject.DialogEvent dEvent4 = dialogTrigger.dialogObject.GetEvent(dEvent.nextEventID);
                     if (dEvent4.nextDialogID > 0)
                     {
                         return(false);
                     }
                     if (dEvent4.nextEventID > 0 || dEvent4.nextDialogID > 0 && dEvent4.type != DialogObject.DialogEventType.CloseDialog)
                     {
                         return(false);
                     }
                     else
                     {
                         return(true);
                     }
                 }
                 else
                 {
                     return(true);
                 }
             }
             else
             {
                 return(true);
             }
         }
         else
         {
             return(true);
         }
     }
     return(false);
 }
예제 #3
0
    public void PerformDialogEvent(DialogObject.DialogEvent dEvent)
    {
        if (dEvent.type == DialogObject.DialogEventType.SetVar)
        {
            DialogVars.Instance.SetVar(dEvent.stringField, dEvent.boolField);
        }
        else if (dEvent.type == DialogObject.DialogEventType.CloseDialog)
        {
            CloseDialog();
            return;
        }


        if (dEvent.nextEventID > 0)
        {
            PerformDialogEvent(dialogTrigger.dialogObject.GetEvent(dEvent.nextEventID));
        }
        else if (dEvent.nextDialogID > 0)
        {
            SetDialogSection(dEvent.nextDialogID);
        }
    }