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]);
        }
 public void SimpleConversation()
 {
     DialogueScriptLoader loader = new DialogueScriptLoader(_dialogueRunner);
     loader.LoadDialogueNodesFromFile("../conversations/conversation5.dia");
     DialogueScriptPrinter printer = new DialogueScriptPrinter(_dialogueRunner);
     printer.PrintConversation("conversation5");
 }
Example #3
0
        public void ComplicatedConversation()
        {
            DialogueScriptLoader loader = new DialogueScriptLoader(_dialogueRunner);

            loader.LoadDialogueNodesFromFile("../conversations/conversation4.dia");
            DialogueScriptPrinter printer = new DialogueScriptPrinter(_dialogueRunner);

            printer.PrintConversation("conversation4");
        }
        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 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 SaySomethingEachFrameUsingLoop()
        {
            _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/conversation25.dia");

            DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner);
            scriptPrinter.PrintConversation("conversation25");

            dialogueRunner.StartConversation("conversation25");
            for(int i = 0; i < 10; i++) {
                dialogueRunner.Update(5.0f);
            }

            Assert.AreEqual(20, _lines.Count);

            for(int i = 0; i < 10; i++) {
                Assert.AreEqual("hej", _lines[i * 2]);
                Assert.AreEqual("", _lines[i * 2 + 1]);
            }
        }
        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 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 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 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 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 WaitForConditionWithArguments()
        {
            _lines = new List<string>();

            RelayTwo relay = new RelayTwo();
            relay.CreateTable(DialogueNode.TABLE_NAME);

            DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.DEFAULT);
            dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething);
            dialogueRunner.AddExpression("StateIs", StateIs);

            DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner);
            scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation18.dia");

            DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner);
            scriptPrinter.PrintConversation("conversation18");

            dialogueRunner.StartConversation("conversation18");

            for(int i = 0; i < 100; i++)
            {
                dialogueRunner.Update(1.0f);
            }

            Assert.AreEqual(0, _lines.Count);

            for(int i = 0; i < 100; i++)
            {
                if(i == 50) { s_monsterState = "Angry"; }
                dialogueRunner.Update(1.0f);
            }

            Assert.AreEqual(2, _lines.Count);
            Assert.AreEqual("Ahhhhh!",  _lines[0]);
            Assert.AreEqual("", 	 _lines[1]);
        }
        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 WaitAndLoop()
        {
            var log = 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/conversation39.dia");

            DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner);
            scriptPrinter.PrintConversation("conversation39");

            dialogueRunner.AddFunction("Log", (args) => log.Add(args[0]));
            dialogueRunner.logger.AddListener(s => Console.WriteLine("LOG: " + s));

            dialogueRunner.StartConversation("conversation39");

            for(int i = 0; i < 10 * 7; i++) {
                dialogueRunner.Update(0.1f);
            }
            dialogueRunner.Update(0.1f);

            Assert.AreEqual(7, log.Count);
            Assert.AreEqual("boom", log[0]);
            Assert.AreEqual("boom", log[1]);
            Assert.AreEqual("boom", log[2]);
            Assert.AreEqual("boom", log[3]);
            Assert.AreEqual("boom", log[4]);
            Assert.AreEqual("boom", log[5]);
            Assert.AreEqual("boom", log[6]);
        }
        public void StopCommando()
        {
            _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);

            DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner);
            scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation17.dia");

            DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner);
            scriptPrinter.PrintConversation("conversation17");

            dialogueRunner.StartConversation("conversation17");
            for(int i = 0; i < 100; i++)
            {
                dialogueRunner.Update(1.0f);
            }

            Console.WriteLine("OUTPUT:");
            foreach(string s in _lines) {
                Console.WriteLine(s);
            }

            Assert.AreEqual(2, _lines.Count);
            Assert.AreEqual("hej1", _lines[0]);
            Assert.AreEqual("", _lines[1]);
        }
        public void SwitchLanguageInTheMiddleOfConversation()
        {
            _lines = new List<string>();

            RelayTwo relay = new RelayTwo();
            relay.CreateTable(DialogueNode.TABLE_NAME);

            DialogueRunner dialogueRunner = new DialogueRunner(relay, Language.ENGLISH);
            dialogueRunner.AddOnSomeoneSaidSomethingListener(OnSomeoneSaidSomething);

            DialogueScriptLoader scriptLoader = new DialogueScriptLoader(dialogueRunner);
            scriptLoader.LoadDialogueNodesFromFile("../conversations/conversation10.dia");

            DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner);
            scriptPrinter.PrintConversation("conversation10");

            dialogueRunner.StartConversation("conversation10");
            while(_lines.Count < 1)
            {
                dialogueRunner.Update(1.0f);
            }

            dialogueRunner.language = Language.SWEDISH;

            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("Hi", _lines[0]);
            Assert.AreEqual("", _lines[1]);
            Assert.AreEqual("Hej!", _lines[2]);
            Assert.AreEqual("", _lines[3]);
        }
        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 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 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 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 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]);
        }
Example #22
0
        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 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 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 CallAFunctionWithArguments()
        {
            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/conversation14.dia");

            DialogueScriptPrinter scriptPrinter = new DialogueScriptPrinter(dialogueRunner);
            scriptPrinter.PrintConversation("conversation14");

            dialogueRunner.StartConversation("conversation14");
            dialogueRunner.Update(1.0f);

            Assert.IsTrue(s_pooWasCalledCorrectly);
        }