示例#1
0
文件: Node.cs 项目: Norbyte/lslib
 public virtual void Write(OsiWriter writer)
 {
     DatabaseRef.Write(writer);
     writer.Write(Name);
     if (Name.Length > 0)
         writer.Write(NameIndex);
 }
示例#2
0
文件: Value.cs 项目: Norbyte/lslib
        public virtual void Write(OsiWriter writer)
        {
            writer.Write((byte)48);
            writer.Write(TypeId);
            switch ((Type)TypeId)
            {
                case Type.Unknown:
                    break;

                case Type.Integer:
                    writer.Write(IntValue);
                    break;

                case Type.Float:
                    writer.Write(FloatValue);
                    break;

                case Type.String:
                    writer.Write(StringValue != null);
                    if (StringValue != null)
                        writer.Write(StringValue);
                    break;

                default:
                    writer.Write(StringValue);
                    break;
            }
        }
示例#3
0
文件: Function.cs 项目: Norbyte/lslib
 public void Write(OsiWriter writer)
 {
     writer.Write((byte)Types.Count);
     foreach (var type in Types)
     {
         writer.Write(type);
     }
 }
示例#4
0
文件: RelOp.cs 项目: Norbyte/lslib
        public override void Write(OsiWriter writer)
        {
            base.Write(writer);
            writer.Write(Value1Index);
            writer.Write(Value2Index);

            Value1.Write(writer);
            Value2.Write(writer);
            writer.Write((UInt32)RelOp);
        }
示例#5
0
文件: Rel.cs 项目: Norbyte/lslib
        public override void Write(OsiWriter writer)
        {
            base.Write(writer);
            ParentRef.Write(writer);
            AdapterRef.Write(writer);

            RelDatabaseRef.Write(writer);
            RelDatabase.Write(writer);
            writer.Write(RelDatabaseFlag);
        }
示例#6
0
文件: Function.cs 项目: Norbyte/lslib
        public void Write(OsiWriter writer)
        {
            writer.Write(Name);

            writer.Write((UInt32)OutParamMask.Count);
            foreach (var b in OutParamMask)
            {
                writer.Write(b);
            }

            Parameters.Write(writer);
        }
示例#7
0
文件: Rule.cs 项目: Norbyte/lslib
        public override void Write(OsiWriter writer)
        {
            base.Write(writer);
            writer.WriteList<Call>(Calls);

            writer.Write((byte)Variables.Count);
            foreach (var variable in Variables)
            {
                writer.Write((byte)1);
                variable.Write(writer);
            }

            writer.Write(Line);
            if (writer.MajorVersion > 1 || (writer.MajorVersion == 1 && writer.MinorVersion >= 6))
                writer.Write(IsQuery);
        }
示例#8
0
文件: Join.cs 项目: Norbyte/lslib
        public override void Write(OsiWriter writer)
        {
            base.Write(writer);
            LeftParentRef.Write(writer);
            RightParentRef.Write(writer);
            Adapter1Ref.Write(writer);
            Adapter2Ref.Write(writer);

            Database1Ref.Write(writer);
            Database1.Write(writer);
            writer.Write(Database1Flag);

            Database2Ref.Write(writer);
            Database2.Write(writer);
            writer.Write(Database2Flag);
        }
示例#9
0
文件: Adapter.cs 项目: Norbyte/lslib
        public void Write(OsiWriter writer)
        {
            Constants.Write(writer);

            writer.Write((byte)LogicalIndices.Count);
            foreach (var index in LogicalIndices)
            {
                writer.Write(index);
            }

            writer.Write((byte)LogicalToPhysicalMap.Count);
            foreach (var pair in LogicalToPhysicalMap)
            {
                writer.Write(pair.Key);
                writer.Write(pair.Value);
            }
        }
示例#10
0
文件: Call.cs 项目: Norbyte/lslib
        public void Write(OsiWriter writer)
        {
            writer.Write(Name);
            if (Name.Length > 0)
            {
                writer.Write(Parameters != null);
                if (Parameters != null)
                {
                    writer.Write((byte)Parameters.Count);
                    foreach (var param in Parameters)
                    {
                        writer.Write(param is Variable);
                        param.Write(writer);
                    }
                }

                writer.Write(Negate);
            }

            writer.Write(GoalIdOrDebugHook);
        }
示例#11
0
文件: Goal.cs 项目: Norbyte/lslib
        public void Write(OsiWriter writer)
        {
            writer.Write(Index);
            writer.Write(Name);
            writer.Write(SubGoalCombination);

            writer.Write((UInt32)ParentGoals.Count);
            foreach (var goalIndex in ParentGoals)
                writer.Write(goalIndex);

            writer.Write((UInt32)SubGoals.Count);
            foreach (var goalIndex in SubGoals)
                writer.Write(goalIndex);

            writer.Write(Unknown);

            if (writer.MajorVersion > 1 || (writer.MajorVersion == 1 && writer.MinorVersion >= 1))
            {
                writer.WriteList<Call>(InitCalls);
                writer.WriteList<Call>(ExitCalls);
            }
        }
示例#12
0
文件: DataNode.cs 项目: Norbyte/lslib
 public override void Write(OsiWriter writer)
 {
     base.Write(writer);
     writer.WriteList<NodeEntryItem>(ReferencedBy);
 }
示例#13
0
 public void Write(OsiWriter writer)
 {
     writer.Write(DatabaseIndex);
 }
示例#14
0
 public void Write(OsiWriter writer)
 {
     writer.Write(AdapterIndex);
 }
示例#15
0
 public void Write(OsiWriter writer)
 {
     writer.Write(NodeIndex);
 }
示例#16
0
文件: Value.cs 项目: Norbyte/lslib
 public void Write(OsiWriter writer)
 {
     writer.Write((byte)Logical.Count);
     foreach (var logical in Logical)
     {
         writer.Write((byte)logical.Key);
         logical.Value.Write(writer);
     }
 }
示例#17
0
文件: Value.cs 项目: Norbyte/lslib
 public override void Write(OsiWriter writer)
 {
     base.Write(writer);
     writer.Write(Index);
     writer.Write(Unused);
     writer.Write(Adapted);
 }
示例#18
0
文件: Value.cs 项目: Norbyte/lslib
 public override void Write(OsiWriter writer)
 {
     base.Write(writer);
     writer.Write(IsValid);
     writer.Write(OutParam);
     writer.Write(IsAType);
 }
示例#19
0
文件: Node.cs 项目: Norbyte/lslib
 public override void Write(OsiWriter writer)
 {
     base.Write(writer);
     NextNode.Write(writer);
 }
示例#20
0
文件: Story.cs 项目: Norbyte/lslib
        public void Write(Stream stream, Story story)
        {
            using (Writer = new OsiWriter(stream))
            {
                Writer.MajorVersion = story.MajorVersion;
                Writer.MinorVersion = story.MinorVersion;

                var header = new OsirisHeader();
                header.Version = "Osiris save file dd. 02/10/15 12:44:13. Version 1.5.";
                header.MajorVersion = story.MajorVersion;
                header.MinorVersion = story.MinorVersion;
                header.BigEndian = false;
                header.Unused = 0;
                // Debug flags used in D:OS EE
                header.DebugFlags = 0x000CA010;
                header.Write(Writer);

                if (Writer.MajorVersion > 1 || (Writer.MajorVersion == 1 && Writer.MinorVersion > 7))
                {
                    var msg = String.Format(
                        "Osiris version v{0}.{1} unsupported; this tool supports versions up to v1.7.",
                        Writer.MajorVersion, Writer.MinorVersion
                    );
                    throw new InvalidDataException(msg);
                }

                if (Writer.MajorVersion > 1 || (Writer.MajorVersion == 1 && Writer.MinorVersion >= 4))
                    Writer.Scramble = 0xAD;


                if (Writer.MajorVersion > 1 || (Writer.MajorVersion == 1 && Writer.MinorVersion >= 5))
                    WriteTypes(story.Types);

                Writer.WriteList(story.DivObjects);
                Writer.WriteList(story.Functions);
                WriteNodes(story.Nodes);
                WriteAdapters(story.Adapters);
                WriteDatabases(story.Databases);
                WriteGoals(story.Goals);
                Writer.WriteList(story.GlobalActions);
            }
        }
示例#21
0
文件: Function.cs 项目: Norbyte/lslib
 public void Write(OsiWriter writer)
 {
     writer.Write(Line);
     writer.Write(Unknown1);
     writer.Write(Unknown2);
     NodeRef.Write(writer);
     writer.Write((byte)Type);
     writer.Write(GUID);
     Name.Write(writer);
 }