Beispiel #1
0
        public override int Traverse()
        {
            IDialogueOverrideHandler handler = null;

            if (state != NodeEditorGUI.NodeEditorState.Dialogue)
            {
                handler = TaskManager.Instance;
            }
            else
            {
                handler = DialogueSystem.Instance;
            }

            if (handler.GetInteractionOverrides().ContainsKey(EntityID))
            {
                handler.GetInteractionOverrides()[EntityID].Clear();
            }
            return(0);
        }
Beispiel #2
0
        public void OnCancel()
        {
            DialogueSystem.OnDialogueCancel -= OnCancel;
            DialogueSystem.OnDialogueEnd    -= OnClick;
            if (customDialogueSpeed)
            {
                DialogueSystem.Instance.timeBetweenCharacters = oldSpeed;
            }

            if (cancel.connected())
            {
                IDialogueOverrideHandler handler = null;
                if (state != NodeEditorGUI.NodeEditorState.Dialogue)
                {
                    handler = TaskManager.Instance;
                }
                else
                {
                    handler = DialogueSystem.Instance;
                }

                var node = state != NodeEditorGUI.NodeEditorState.Dialogue
                    ? StartDialogueNode.missionCanvasNode
                    : StartDialogueNode.dialogueCanvasNode;
                Debug.Log(node?.EntityID + " " + StartDialogueNode.missionCanvasNode?.EntityID);
                if (node && !string.IsNullOrEmpty(node.EntityID))
                {
                    handler.GetInteractionOverrides()[node.EntityID].Pop();
                    // DialogueSystem.Instance.DialogueViewTransitionOut();
                    if (node == StartDialogueNode.missionCanvasNode)
                    {
                        StartDialogueNode.missionCanvasNode = null;
                    }
                    else
                    {
                        StartDialogueNode.dialogueCanvasNode = null;
                    }
                }

                TaskManager.Instance.setNode(cancel.connection(0));
            }
        }
        public override int Traverse()
        {
            IDialogueOverrideHandler handler = null;

            if (state != NodeEditorGUI.NodeEditorState.Dialogue)
            {
                handler = TaskManager.Instance;
            }
            else
            {
                handler = DialogueSystem.Instance;
            }


            if (SpeakToEntity)
            {
                handler.GetSpeakerIDList().Add(EntityID);
                if (handler as TaskManager)
                {
                    TryAddObjective();
                }

                if (handler.GetInteractionOverrides().ContainsKey(EntityID))
                {
                    handler.GetInteractionOverrides()[EntityID].Push(() =>
                    {
                        if (handler as TaskManager)
                        {
                            missionCanvasNode = this;
                        }
                        else
                        {
                            dialogueCanvasNode = this;
                        }

                        handler.SetSpeakerID(EntityID);
                        handler.SetNode(output);
                    });
                }
                else
                {
                    var stack = new Stack <UnityEngine.Events.UnityAction>();
                    stack.Push(() =>
                    {
                        if (handler as TaskManager)
                        {
                            missionCanvasNode = this;
                        }
                        else
                        {
                            dialogueCanvasNode = this;
                        }

                        handler.SetSpeakerID(EntityID);
                        handler.SetNode(output);
                    });
                    handler.GetInteractionOverrides().Add(EntityID, stack);
                }

                if (!allowAfterSpeaking)
                {
                    if (forceStart)
                    {
                        if (handler as TaskManager)
                        {
                            missionCanvasNode = this;
                        }
                        else
                        {
                            dialogueCanvasNode = this;
                        }

                        handler.SetSpeakerID(EntityID);
                        return(0);
                    }
                    else
                    {
                        return(-1);
                    }
                }
                else
                {
                    if (flowOutput == null)
                    {
                        flowOutput = outputKnobs[1];
                    }

                    handler.SetNode(flowOutput);
                    return(-1);
                }
            }
            else
            {
                return(0);
            }
        }
Beispiel #4
0
        public override int Traverse()
        {
            IDialogueOverrideHandler handler = null;

            if (state != NodeEditorGUI.NodeEditorState.Dialogue)
            {
                handler = TaskManager.Instance;
            }
            else
            {
                handler = DialogueSystem.Instance;
            }

            // Debug.Log(handler as DialogueSystem + "sdjhgndfgikuhtdukhntdouhntdh " + StartDialogueNode.dialogueStartNode.EntityID);

            if (handler as TaskManager)
            {
                foreach (var objectiveLocation in TaskManager.objectiveLocations[(Canvas as QuestCanvas).missionName])
                {
                    if (objectiveLocation.followEntity &&
                        objectiveLocation.followEntity.ID == StartDialogueNode.missionCanvasNode?.EntityID)
                    {
                        TaskManager.objectiveLocations[(Canvas as QuestCanvas).missionName].Remove(objectiveLocation);
                        TaskManager.DrawObjectiveLocations();
                        break;
                    }
                }
            }

            var node = state != NodeEditorGUI.NodeEditorState.Dialogue
                ? StartDialogueNode.missionCanvasNode : StartDialogueNode.dialogueCanvasNode;

            if (jumpToStart)
            {
                handler.SetNode(node);
                handler.GetInteractionOverrides()[node.EntityID].Pop();
                if (handler is DialogueSystem || (!output || !output.connected()))
                {
                    DialogueSystem.Instance.DialogueViewTransitionOut();
                }

                if (openBuilder)
                {
                    DialogueSystem.Instance.OpenBuilder(SectorManager.instance.GetEntity(node.EntityID).transform.position);
                }

                if (openTrader)
                {
                    DialogueSystem.Instance.OpenTrader(SectorManager.instance.GetEntity(node.EntityID).transform.position,
                                                       JsonUtility.FromJson <ShipBuilder.TraderInventory>(traderJSON).parts);
                }

                return(-1);
            }
            else
            {
                if (node && node.EntityID != null && node.EntityID != "")
                {
                    handler.GetInteractionOverrides()[node.EntityID].Pop();
                    DialogueSystem.Instance.DialogueViewTransitionOut();
                    if (node == StartDialogueNode.missionCanvasNode)
                    {
                        StartDialogueNode.missionCanvasNode = null;
                    }
                    else
                    {
                        StartDialogueNode.dialogueCanvasNode = null;
                    }
                }

                if (openBuilder)
                {
                    DialogueSystem.Instance.OpenBuilder(SectorManager.instance.GetEntity(node.EntityID).transform.position);
                }

                if (openTrader)
                {
                    DialogueSystem.Instance.OpenTrader(SectorManager.instance.GetEntity(node.EntityID).transform.position,
                                                       JsonUtility.FromJson <ShipBuilder.TraderInventory>(traderJSON).parts);
                }

                return(outputKnobs.Count > 0 ? 0 : -1);
            }
        }