Ejemplo n.º 1
0
        /// <summary>
        /// Triggers the conditions checking methodes for every choice nodes
        /// </summary>
        /// <param name="links"></param>
        /// <returns></returns>
        private List <NodeLinkData> FilterOnCondition(List <NodeLinkData> links)
        {
            //We get the node data for each link
            List <DialogueNodeData> inputNodes = new List <DialogueNodeData>();

            foreach (NodeLinkData nodeLink in links)
            {
                inputNodes.Add(currentDialogue.GetNode(nodeLink.TargetNodeGuid));
            }
            List <DialogueNodeData> nodesToRemove = new List <DialogueNodeData>();;

            //We treat and filter the data

            foreach (DialogueNodeData node in inputNodes)
            {
                if (!node.CheckCondition(GetEvaluators()))
                {
                    nodesToRemove.Add(node);
                }
            }

            foreach (DialogueNodeData node in nodesToRemove)
            {
                inputNodes.Remove(node);
            }

            //We filter the links correspondingly
            List <NodeLinkData> newLinks = new List <NodeLinkData>();

            foreach (DialogueNodeData data in inputNodes)
            {
                NodeLinkData link = links.Find(x => x.TargetNodeGuid == data.GUID);
                if (link != null)
                {
                    newLinks.Add(link);
                }
            }
            return(newLinks);
        }