public static void SetVariableNode()
        {
            var a = new SetVariableNode("foobar", new NumberLiteral(2));
            var b = SerializationUtil.Reserialize(a);

            Assert.AreEqual(a, b);
        }
Пример #2
0
    protected void copy(SetVariableNode nodeToCopy)
    {
        base.copy(nodeToCopy);

        amount         = nodeToCopy.amount;
        incrementation = nodeToCopy.incrementation;
        variableName   = nodeToCopy.variableName;
    }
Пример #3
0
        public SetVariableNodeLayout(Node node) : base(node)
        {
            _myTarget = (SetVariableNode)node;

            OnRepaint();

            showInputLabel  = false;
            showOutputLabel = false;

            width           = 200;
            minHeaderHeight = 40;
        }
Пример #4
0
    private void OnClickAddSetVariableNode(Vector2 mousePosition)
    {
        if (nodes == null)
        {
            nodes = new List <Node>();
        }

        currentHighestID++;
        SetVariableNode node = CreateInstance <SetVariableNode>();

        node.Init(currentHighestID, mousePosition, SetVariableNode.width, SetVariableNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);

        nodes.Add(node);
    }
Пример #5
0
 public override void VisitSetVariable(SetVariableNode setVariableNode)
 {
     base.VisitSetVariable(setVariableNode);
 }
        public override void VisitSetVariable(SetVariableNode setVariableNode)
        {
            base.VisitSetVariable(setVariableNode);

        }
Пример #7
0
        private void OnEnable()
        {
            SetVariableNode myTarget = (SetVariableNode)target;

            CollectVariableNames(myTarget, myTarget.Scope);
        }
Пример #8
0
    private void LoadSpecific(string assetPath)
    {
        // Load selected asset into container class
        dialogue = (DialogueContainer)AssetDatabase.LoadAssetAtPath(assetPath, typeof(DialogueContainer));
        // Clear nodes and connections of current dialogue
        nodes.Clear();
        connections.Clear();
        // Loop through all nodes and connections in loaded container class and add them to current dialogue
        foreach (Node node in dialogue.nodes)
        {
            if (node is StartNode)
            {
                StartNode newNode = CreateInstance <StartNode>();
                newNode.Init(node.id, node.rect.position, StartNode.width, StartNode.defaultHeight, nodeStyle, selectedNodeStyle, outPointStyle, OnClickOutPoint, OnClickRemoveNode);
                nodes.Add(newNode);
            }
            if (node is DialogueLineNode)
            {
                DialogueLineNode newNode = CreateInstance <DialogueLineNode>();
                newNode.Init(node.id, node.rect.position, DialogueLineNode.width, DialogueLineNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                DialogueLineNode tempNode = (DialogueLineNode)node;
                newNode.Load(tempNode.actorName, tempNode.dialogueLine, node.inPoints.Count, tempNode.DayBank, tempNode.Day, tempNode.Clip, tempNode.Char, tempNode._fmod, tempNode.Dia);
                nodes.Add(newNode);
            }
            else if (node is PlayerChoiceNode)
            {
                PlayerChoiceNode newNode = CreateInstance <PlayerChoiceNode>();
                newNode.Init(node.id, node.rect.position, PlayerChoiceNode.width, PlayerChoiceNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                PlayerChoiceNode tempNode = (PlayerChoiceNode)node;
                newNode.Load(tempNode.optionLines, node.inPoints.Count, node.outPoints.Count);
                nodes.Add(newNode);
            }
            else if (node is CheckVariableNode)
            {
                CheckVariableNode newNode = CreateInstance <CheckVariableNode>();
                newNode.Init(node.id, node.rect.position, CheckVariableNode.width, CheckVariableNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                CheckVariableNode tempNode = (CheckVariableNode)node;
                newNode.Load(tempNode.boolIndex, node.inPoints.Count);
                nodes.Add(newNode);
            }
            else if (node is SetVariableNode)
            {
                SetVariableNode newNode = CreateInstance <SetVariableNode>();
                newNode.Init(node.id, node.rect.position, SetVariableNode.width, SetVariableNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                SetVariableNode tempNode = (SetVariableNode)node;
                newNode.Load(tempNode.boolIndex, tempNode.boolValueIndex, node.inPoints.Count);
                nodes.Add(newNode);
            }

            // Make sure currentHighestID is updated to avoid multiple nodes with same id
            if (node.id > currentHighestID)
            {
                currentHighestID = node.id;
            }
        }
        foreach (Connection connection in dialogue.connections)
        {
            Connection newConnection = CreateInstance <Connection>();
            Node       inPointNode   = null;
            Node       outPointNode  = null;
            // Go through all nodes in current dialogue to find which ones to create a connection between
            foreach (Node node in nodes)
            {
                if (connection.inPoint.node.id == node.id)
                {
                    inPointNode = node;
                }
                if (connection.outPoint.node.id == node.id)
                {
                    outPointNode = node;
                }
            }
            if (inPointNode != null && outPointNode != null)
            {
                // Create a connection between nodes
                newConnection.Load(inPointNode, outPointNode, connection.inPoint.index, connection.outPoint.index, OnClickRemoveConnection);
                connections.Add(newConnection);
            }
            else
            {
                Debug.Log("Load connection failed. inPointNode: " + inPointNode + " outPointNode: " + outPointNode);
            }
        }
    }
Пример #9
0
    private void Load()
    {
        // Show file browser
        string assetPath = EditorUtility.OpenFilePanel("Select asset", "Assets/Resources/Dialogues", "asset");

        if (assetPath != "")
        {
            // Make selected path relative instead of absolute
            assetPath = assetPath.Replace(Application.dataPath, "Assets");
            string[] splitAssetPath = assetPath.Split('/');
            lastSavedName = splitAssetPath[splitAssetPath.Length - 1];
        }
        else
        {
            return;
        }
        // Load selected asset into container class
        dialogue = (DialogueContainer)AssetDatabase.LoadAssetAtPath(assetPath, typeof(DialogueContainer));
        // Clear nodes and connections of current dialogue
        nodes.Clear();
        connections.Clear();
        // Loop through all nodes and connections in loaded container class and add them to current dialogue
        foreach (Node node in dialogue.nodes)
        {
            if (node is StartNode)
            {
                StartNode newNode = CreateInstance <StartNode>();
                newNode.Init(node.id, node.rect.position, StartNode.width, StartNode.defaultHeight, nodeStyle, selectedNodeStyle, outPointStyle, OnClickOutPoint, OnClickRemoveNode);
                nodes.Add(newNode);
            }
            if (node is DialogueLineNode)
            {
                DialogueLineNode newNode = CreateInstance <DialogueLineNode>();
                newNode.Init(node.id, node.rect.position, DialogueLineNode.width, DialogueLineNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                DialogueLineNode tempNode = (DialogueLineNode)node;
                newNode.Load(tempNode.actorName, tempNode.dialogueLine, node.inPoints.Count, tempNode.DayBank, tempNode.Day, tempNode.Clip, tempNode.Char, tempNode._fmod, tempNode.Dia);
                nodes.Add(newNode);
            }
            else if (node is PlayerChoiceNode)
            {
                PlayerChoiceNode newNode = CreateInstance <PlayerChoiceNode>();
                newNode.Init(node.id, node.rect.position, PlayerChoiceNode.width, PlayerChoiceNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                PlayerChoiceNode tempNode = (PlayerChoiceNode)node;
                newNode.Load(tempNode.optionLines, node.inPoints.Count, node.outPoints.Count);
                nodes.Add(newNode);
            }
            else if (node is CheckVariableNode)
            {
                CheckVariableNode newNode = CreateInstance <CheckVariableNode>();
                newNode.Init(node.id, node.rect.position, CheckVariableNode.width, CheckVariableNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                CheckVariableNode tempNode = (CheckVariableNode)node;
                newNode.Load(tempNode.boolIndex, node.inPoints.Count);
                nodes.Add(newNode);
            }
            else if (node is SetVariableNode)
            {
                SetVariableNode newNode = CreateInstance <SetVariableNode>();
                newNode.Init(node.id, node.rect.position, SetVariableNode.width, SetVariableNode.defaultHeight, nodeStyle, selectedNodeStyle, inPointStyle, outPointStyle, OnClickInPoint, OnClickOutPoint, OnClickRemoveNode);
                SetVariableNode tempNode = (SetVariableNode)node;
                newNode.Load(tempNode.boolIndex, tempNode.boolValueIndex, node.inPoints.Count);
                nodes.Add(newNode);
            }

            // Make sure currentHighestID is updated to avoid multiple nodes with same id
            if (node.id > currentHighestID)
            {
                currentHighestID = node.id;
            }
        }
        foreach (Connection connection in dialogue.connections)
        {
            Connection newConnection = CreateInstance <Connection>();
            Node       inPointNode   = null;
            Node       outPointNode  = null;
            // Go through all nodes in current dialogue to find which ones to create a connection between
            foreach (Node node in nodes)
            {
                if (connection.inPoint.node.id == node.id)
                {
                    inPointNode = node;
                }
                if (connection.outPoint.node.id == node.id)
                {
                    outPointNode = node;
                }
            }
            if (inPointNode != null && outPointNode != null)
            {
                // Create a connection between nodes
                newConnection.Load(inPointNode, outPointNode, connection.inPoint.index, connection.outPoint.index, OnClickRemoveConnection);
                connections.Add(newConnection);
            }
            else
            {
                Debug.Log("Load connection failed. inPointNode: " + inPointNode + " outPointNode: " + outPointNode);
            }
        }
    }
Пример #10
0
    void ContextCallBack(object o)
    {
        string clb = o.ToString();

        if (clb.Equals("textNode"))
        {
            TextNode textNode = new TextNode();

            textNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(textNode);
        }
        else if (clb.Equals("imgNode"))
        {
            ImageNode imgNode = new ImageNode();

            imgNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 325);

            AddNode(imgNode);
        }
        else if (clb.Equals("clicNode"))
        {
            WaitForInputNode clicNode = new WaitForInputNode();

            clicNode.windowRect = new Rect(mousePos.x, mousePos.y, 150, 50);

            AddNode(clicNode);
        }
        else if (clb.Equals("lucNode"))
        {
            LucidityAddNode lucNode = new LucidityAddNode();

            lucNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(lucNode);
        }
        else if (clb.Equals("calcNode"))
        {
            SetVariableNode calcNode = new SetVariableNode();

            calcNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(calcNode);
        }
        else if (clb.Equals("waitNode"))
        {
            WaitNode waitNode = new WaitNode();

            waitNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(waitNode);
        }
        else if (clb.Equals("fadeNode"))
        {
            FadeNode fadeNode = new FadeNode();

            fadeNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(fadeNode);
        }
        else if (clb.Equals("choiceNode"))
        {
            ChoiceNode choiceNode = new ChoiceNode();

            choiceNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(choiceNode);
        }
        else if (clb.Equals("seqNode"))
        {
            GoToSequenceNode seqChoice = new GoToSequenceNode();

            seqChoice.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(seqChoice);
        }
        else if (clb.Equals("destroyNode"))
        {
            DestroyNode destroyNode = new DestroyNode();

            destroyNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(destroyNode);
        }
        else if (clb.Equals("conditionNode"))
        {
            ConditionNode conditionNode = new ConditionNode();

            conditionNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 175);

            AddNode(conditionNode);
        }
        else if (clb.Equals("placeNode"))
        {
            GoToPlaceNode placeNode = new GoToPlaceNode();

            placeNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(placeNode);
        }
        else if (clb.Equals("animNode"))
        {
            AnimationNode animNode = new AnimationNode();

            animNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 300);

            AddNode(animNode);
        }
        else if (clb.Equals("exploNode"))
        {
            GoToExplorationNode exploNode = new GoToExplorationNode();

            exploNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(exploNode);
        }
        else if (clb.Equals("soundNode"))
        {
            PlaySoundNode soundNode = new PlaySoundNode();

            soundNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(soundNode);
        }
        else if (clb.Equals("stopNode"))
        {
            StopSoundNode stopNode = new StopSoundNode();

            stopNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 150);

            AddNode(stopNode);
        }
        else if (clb.Equals("goNode"))
        {
            GameObjectNode goNode = new GameObjectNode();

            goNode.windowRect = new Rect(mousePos.x, mousePos.y, 200, 200);

            AddNode(goNode);
        }
        else if (clb.Equals("setFirst"))
        {
            int  selectedIndex   = -1;
            bool clickedOnWindow = CheckClicked(out selectedIndex);

            if (clickedOnWindow)
            {
                sequence.firstNodeId = sequence.nodes[selectedIndex].id;
            }
        }
        else if (clb.Equals("makeTransition"))
        {
            int  selectedIndex   = -1;
            bool clickedOnWindow = CheckClicked(out selectedIndex);

            if (clickedOnWindow)
            {
                selectedNode = sequence.nodes[selectedIndex];

                if (selectedNode.nextNodeId != -1)
                {
                    selectedNode.nextNodeId = -1;

                    selectedNode.nextNode.NodeDeleted(selectedNode);
                    selectedNode.nextNode = null;
                }

                makeTransitionMode = true;
            }
        }
        else if (clb.Equals("makeTransition1"))
        {
            MakeTransitionChoice(0);
        }
        else if (clb.Equals("makeTransition2"))
        {
            MakeTransitionChoice(1);
        }
        else if (clb.Equals("makeTransition3"))
        {
            MakeTransitionChoice(2);
        }
        else if (clb.Equals("makeTransition4"))
        {
            MakeTransitionChoice(3);
        }
        else if (clb.Equals("makeTransitionTrue"))
        {
            MakeTransitionCondition(0);
        }
        else if (clb.Equals("makeTransitionFalse"))
        {
            MakeTransitionCondition(1);
        }
        else if (clb.Equals("deleteNode"))
        {
            int  selectedIndex   = -1;
            bool clickedOnWindow = CheckClicked(out selectedIndex);

            if (clickedOnWindow)
            {
                EventNode selNode = sequence.nodes[selectedIndex];
                sequence.nodes.RemoveAt(selectedIndex);

                if (selNode.id == sequence.firstNodeId)
                {
                    if (sequence.nodes.Count > 0)
                    {
                        sequence.firstNodeId = sequence.nodes[0].id;
                    }
                    else
                    {
                        sequence.firstNodeId = -1;
                    }
                }

                foreach (EventNode n in sequence.nodes)
                {
                    n.NodeDeleted(selNode);
                }
            }
        }
    }
Пример #11
0
    void NextNode(int option)
    {
        print("NextNode");
        //Remove dialogue if last
        if (!currentDialogue.nodes.ContainsKey(currentNode.nextNodesID[option]))
        {
            aOugrah.SetBool("talking", false);
            aGaregh.SetBool("talking", false);

            dialogueNameText.text        = "";
            dialogueText.text            = "";
            inDialogue                   = false;
            GameManager.instance.talking = false;
            Cursor.lockState             = CursorLockMode.Locked;
            if (_EventInstance != null)
            {
                _EventInstance.stop(FMOD.Studio.STOP_MODE.IMMEDIATE);
            }
            return;
        }

        //Set current node
        currentNode = currentDialogue.GetNode(currentNode.nextNodesID[option]);

        //Check if currentNode is dialogueLine or playerLine
        if (currentNode is DialogueLineNode)
        {
            isChoice = false;
            DialogueLineNode tempNode = (DialogueLineNode)currentNode;
            setFmodParams(tempNode.DayBank, tempNode.Char, tempNode.Day, tempNode.Clip);
            if (voiceSetup)
            {
                updatePosition(tempNode.Char);
                base.Start();
                _EventInstance.start();
            }
            dialogueNameText.text = tempNode.actorName;
            dialogueText.text     = tempNode.dialogueLine;

            if (tempNode.actorName == "Ougrah")
            {
                aOugrah.SetBool("talking", true);
                aGaregh.SetBool("talking", false);
                aHania.SetBool("talking", false);
            }
            if (tempNode.actorName == "Garegh")
            {
                aOugrah.SetBool("talking", false);
                aGaregh.SetBool("talking", true);
            }
            if (tempNode.actorName == "Hania")
            {
                aOugrah.SetBool("talking", false);
                aHania.SetBool("talking", true);
            }

            if (currentDialogue.walkAndTalk)
            {
                walkietalkie  = true;
                autoClearTime = Time.time + (tempNode.dialogueLine.Length * displayTimePerChar);
            }
            else
            {
                walkietalkie = false;
            }
        }
        else if (currentNode is PlayerChoiceNode)
        {
            isChoice = true;
            PlayerChoiceNode tempNode = (PlayerChoiceNode)currentNode;

            for (int i = 0; i < tempNode.optionLines.Count; i++)
            {
                // Spawn buttons with offset
                Button choiceButton = (Button)Instantiate(choiceButtonPrefab, new Vector3((Screen.width / 2), (150 + optionsOffset.y * tempNode.optionLines.Count)) - (optionsOffset * i), Quaternion.identity);
                choiceButton.GetComponent <RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 12 * tempNode.optionLines[i].Length);
                choiceButton.transform.SetParent(dialogueText.transform.parent);
                choiceButton.GetComponentInChildren <Text>().text = tempNode.optionLines[i];
                choiceButtons.Add(choiceButton);
            }
        }
        else if (currentNode is CheckVariableNode)
        {
            CheckVariableNode tempNode = (CheckVariableNode)currentNode;
            if (AllFlags.Instance.flags[tempNode.boolIndex].value)
            {
                NextNode(0);
            }
            else
            {
                NextNode(1);
            }
        }
        else if (currentNode is SetVariableNode)
        {
            SetVariableNode tempNode = (SetVariableNode)currentNode;
            if (tempNode.boolValueIndex == 0)
            {
                AllFlags.Instance.flags[tempNode.boolIndex].value = true;
            }
            else
            {
                AllFlags.Instance.flags[tempNode.boolIndex].value = false;
            }

            NextNode(0);
        }
    }