Пример #1
0
        // used internally for playtest preview
        public static string SaveAllNodesAsString()
        {
            // gather data
            if (MerinoPrefs.validateNodeTitles)
            {
                ValidateNodeTitles();
            }

            var nodeInfo = new List <YarnSpinnerLoader.NodeInfo>();

            // save data to string
            //todo: move back over to linq, we were getting null ref exception so using this for the time being
            var treeNodes = new List <MerinoTreeElement>();

            foreach (var merinoTreeElement in MerinoData.TreeElements)
            {
                if (merinoTreeElement.leafType == MerinoTreeElement.LeafType.Node)
                {
                    treeNodes.Add(merinoTreeElement);
                }
            }

            foreach (var treeNode in treeNodes)
            {
                // skip the root
                if (treeNode.depth == -1)
                {
                    continue;
                }

                nodeInfo.Add(TreeNodeToYarnNode(treeNode));
            }

            return(YarnSpinnerFileFormatConverter.ConvertNodesToYarnText(nodeInfo));
        }
Пример #2
0
        // used for file saving
        public static string SaveFileNodesAsString(int fileNodeID)
        {
            var nodeInfoList = new List <YarnSpinnerLoader.NodeInfo>();
            var toTraverse   = new List <int>()
            {
                fileNodeID
            };
            var filterList = new List <int>();

            while (toTraverse.Count > 0)
            {
                if (filterList.Contains(toTraverse[0]) == false)
                {
                    filterList.Add(toTraverse[0]);
                    var node = MerinoData.GetNode(toTraverse[0]);
                    if (node != null && node.hasChildren)
                    {
                        toTraverse.AddRange(node.children.Select(x => x.id));
                    }
                }
                toTraverse.RemoveAt(0);
            }

            // export these nodes
            //todo: move back over to linq, we were getting null ref exception so using this for the time being
            var treeNodes = new List <MerinoTreeElement>();

            foreach (var merinoTreeElement in MerinoData.TreeElements)
            {
                if (filterList.Contains(merinoTreeElement.id))
                {
                    treeNodes.Add(merinoTreeElement);
                }
            }

            // save data to string
            foreach (var treeNode in treeNodes)
            {
                // skip the root, and skip any non-node nodes
                if (treeNode.depth == -1 || treeNode.leafType != MerinoTreeElement.LeafType.Node)
                {
                    continue;
                }

                nodeInfoList.Add(TreeNodeToYarnNode(treeNode));
            }

            return(YarnSpinnerFileFormatConverter.ConvertNodesToYarnText(nodeInfoList));
        }
Пример #3
0
        // used internally for playtest preview
        public static string SaveAllNodesAsString(int onlyWithParentID = -1)
        {
            var treeNodes = onlyWithParentID >= 0 ? MerinoData.GetAllCachedChildren(onlyWithParentID) : MerinoData.TreeElements;

            if (MerinoPrefs.validateNodeTitles)
            {
                ValidateNodeTitles(treeNodes);
            }

            var nodeInfo = new List <YarnSpinnerLoader.NodeInfo>();

            foreach (var treeNode in treeNodes)
            {
                if (treeNode.depth == -1 || treeNode.leafType != MerinoTreeElement.LeafType.Node)
                {
                    continue;
                }

                nodeInfo.Add(TreeNodeToYarnNode(treeNode));
            }

            return(YarnSpinnerFileFormatConverter.ConvertNodesToYarnText(nodeInfo));
        }