public static void SetVariableNode() { var a = new SetVariableNode("foobar", new NumberLiteral(2)); var b = SerializationUtil.Reserialize(a); Assert.AreEqual(a, b); }
protected void copy(SetVariableNode nodeToCopy) { base.copy(nodeToCopy); amount = nodeToCopy.amount; incrementation = nodeToCopy.incrementation; variableName = nodeToCopy.variableName; }
public SetVariableNodeLayout(Node node) : base(node) { _myTarget = (SetVariableNode)node; OnRepaint(); showInputLabel = false; showOutputLabel = false; width = 200; minHeaderHeight = 40; }
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); }
public override void VisitSetVariable(SetVariableNode setVariableNode) { base.VisitSetVariable(setVariableNode); }
private void OnEnable() { SetVariableNode myTarget = (SetVariableNode)target; CollectVariableNames(myTarget, myTarget.Scope); }
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); } } }
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); } } }
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); } } } }
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); } }