예제 #1
0
파일: Task.cs 프로젝트: Craiel/GDX.AI.Sharp
        public virtual void Serialize(YamlFluentSerializer serializer)
        {
            serializer.Begin(YamlContainerType.Dictionary)
            .Add("Id", this.Id.Value);

            if (this.Guard != TaskId.Invalid)
            {
                serializer.Add("Guard", this.Guard.Value);
            }

            serializer.End();
        }
예제 #2
0
        // -------------------------------------------------------------------
        // Public
        // -------------------------------------------------------------------

        /// <summary>
        /// Serialize the given tree to string format using Json
        /// </summary>
        /// <param name="tree">the tree to serialize</param>
        /// <returns>the string data for the tree</returns>
        /// <exception cref="SerializationException">if any data is not able to serialize</exception>
        public string Serialize(BehaviorStream <T> tree)
        {
            var serializer = new YamlFluentSerializer();

            serializer.Begin(YamlContainerType.Dictionary)
            .Add("Size", tree.stream.Length)
            .Add("GrowBy", tree.GrowBy)
            .Add("RootId", tree.Root.Value)
            .End();

            serializer.Begin(YamlContainerType.Dictionary);
            for (var i = 0; i < tree.stream.Length; i++)
            {
                if (tree.stream[i] == null)
                {
                    serializer.Add(i);
                    continue;
                }

                serializer.Add(i, tree.stream[i].GetType().AssemblyQualifiedName);
            }

            serializer.End();

            serializer.Begin(YamlContainerType.Dictionary);
            for (var i = 0; i < tree.stream.Length; i++)
            {
                if (tree.stream[i] == null)
                {
                    serializer.Add(i);
                    continue;
                }

                serializer.Add(i, tree.stream[i]);
            }
            serializer.End();

            return(serializer.Serialize());
        }