Beispiel #1
0
    // 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);
    }
Beispiel #2
0
    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;
    }
Beispiel #3
0
    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);
        }
Beispiel #6
0
    private void Start()
    {
        DialogueRunner runner = MainSingleton.Instance.dialogueRunner;

        runner.AddCommandHandler <string>("SetTime", SetTime);
        runner.AddCommandHandler <int>("AddMinutes", AddMinutes);
    }
Beispiel #7
0
    /// </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
        }
    }
Beispiel #8
0
 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);
                }
            }
        }
Beispiel #11
0
        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
        }
Beispiel #12
0
 private void OnValidate()
 {
     yarnUI  = GetComponent <CustomDialogUI>();
     storage = GetComponent <InMemoryVariableStorage>();
     runner  = GetComponent <DialogueRunner>();
     canvas  = GetComponentInParent <Canvas>();
 }
Beispiel #13
0
    // 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);
    }
Beispiel #14
0
 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();
         }
     }
 }
Beispiel #15
0
    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();
    }
Beispiel #16
0
    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();
    }
Beispiel #17
0
 // 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>();
 }
Beispiel #18
0
 // Use this for initialization
 public virtual void Start()
 {
     if (!_DR)
     {
         _DR = SceneChanger.Yarn.GetComponent <DialogueRunner>();
     }
 }
Beispiel #19
0
        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);
            }
        }
Beispiel #20
0
        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();
            }
        }
Beispiel #21
0
    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);
    }
Beispiel #22
0
		internal void SetMimanRunners(ProgramRunner pProgramRunner, SourceCodeDispenser pSourceCodeDispenser, DialogueRunner pDialogueRunner, WorldSettings pWorldSettings) 
        {
			_programRunner = pProgramRunner;
			_sourceCodeDispenser = pSourceCodeDispenser;
            _dialogueRunner = pDialogueRunner;
			_worldSettings = pWorldSettings;
		}
Beispiel #23
0
    private void Start()
    {
        dialogueRunner = GetComponentInParent <DialogueRunner>();

        dialogueRunner.AddCommandHandler("npcSetFacing", NPCSetFacing);
        dialogueRunner.AddCommandHandler("npcMoveToX", NPCMoveToX);
    }
Beispiel #24
0
        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);
    }
Beispiel #27
0
        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);
        }
Beispiel #28
0
    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();
    }
Beispiel #29
0
 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]);
        }
Beispiel #31
0
 void Start()
 {
     if (scriptToLoad != null)
     {
         DialogueRunner dialogueRunner = FindObjectOfType <Yarn.Unity.DialogueRunner>();
         dialogueRunner.Add(scriptToLoad);
     }
 }
Beispiel #32
0
 private void Awake()
 {
     if (dialogueRunner == null)
     {
         dialogueRunner = FindObjectOfType <DialogueRunner>();
     }
     dialogueRunner.AddCommandHandler("cam", Cam);
 }
Beispiel #33
0
 protected override void Start()
 {
     base.Start();
     textField      = GetComponentInChildren <Text>();
     exampleUI      = FindObjectOfType <Yarn.Unity.Example.ExampleDialogueUI>();
     dialogueRunner = FindObjectOfType <DialogueRunner>();
     playerInteractionalController = FindObjectOfType <InteractionControllerBehaviour>();
 }
Beispiel #34
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);
                }
            }
        }
Beispiel #35
0
        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"));
        }
Beispiel #36
0
		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);
		}
Beispiel #37
0
        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);
            });
        }
Beispiel #38
0
        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]);
 }
Beispiel #57
0
 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");
                }
            );
        }