// Start is called before the first frame update void Start() { if (majorConvoNodes.Length != majorConvoTrust.Length) { Debug.LogError("Error! There are not the same number of MajorConvo nodes and required trust levels!"); Destroy(this.gameObject); } gm = GameManager.getInstance(); ConvertSchedule(); gm.RegisterInteractable(this.gameObject.transform, this); spriteRenderer = this.gameObject.GetComponent <SpriteRenderer>(); gm.SubscribeDayTimeChangeListener(this); rb = GetComponent <Rigidbody2D>(); yarnVars = FindObjectOfType <InMemoryVariableStorage>(); if (scriptToLoad != null) { dialogueRunner = FindObjectOfType <Yarn.Unity.DialogueRunner>(); dialogueRunner.Add(scriptToLoad); } if (!LoadStats()) { majorConvoIndex = 0; } AddToStart(); DayTimeChange(gm.currentDay, gm.currentTime); }
public void Start() { audioController = FindObjectOfType <AudioController>(); safeToEnableInteraction = false; snaps = FindObjectsOfType <SnapTriggerArea>(); // player = GameObject.Find("FPS Controller"); player = Instantiate(Services.Prefabs.Player, new Vector3(0, 4.16f, 8.35f), Quaternion.Euler(0, 180, 0)); resetPos = player.transform.position; resetRot = player.transform.rotation; CustomerIvory = GameObject.Find("CustomerIvory"); CustomerSahana = GameObject.Find("CustomerSahana"); blackPanel = GameObject.Find("BarCanvas").transform.GetChild(2).gameObject; dialogue = FindObjectOfType <DialogueRunner>(); CustomerIvory.SetActive(false); CustomerSahana.SetActive(false); dayHasEnded = false; day = new List <Day>(); day.Add(new Day(1)); //just one customer on the first day day.Add(new Day(2)); //two customers on the second day, etc. day.Add(new Day(1)); numCustomersThatLeft = 0; currentDay = 0; switchOff = false; //currentNumCustomers = day[0].numCustomers; }
private void Start() { DialogueRunner runner = MainSingleton.Instance.dialogueRunner; runner.AddCommandHandler <float>("SetTimer", SetTimer); SetTimer(DEFAULT_TIMER_SECONDS); }
public bool pause; //for a shot // Start is called before the first frame update void Start() { yarnVars = GetComponent <InMemoryVariableStorage>(); dr = FindObjectOfType <DialogueRunner>(); opponentBullets = 3; }
private void SetEvents(DialogueRunner dialogue) { RemoveEvents(dialogue); if (dialogue.IsNull()) { return; } if (dialogue.onNodeStart.IsNull()) { dialogue.onNodeStart = new DialogueRunner.StringUnityEvent(); } if (dialogue.onNodeComplete.IsNull()) { dialogue.onNodeComplete = new DialogueRunner.StringUnityEvent(); } if (dialogue.onDialogueComplete.IsNull()) { dialogue.onDialogueComplete = new UnityEngine.Events.UnityEvent(); } dialogue.onNodeStart.AddListener(OnNodeStart); dialogue.onNodeComplete.AddListener(OnNodeComplete); dialogue.onDialogueComplete.AddListener(OnDialogComplete); }
private void Start() { DialogueRunner runner = MainSingleton.Instance.dialogueRunner; runner.AddCommandHandler <string>("SetTime", SetTime); runner.AddCommandHandler <int>("AddMinutes", AddMinutes); }
/// </summary> // Start is called before the first frame update void Start() { if (scriptToLoad == null) { Debug.LogError("NPC3D not set up with yarn scriptToLoad ", this); } if (string.IsNullOrEmpty(characterName)) { Debug.LogWarning("NPC3D not set up with characterName", this); } if (string.IsNullOrEmpty(talkToNode)) { Debug.LogError("NPC3D not set up with talkToNode", this); } dialogueRunner = FindObjectOfType <Yarn.Unity.DialogueRunner>(); //this is bad way to do this but hey we doing this quickly if (dialogueRunner == null) { Debug.LogError("dialogueRunner not set up", this); } dialogueCanavas = GameObject.Find("Dialogue Canvas"); //this is bad way to do this but hey we doing this quickly if (dialogueCanavas == null) { Debug.LogError("Dialogue Canvas not set up", this); } if (scriptToLoad != null && dialogueRunner != null && dialogueRunner != null) { dialogueRunner.Add(scriptToLoad); //adds the script to the dialogue system } }
internal void SetMimanRunners(ProgramRunner pProgramRunner, SourceCodeDispenser pSourceCodeDispenser, DialogueRunner pDialogueRunner, WorldSettings pWorldSettings) { _programRunner = pProgramRunner; _sourceCodeDispenser = pSourceCodeDispenser; _dialogueRunner = pDialogueRunner; _worldSettings = pWorldSettings; }
// Use this for initialization void Start() { // build recent file list previousFilePaths.Clear(); // just to be safe while (PlayerPrefs.HasKey(prefsKey + previousFilePaths.Count.ToString())) { previousFilePaths.Add(PlayerPrefs.GetString(prefsKey + previousFilePaths.Count.ToString())); } if (previousFilePaths.Count > 0) { // convert that into dropdown population // we also want to remove the "file:///" if it's there recentFilesList.AddOptions(previousFilePaths.Select(x => (Path.GetFileNameWithoutExtension(x) + "\n<size=10>" + (x.StartsWith("file:///") ? x.Replace("file:///", "") : x) + "</size>").Replace("%20", " ")).ToList()); } dialogueRunner = FindObjectOfType <DialogueRunner>(); filenameLabel.text = ""; // when user clicks "Refresh" button, it reloads the entire scene... this detects whether we should skip the start menu and go directly into the Yarn file if (tutorialMode == true) { OnClickLoadSample(); } else if (currentFilePath != null && currentFilePath.Length > 0) { StartCoroutine(OutputRoutine(currentFilePath)); } }
public DialogueRunner DialogueRunnerReference; // Hidden in the inspector, but scripts and graphs can access it private void Awake() { // Attempt to find the Dialogue Runner on current game object DialogueRunnerReference = GetComponent <DialogueRunner>(); if (DialogueRunnerReference == null) { Debug.LogError("The Bolt YarnSpinner Helper can't find the Dialogue Runner! Did you put me on the same game object as the DialogueRunner script?", this.gameObject); } // Create Bolt Scene variable if (!Variables.ActiveScene.IsDefined("YS_BoltHelper") && CreateSceneVariable) { Variables.ActiveScene.Set("YS_BoltHelper", this.gameObject); if (!SuppressLogMessages) { Debug.Log("Bolt YarnSpinner Helper scene variable created successfully", this.gameObject); } } else { if (!SuppressLogMessages) { Debug.LogWarning("Bolt YarnSpinner Helper variable not created, make sure to edit GetYarnSpinnerComponets Super Unit to ensure everything still works", this.gameObject); } } }
public IEnumerable <float> LoadRelayFromDirectory(string pInputDirectory, bool pOnlyLoadTingsAndRooms) { #if PROFILE Stopwatch sw = new Stopwatch(); sw.Start(); #endif _relay = CreateEmptyRelay(); DialogueRunner dialogueRunner = new DialogueRunner(_relay, Language.DEFAULT); _dialogueScriptLoader = new DialogueScriptLoader(dialogueRunner); _sourceCodeDispenser = new SourceCodeDispenser(_relay); _timetableRunner = new TimetableRunner(_relay); string[] files = GetFilesRecursively(pInputDirectory); for (int i = 0; i < files.Length; i++) { FoundFile(files[i], pOnlyLoadTingsAndRooms); yield return((float)i / (float)files.Length); } #if PROFILE sw.Stop(); logger.Log("Loading relay from directory " + pInputDirectory + " took " + sw.Elapsed.TotalSeconds + " s."); #endif }
private void OnValidate() { yarnUI = GetComponent <CustomDialogUI>(); storage = GetComponent <InMemoryVariableStorage>(); runner = GetComponent <DialogueRunner>(); canvas = GetComponentInParent <Canvas>(); }
// Use this for initialization protected override void Start() { if (instanceExists) { Destroy(gameObject); return; } instanceExists = true; DontDestroyOnLoad(transform.gameObject); base.Start(); animator = GetComponent <Animator>(); rb2d = GetComponent <Rigidbody2D>(); boxCollider2D = GetComponent <BoxCollider2D>(); dialogueRunner = FindObjectOfType <DialogueRunner>(); try { audioSource = GetComponent <AudioSource>(); } catch { Debug.LogWarning("Not AudioSource attached to Player"); } walkPitch = 1.2f; runPitch = 1.7f; animator.SetBool("hasItem", false); }
public void ToDialog() { if (!dialogue.activeInHierarchy) { num++; DialogueRunner dialogueRunner = FindObjectOfType <Yarn.Unity.DialogueRunner>(); if (num == 1) { dialogueRunner.Add(dialog1); dialogueRunner.StartDialogue("Start1"); audio1.Play(); } if (num == 2) { dialogueRunner.Add(dialog2); dialogueRunner.StartDialogue("Start2"); audio1.Stop(); audio2.Play(); } if (num == 3) { dialogueRunner.Add(dialog3); dialogueRunner.StartDialogue("Start3"); audio2.Stop(); audio3.Play(); } } }
protected override void OnInteractButtonPress() { if (runner == null) { runner = dialouge.GetComponent <DialogueRunner>(); } if (runner == null || runner.isDialogueRunning || PauseManager.Instance.Paused) { return; } base.OnInteractButtonPress(); GlobalStorage.Instance.storage.SetValue("checkpoint_id", Id); GlobalStorage.Instance.storage.SetValue("checkpoint_scene", m_currentSceneName); var hp = Player.Instance.gameObject.GetComponent <PlayerHealth>(); hp.currentHealth.Value = hp.maxHealth.Value; if (activated == false) { CheckPointManager.Instance.checkPoints.Add(Id); Tween.Color(waypointLight, waypointLight.color, lightColor, .2f, 0.2f, Tween.EaseInOut, Tween.LoopType.None, null, null, true); particles.SetActive(true); dialouge.SetActive(true); activated = true; } else { StartCoroutine(TeleportToPrompt()); } PersistentDataManager.SaveExternal(); }
private void SetListeners() { // Set inventory listeners // On add, boost stats InventoryManager inventoryManager = MainSingleton.Instance.inventoryManager; inventoryManager.OnAddItem += (ItemData data) => { foreach (KeyValuePair <string, int> pair in data.yarnValues) { SetValue(pair.Key.YarnFormat(), new Value(pair.Value)); } }; // On remove, decrement stats inventoryManager.OnRemoveItem += (ItemData data) => { foreach (KeyValuePair <string, int> pair in data.yarnValues) { SetValue(pair.Key.YarnFormat(), new Value(-pair.Value)); } }; // Save data on every node // TODO: If too performance heavy, then refactor DialogueRunner runner = MainSingleton.Instance.dialogueRunner; runner.onDialogueComplete.AddListener(SaveData); SaveDataListeners(); }
// Start is called before the first frame update void Start() { playerControl = GameObject.FindGameObjectWithTag("Player").GetComponent <CharacterController>(); dialogueRunner = FindObjectOfType <DialogueRunner>(); characterAnim = GetComponent <Animator>(); _audManager = FindObjectOfType <AudioManager>(); }
// Use this for initialization public virtual void Start() { if (!_DR) { _DR = SceneChanger.Yarn.GetComponent <DialogueRunner>(); } }
public void InstantiateDialoguesFromDatabase() { { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); TimedDialogueNode d1 = runner.Create<TimedDialogueNode>("c", Language.SWEDISH, "d1") as TimedDialogueNode; d1.speaker = "A"; TimedDialogueNode d2 = runner.Create<TimedDialogueNode>("c", Language.SWEDISH, "d2"); d2.speaker = "B"; relay.SaveAll("conversation.xml"); } { RelayTwo relay = new RelayTwo(); relay.LoadAll("conversation.xml"); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); TimedDialogueNode d1 = runner.GetDialogueNode("c", "d1") as TimedDialogueNode; TimedDialogueNode d2 = runner.GetDialogueNode("c", "d2") as TimedDialogueNode; Assert.AreEqual("A", d1.speaker); Assert.AreEqual("B", d2.speaker); } }
private void Awake() { _rigidbody2D = GetComponent <Rigidbody2D>(); if (yarnScripts.Length > 0) { _dialogueRunner = FindObjectOfType <DialogueRunner>(); foreach (YarnProgram yarnScript in yarnScripts) { _dialogueRunner.Add(yarnScript); } } _animator = GetComponent <Animator>(); AnimationClip[] animationClips = _animator.runtimeAnimatorController.animationClips; _animations = new Dictionary <string, string>() { ["Idle"] = animationClips[0].name, ["Walk"] = animationClips[1].name, ["Jump"] = animationClips[2].name, }; if (onLandEvent == null) { onLandEvent = new UnityEvent(); } }
void Awake() { // Start by hiding the container, line and option buttons if (dialogueContainer != null) { dialogueContainer.SetActive(false); } lineText.gameObject.SetActive(false); foreach (var button in optionButtons) { button.gameObject.SetActive(false); } // Hide the continue prompt if it exists if (continuePrompt != null) { continuePrompt.SetActive(false); } inlineStyleRegex = new Regex("{{([^{}]*)}}"); tagOpenRegex = new Regex("<([^/>]*)>"); tagCloseRegex = new Regex("<(/[^>]*)>"); dr = MHC.FindGameObjectComponentWithTag <DialogueRunner>(FSTokens.TagDialogueSystemManager); }
internal void SetMimanRunners(ProgramRunner pProgramRunner, SourceCodeDispenser pSourceCodeDispenser, DialogueRunner pDialogueRunner, WorldSettings pWorldSettings) { _programRunner = pProgramRunner; _sourceCodeDispenser = pSourceCodeDispenser; _dialogueRunner = pDialogueRunner; _worldSettings = pWorldSettings; }
private void Start() { dialogueRunner = GetComponentInParent <DialogueRunner>(); dialogueRunner.AddCommandHandler("npcSetFacing", NPCSetFacing); dialogueRunner.AddCommandHandler("npcMoveToX", NPCMoveToX); }
public void InstantiateDialoguesFromDatabase() { { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); TimedDialogueNode d1 = runner.Create <TimedDialogueNode>("c", Language.SWEDISH, "d1") as TimedDialogueNode; d1.speaker = "A"; TimedDialogueNode d2 = runner.Create <TimedDialogueNode>("c", Language.SWEDISH, "d2"); d2.speaker = "B"; relay.SaveAll("conversation.xml"); } { RelayTwo relay = new RelayTwo(); relay.LoadAll("conversation.xml"); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); TimedDialogueNode d1 = runner.GetDialogueNode("c", "d1") as TimedDialogueNode; TimedDialogueNode d2 = runner.GetDialogueNode("c", "d2") as TimedDialogueNode; Assert.AreEqual("A", d1.speaker); Assert.AreEqual("B", d2.speaker); } }
void Awake() { DialogueRunner dialogueRunner = FindObjectOfType <DialogueRunner>(); dialogueRunner.AddCommandHandler("waitForMixingTrigger", WaitForMixingTrigger); dialogueRunner.AddCommandHandler("waitForDrinksServed", WaitForDrinksServed); }
// Start is called before the first frame update void Start() { _dialogueRunner = FindObjectOfType<DialogueRunner>(); Outline.Color = Color; SetHighlighted(false); }
public void CanNotStartDialogueNodeInAnotherConversation() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); TimedDialogueNode n1 = runner.Create <TimedDialogueNode>("Conversation1", Language.SWEDISH, "DialogueNode1"); n1.nextNode = "DialogueNode2"; n1.timer = 1; runner.Create <TimedDialogueNode>("Conversation2", Language.SWEDISH, "DialogueNode2"); n1.Start(); string msg = null; D.onDLog += (pMessage) => { Console.WriteLine("DLog: " + pMessage); msg = pMessage; }; runner.Update(1.0f); runner.Update(1.0f); Assert.NotNull(msg); }
private void EndGame() { GameRunning = false; ScoreRank scoreRank = GetScoreRank(true); CharacterCreation.Instance.NumberOfSuspects = scoreRank.NumberOfSuspects; string scoreColorAsString = '#' + ColorUtility.ToHtmlStringRGBA(scoreRank.Color); FindObjectOfType <DialogueRunner>().variableStorage.SetValueNoLeading(ScoreColorName, scoreColorAsString); FindObjectOfType <DialogueUI>().onDialogueEnd.AddListener(() => { AsyncOperation loadSceneOperation = SceneManager.LoadSceneAsync(1); // Load Main Menu loadSceneOperation.completed += op => { CharacterCreation.Instance.CreateSuspects(); DialogueRunner dialogueRunner = FindObjectOfType <DialogueRunner>(); dialogueRunner.startNode = "MainMenu-Return"; dialogueRunner.startAutomatically = true; }; }); FindObjectOfType <DialogueController>().StartPostGameDialogue(); }
private void Awake() { if (dialogueRunner == null) { dialogueRunner = FindObjectOfType <DialogueRunner>(); } }
public void AssertCommando() { _lines = new List<string>(); s_pooWasCalledCorrectly = false; RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.AddExpression("Pass", Pass); dialogueRunner.AddExpression("Fail", Fail); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation16.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation16"); Assert.Throws<GrimmAssertException>(() => { dialogueRunner.StartConversation("conversation16"); for(int i = 0; i < 100; i++) { dialogueRunner.Update(1.0f); } }); Assert.AreEqual(4, _lines.Count); Assert.AreEqual("hej1", _lines[0]); Assert.AreEqual("", _lines[1]); Assert.AreEqual("hej2", _lines[2]); Assert.AreEqual("", _lines[3]); }
void Start() { if (scriptToLoad != null) { DialogueRunner dialogueRunner = FindObjectOfType <Yarn.Unity.DialogueRunner>(); dialogueRunner.Add(scriptToLoad); } }
private void Awake() { if (dialogueRunner == null) { dialogueRunner = FindObjectOfType <DialogueRunner>(); } dialogueRunner.AddCommandHandler("cam", Cam); }
protected override void Start() { base.Start(); textField = GetComponentInChildren <Text>(); exampleUI = FindObjectOfType <Yarn.Unity.Example.ExampleDialogueUI>(); dialogueRunner = FindObjectOfType <DialogueRunner>(); playerInteractionalController = FindObjectOfType <InteractionControllerBehaviour>(); }
static void RunDialogue() { string conversationName = "meeting"; // "PixieMeeting1"; RelayTwo relay; DialogueRunner dialogueRunner; relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddExpression("CoinFlip", CoinFlip); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSpeech); dialogueRunner.logger.AddListener(Log); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile(conversationName + ".dia"); DialogueScriptPrinter printer = new DialogueScriptPrinter(dialogueRunner); printer.PrintConversation(conversationName); Console.WriteLine(" - " + conversationName + " - "); dialogueRunner.StartConversation(conversationName); while(dialogueRunner.ConversationIsRunning(conversationName)) { //printer.PrintConversation(conversationName); dialogueRunner.Update(1.0f); DialogueNode activeDialogueNode = dialogueRunner.GetActiveBranchingDialogueNode(conversationName); if(activeDialogueNode is BranchingDialogueNode) { BranchingDialogueNode branchingNode = activeDialogueNode as BranchingDialogueNode; //printer.PrintConversation(conversationName); int i = 1; Console.WriteLine("Choose an alternative:"); foreach(string optionNodeName in branchingNode.nextNodes) { TimedDialogueNode optionNode = dialogueRunner.GetDialogueNode(conversationName, optionNodeName) as TimedDialogueNode; Console.WriteLine(i++ + ". " + optionNode.line); } int choice = -1; while(choice < 0 || choice > branchingNode.nextNodes.Length - 1) { try { choice = 0; //Convert.ToInt32(Console.ReadLine()) - 1; } catch { choice = -1; } } branchingNode.Choose(choice); } } }
public void DontTriggerEventOnWaitingNodeUnlessEventHappensWhenExpressionIsTrue() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); runner.logger.AddListener (msg => Console.WriteLine ("Dialog runner log: " + msg)); bool sunny = false; runner.AddExpression ("IsSunny", new DialogueRunner.Expression (args => { return sunny; })); var expression = runner.Create<ExpressionDialogueNode>("Conversation1", Language.SWEDISH, "ExpressionNode"); expression.expression = "IsSunny"; expression.args = new string[] { }; var waitNode = runner.Create<WaitDialogueNode>("Conversation1", Language.SWEDISH, "WaitNode"); waitNode.eventName = "bam!"; waitNode.expressions = new ExpressionDialogueNode[] { expression }; var start = runner.Create<ConversationStartDialogueNode>("Conversation1", Language.SWEDISH, "Start"); var end = runner.Create<ConversationEndDialogueNode>("Conversation1", Language.SWEDISH, "End"); start.nextNode = waitNode.name; waitNode.nextNode = end.name; runner.StartConversation ("Conversation1"); runner.Update (0.1f); runner.Update (0.1f); runner.Update (0.1f); Assert.IsTrue (waitNode.isOn); Assert.IsTrue (runner.ConversationIsRunning("Conversation1")); // Event should not occur since it's not sunny yet runner.EventHappened("bam!"); runner.Update (0.1f); Assert.IsTrue (waitNode.isOn); Assert.IsTrue (runner.ConversationIsRunning("Conversation1")); sunny = true; // Now, even though it's sunny the event should still not happen since we're not bam!:ing runner.Update (0.1f); Assert.IsTrue (waitNode.isOn); Assert.IsTrue (runner.ConversationIsRunning("Conversation1")); // But if the bam! event happens while sunny, the conversation should end runner.EventHappened("bam!"); runner.Update (0.1f); runner.Update (0.1f); runner.Update (0.1f); Assert.IsFalse (waitNode.isOn); Assert.IsFalse (runner.ConversationIsRunning("Conversation1")); }
private void Init(RelayTwo pRelay) { paused = false; isReadyToPlay = false; relay = pRelay; dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); roomRunner = new RoomRunner(relay); programRunner = new ProgramRunner(relay); sourceCodeDispenser = new SourceCodeDispenser(relay); timetableRunner = new TimetableRunner(relay); settings = new WorldSettings(relay); tingRunner = new MimanTingRunner(relay, dialogueRunner, programRunner, sourceCodeDispenser, roomRunner, timetableRunner, settings); grimmApiDefinitions = new MimanGrimmApiDefinitions(this); grimmApiDefinitions.RegisterFunctions(); grimmApiDefinitions.RegisterExpressions(); translator = new Translator (Translator.Language.SWEDISH); }
public void CanNotStartDialogueNodeInAnotherConversation() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); TimedDialogueNode n1 = runner.Create<TimedDialogueNode>("Conversation1", Language.SWEDISH, "DialogueNode1"); n1.nextNode = "DialogueNode2"; n1.timer = 1; runner.Create<TimedDialogueNode>("Conversation2", Language.SWEDISH, "DialogueNode2"); n1.Start(); Assert.Throws<GrimmException>(() => { runner.Update(1.0f); }); }
public void CanNotStartDialogueNodeInAnotherConversation() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner runner = new DialogueRunner(relay, Language.SWEDISH); TimedDialogueNode n1 = runner.Create<TimedDialogueNode>("Conversation1", Language.SWEDISH, "DialogueNode1"); n1.nextNode = "DialogueNode2"; n1.timer = 1; runner.Create<TimedDialogueNode>("Conversation2", Language.SWEDISH, "DialogueNode2"); n1.Start(); string msg = null; D.onDLog += (pMessage) => { Console.WriteLine("DLog: " + pMessage); msg = pMessage; }; runner.Update(1.0f); runner.Update(1.0f); Assert.NotNull(msg); }
public void ListeningForEventAndSaveInBetween() { _lines = new List<string>(); { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(LogDialogueRunner); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation19.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation19"); dialogueRunner.StartConversation("conversation19"); for(int i = 0; i < 10; i++) { dialogueRunner.Update(0.1f); } Assert.AreEqual(1, _lines.Count); Assert.AreEqual("Blah blah blah", _lines[0]); relay.SaveAll("save.xml"); } { RelayTwo relay = new RelayTwo("save.xml"); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(LogDialogueRunner); dialogueRunner.EventHappened("TensionWentUp"); for(int i = 0; i < 500; i++) { dialogueRunner.Update(1.0f); } Assert.AreEqual(4, _lines.Count); Assert.AreEqual("Oh!", _lines[1]); Assert.AreEqual("", _lines[2]); Assert.AreEqual("", _lines[3]); Assert.IsFalse(dialogueRunner.ConversationIsRunning("conversation19")); dialogueRunner.EventHappened("SomethingElse"); // this is not supposed to do anything since the story is over for(int i = 0; i < 500; i++) { dialogueRunner.Update(1.0f); } Assert.AreEqual(4, _lines.Count); } }
public void ListeningDialogueNodeWithNoBranch() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(LogDialogueRunner); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation21.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation21"); dialogueRunner.StartConversation("conversation21"); Assert.AreEqual(0, _lines.Count); for(int i = 0; i < 500; i++) { if(i == 250) { dialogueRunner.EventHappened("RainStarted"); } dialogueRunner.Update(1.0f); } Assert.AreEqual(2, _lines.Count); Assert.AreEqual("Where is my umbrella?", _lines[0]); Assert.AreEqual("", _lines[1]); }
public void InterruptCommando() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(Console.WriteLine); D.onDLog += (pMessage) => { Console.WriteLine("DLog: " + pMessage); }; DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation1.dia"); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation33.dia"); dialogueRunner.StartConversation("conversation33"); for(int i = 0; i < 300; i++) { dialogueRunner.Update(0.1f); } Assert.AreEqual(10, _lines.Count); Assert.AreEqual("before", _lines[0]); Assert.AreEqual("", _lines[1]); Assert.AreEqual("Hoho", _lines[2]); Assert.AreEqual("", _lines[3]); Assert.AreEqual("Hjälp!", _lines[4]); Assert.AreEqual("", _lines[5]); Assert.AreEqual("Oh no", _lines[6]); Assert.AreEqual("", _lines[7]); Assert.AreEqual("after", _lines[8]); Assert.AreEqual("", _lines[9]); }
public void WaitSpecifiedTime() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(Console.WriteLine); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation36.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation36"); dialogueRunner.StartConversation("conversation36"); dialogueRunner.Update(1.0f); Assert.AreEqual(0, _lines.Count); dialogueRunner.Update(0.01f); dialogueRunner.Update(0.01f); dialogueRunner.Update(0.01f); dialogueRunner.Update(0.01f); dialogueRunner.Update(3.0f); dialogueRunner.Update(1.0f); dialogueRunner.Update(1.0f); dialogueRunner.Update(1.0f); // TODO: had to hack this a bit (with multiple updates) to make it work, hope it's OK... Assert.AreEqual(2, _lines.Count); Assert.AreEqual("Woo!", _lines[0]); }
public void SetUp() { _relay = new RelayTwo(); _relay.CreateTable(DialogueNode.TABLE_NAME); _dialogueRunner = new DialogueRunner(_relay, Language.SWEDISH); }
public void WaitForMultipleConditions() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(Console.WriteLine); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation28.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation28"); }
public void EmptyLoop() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation24.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation24"); dialogueRunner.StartConversation("conversation24"); dialogueRunner.Update(1.0f); Assert.IsTrue(dialogueRunner.ConversationIsRunning("conversation24")); // never ends }
public void Elif() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(Console.WriteLine); dialogueRunner.AddExpression("A", ((string[] args) => (false))); dialogueRunner.AddExpression("B", ((string[] args) => (false))); dialogueRunner.AddExpression("C", ((string[] args) => (true))); dialogueRunner.AddExpression("D", ((string[] args) => (false))); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation29.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation29"); dialogueRunner.StartConversation("conversation29"); for(int i = 0; i < 100; i++) { dialogueRunner.Update(0.5f); } Assert.AreEqual(2, _lines.Count); Assert.AreEqual("C", _lines[0]); }
public void ChoiceKeyword() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation34.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation34"); }
public void CancelNested() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(LogDialogueRunner); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation22b.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation22b"); dialogueRunner.StartConversation("conversation22b"); for(int i = 0; i < 500; i++) { dialogueRunner.Update(1.0f); } Assert.AreEqual(2, _lines.Count); Assert.AreEqual("Yup", _lines[0]); Assert.AreEqual("", _lines[1]); }
public void CallAFunctionWithDotOperator() { s_pooWasCalledCorrectly = false; RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddFunction("poo", poo); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation15.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation15"); dialogueRunner.StartConversation("conversation15"); for(int i = 0; i < 10; i++) { dialogueRunner.Update(0.1f); } Assert.IsTrue(s_pooWasCalledCorrectly); }
public void CallAFunctionFromDialogueScript() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddFunction("foo", foo); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation13.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation13"); dialogueRunner.StartConversation("conversation13"); for(int i = 0; i < 10; i++) { dialogueRunner.Update(0.1f); } Assert.IsTrue(s_fooWasCalled); }
public void BreakOutOfLoop() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(Console.WriteLine); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation26.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation26"); Console.WriteLine("Starting..."); dialogueRunner.StartConversation("conversation26"); for(int i = 0; i < 10; i++) { Console.WriteLine("Update " + i); dialogueRunner.Update(0.3f); } foreach(string s in _lines) { Console.WriteLine(s); } Assert.IsFalse(dialogueRunner.ConversationIsRunning("conversation26")); Assert.AreEqual(2, _lines.Count); Assert.AreEqual("yo", _lines[0]); Assert.AreEqual("", _lines[1]); }
public void ShortIf() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(Console.WriteLine); dialogueRunner.AddExpression("Foo", ((string[] args) => (true))); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation30.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation30"); }
public void StartingOtherDialoguesAndStoryNodes() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation1.dia"); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation11.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation11"); dialogueRunner.StartConversation("conversation11"); for(int i = 0; i < 1000; i++) { dialogueRunner.Update(1.0f); } Console.WriteLine("Output:"); foreach(string s in _lines) { Console.WriteLine(s); } Assert.AreEqual(6, _lines.Count); Assert.AreEqual("Hoho", _lines[0]); Assert.AreEqual("", _lines[1]); Assert.AreEqual("Hjälp!",_lines[2]); Assert.AreEqual("", _lines[3]); Assert.AreEqual("Oh no", _lines[4]); Assert.AreEqual("", _lines[5]); }
public void Focus() { _lines = new List<string>(); bool madeActive = false; RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(LogDialogueRunner); dialogueRunner.AddFocusConversationListener((string pConversation) => { if(pConversation == "conversation23") { madeActive = true; } }); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation23.dia"); DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); scriptPrinter.PrintConversation("conversation23"); dialogueRunner.StartConversation("conversation23"); for(int i = 0; i < 500; i++) { dialogueRunner.Update(1.0f); } Assert.IsTrue(madeActive); }
public void WaitForEvents() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.logger.AddListener(Console.WriteLine); dialogueRunner.AddExpression("Whatever", ((string[] args) => (true))); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation35.dia"); //DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner); //scriptPrinter.PrintConversation("conversation35"); dialogueRunner.StartConversation("conversation35"); for(int i = 0; i < 100; i++) { dialogueRunner.Update(0.5f); } Assert.AreEqual(2, _lines.Count); Assert.AreEqual("Yeah1", _lines[0]); dialogueRunner.EventHappened("Bam"); for(int i = 0; i < 100; i++) { dialogueRunner.Update(0.5f); } Assert.AreEqual(4, _lines.Count); Assert.AreEqual("Yeah2", _lines[2]); }
public void GotoNodes() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.SWEDISH); dialogueRunner.logger.AddListener(LogDialogueRunner); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); _lines = new List<string>(); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation6.dia"); DialogueScriptPrinter printer = new DialogueScriptPrinter(dialogueRunner); printer.PrintConversation("conversation6"); dialogueRunner.StartConversation("conversation6"); for(int i = 0; i < 1000; i++) { dialogueRunner.Update(1.0f); } Console.WriteLine("Output:"); foreach(string s in _lines) { Console.WriteLine(s); } Assert.AreEqual(6, _lines.Count); Assert.AreEqual("a", _lines[0]); Assert.AreEqual("", _lines[1]); Assert.AreEqual("b", _lines[2]); Assert.AreEqual("", _lines[3]); Assert.AreEqual("c", _lines[4]); Assert.AreEqual("", _lines[5]); }
public void SetRunner(DialogueRunner pRunner) { _dialogueRunner = pRunner; }
public void IfNode() { _lines = new List<string>(); RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.SWEDISH); dialogueRunner.logger.AddListener(LogDialogueRunner); dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething); dialogueRunner.AddExpression("TimeForSleep", TimeForSleep); dialogueRunner.AddExpression("TimeForDinner", TimeForDinner); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation7.dia"); DialogueScriptPrinter printer = new DialogueScriptPrinter(dialogueRunner); printer.PrintConversation("conversation7"); dialogueRunner.StartConversation("conversation7"); for(int i = 0; i < 1000; i++) { dialogueRunner.Update(1.0f); } Console.WriteLine("Output:"); foreach(string s in _lines) { Console.WriteLine(s); } Assert.AreEqual(4, _lines.Count); Assert.AreEqual("Let's eat", _lines[0]); Assert.AreEqual("", _lines[1]); Assert.AreEqual("I'm hungry", _lines[2]); Assert.AreEqual("", _lines[3]); }
public void ImmediateNodeWithCustomName() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.SWEDISH); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation9.dia"); DialogueNode n = dialogueRunner.GetDialogueNode("conversation9", "Örjan"); Assert.IsNotNull(n); }
public void WaitMustComeBeforeListen() { RelayTwo relay = new RelayTwo(); relay.CreateTable(DialogueNode.TABLE_NAME); DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT); dialogueRunner.logger.AddListener(Console.WriteLine); DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner); Assert.Throws<GrimmException> ( () => { scriptLoader.LoadDialogueNodesFromFile ("../conversations/conversation38.dia"); } ); }