Ejemplo n.º 1
0
        public void Read(OsiReader reader)
        {
            Name = reader.ReadString();
            if (Name.Length > 0)
            {
                var hasParams = reader.ReadByte();
                if (hasParams > 0)
                {
                    Parameters = new List <TypedValue>();
                    var numParams = reader.ReadByte();
                    while (numParams-- > 0)
                    {
                        TypedValue param;
                        var        type = reader.ReadByte();
                        if (type == 1)
                        {
                            param = new Variable();
                        }
                        else
                        {
                            param = new TypedValue();
                        }
                        param.Read(reader);
                        Parameters.Add(param);
                    }
                }

                Negate = reader.ReadBoolean();
            }

            GoalIdOrDebugHook = reader.ReadInt32();
        }
Ejemplo n.º 2
0
        private Dictionary <uint, OsirisType> ReadTypes(OsiReader reader, Story story)
        {
            if (reader.Ver < OsiVersion.VerAddTypeMap)
            {
                return(new Dictionary <uint, OsirisType>());
            }

            var types = ReadTypes(reader);

            // Find outermost types
            foreach (var type in types)
            {
                if (type.Value.Alias != 0)
                {
                    var aliasId = type.Value.Alias;

                    while (aliasId != 0 && types.ContainsKey(aliasId) && types[aliasId].Alias != 0)
                    {
                        aliasId = types[aliasId].Alias;
                    }

                    reader.TypeAliases.Add(type.Key, aliasId);
                }
            }

            return(types);
        }
Ejemplo n.º 3
0
 public override void Read(OsiReader reader)
 {
     base.Read(reader);
     Index   = reader.ReadSByte();
     Unused  = reader.ReadBoolean();
     Adapted = reader.ReadBoolean();
 }
Ejemplo n.º 4
0
 public override void Read(OsiReader reader)
 {
     base.Read(reader);
     IsValid  = reader.ReadBoolean();
     OutParam = reader.ReadBoolean();
     IsAType  = reader.ReadBoolean();
 }
Ejemplo n.º 5
0
        public void Read(OsiReader reader)
        {
            Index = reader.ReadUInt32();
            Name  = reader.ReadString();
            SubGoalCombination = reader.ReadByte();

            ParentGoals = new List <uint>();
            var numItems = reader.ReadUInt32();

            while (numItems-- > 0)
            {
                ParentGoals.Add(reader.ReadUInt32());
            }

            SubGoals = new List <uint>();
            numItems = reader.ReadUInt32();
            while (numItems-- > 0)
            {
                SubGoals.Add(reader.ReadUInt32());
            }

            Unknown = reader.ReadByte();

            if (reader.MajorVersion > 1 || (reader.MajorVersion == 1 && reader.MinorVersion >= 1))
            {
                InitCalls = reader.ReadList <Call>();
                ExitCalls = reader.ReadList <Call>();
            }
            else
            {
                InitCalls = new List <Call>();
                ExitCalls = new List <Call>();
            }
        }
Ejemplo n.º 6
0
        private Dictionary <uint, Node> ReadNodes(OsiReader reader)
        {
            var nodes = new Dictionary <uint, Node>();
            var count = reader.ReadUInt32();

            while (count-- > 0)
            {
                Node node   = null;
                var  type   = reader.ReadByte();
                var  nodeId = reader.ReadUInt32();
                switch ((Node.Type)type)
                {
                case Node.Type.Database:
                    node = new DatabaseNode();
                    break;

                case Node.Type.Proc:
                    node = new ProcNode();
                    break;

                case Node.Type.DivQuery:
                    node = new DivQueryNode();
                    break;

                case Node.Type.InternalQuery:
                    node = new InternalQueryNode();
                    break;

                case Node.Type.And:
                    node = new AndNode();
                    break;

                case Node.Type.NotAnd:
                    node = new NotAndNode();
                    break;

                case Node.Type.RelOp:
                    node = new RelOpNode();
                    break;

                case Node.Type.Rule:
                    node = new RuleNode();
                    break;

                case Node.Type.UserQuery:
                    node = new UserQueryNode();
                    break;

                default:
                    throw new NotImplementedException("No serializer found for this node type");
                }

                node.Read(reader);
                nodes.Add(nodeId, node);
            }

            return(nodes);
        }
Ejemplo n.º 7
0
        public void Read(OsiReader reader)
        {
            Parameters = new ParameterList();
            Parameters.Read(reader);

            FactsPosition = reader.BaseStream.Position;
            Facts         = new FactCollection(this);
            reader.ReadList <Fact>(Facts);
        }
Ejemplo n.º 8
0
 public void Read(OsiReader reader)
 {
     Name = reader.ReadString();
     Type = reader.ReadByte();
     Key1 = reader.ReadUInt32();
     Key2 = reader.ReadUInt32();
     Key3 = reader.ReadUInt32();
     Key4 = reader.ReadUInt32();
 }
Ejemplo n.º 9
0
 public virtual void Read(OsiReader reader)
 {
     DatabaseRef = reader.ReadDatabaseRef();
     Name        = reader.ReadString();
     if (Name.Length > 0)
     {
         NameIndex = reader.ReadByte();
     }
 }
Ejemplo n.º 10
0
        public void Read(OsiReader reader)
        {
            Types = new List <UInt32>();
            var count = reader.ReadByte();

            while (count-- > 0)
            {
                Types.Add(reader.ReadUInt32());
            }
        }
Ejemplo n.º 11
0
        public override void Read(OsiReader reader)
        {
            base.Read(reader);
            ParentRef  = reader.ReadNodeRef();
            AdapterRef = reader.ReadAdapterRef();

            RelDatabaseNodeRef = reader.ReadNodeRef();
            RelJoin            = new NodeEntryItem();
            RelJoin.Read(reader);
            RelDatabaseIndirection = reader.ReadByte();
        }
Ejemplo n.º 12
0
        public override void Read(OsiReader reader)
        {
            base.Read(reader);
            ParentRef  = reader.ReadNodeRef();
            AdapterRef = reader.ReadAdapterRef();

            RelDatabaseRef = reader.ReadDatabaseRef();
            RelDatabase    = new NodeEntryItem();
            RelDatabase.Read(reader);
            RelDatabaseFlag = reader.ReadByte();
        }
Ejemplo n.º 13
0
 public void Read(OsiReader reader)
 {
     Line     = reader.ReadUInt32();
     Unknown1 = reader.ReadUInt32();
     Unknown2 = reader.ReadUInt32();
     NodeRef  = reader.ReadNodeRef();
     Type     = (FunctionType)reader.ReadByte();
     GUID     = reader.ReadGuid();
     Name     = new FunctionSignature();
     Name.Read(reader);
 }
Ejemplo n.º 14
0
        private List <string> ReadStrings(OsiReader reader)
        {
            var stringTable = new List <string>();
            var count       = reader.ReadUInt32();

            while (count-- > 0)
            {
                stringTable.Add(reader.ReadString());
            }

            return(stringTable);
        }
Ejemplo n.º 15
0
        public void Read(OsiReader reader)
        {
            Columns = new List <Value>();
            var count = reader.ReadByte();

            while (count-- > 0)
            {
                var value = new Value();
                value.Read(reader);
                Columns.Add(value);
            }
        }
Ejemplo n.º 16
0
        private Dictionary <uint, Database> ReadDatabases(OsiReader reader)
        {
            var databases = new Dictionary <uint, Database>();
            var count     = reader.ReadUInt32();

            while (count-- > 0)
            {
                var database = new Database();
                database.Read(reader);
                databases.Add(database.Index, database);
            }

            return(databases);
        }
Ejemplo n.º 17
0
        private Dictionary <uint, Goal> ReadGoals(OsiReader reader, Story story)
        {
            var goals = new Dictionary <uint, Goal>();
            var count = reader.ReadUInt32();

            while (count-- > 0)
            {
                var goal = new Goal(story);
                goal.Read(reader);
                goals.Add(goal.Index, goal);
            }

            return(goals);
        }
Ejemplo n.º 18
0
        public override void Read(OsiReader reader)
        {
            base.Read(reader);
            Value1Index = reader.ReadSByte();
            Value2Index = reader.ReadSByte();

            Value1 = new Value();
            Value1.Read(reader);

            Value2 = new Value();
            Value2.Read(reader);

            RelOp = (RelOpType)reader.ReadInt32();
        }
Ejemplo n.º 19
0
        private Dictionary <uint, Adapter> ReadAdapters(OsiReader reader)
        {
            var adapters = new Dictionary <uint, Adapter>();
            var count    = reader.ReadUInt32();

            while (count-- > 0)
            {
                var adapter = new Adapter();
                adapter.Read(reader);
                adapters.Add(adapter.Index, adapter);
            }

            return(adapters);
        }
Ejemplo n.º 20
0
        private Dictionary <uint, OsirisType> ReadTypes(OsiReader reader)
        {
            var types = new Dictionary <uint, OsirisType>();
            var count = reader.ReadUInt32();

            while (count-- > 0)
            {
                var type = new OsirisType();
                type.Read(reader);
                types.Add(type.Index, type);
            }

            return(types);
        }
Ejemplo n.º 21
0
        public override void Read(OsiReader reader)
        {
            base.Read(reader);
            LeftValueIndex  = reader.ReadSByte();
            RightValueIndex = reader.ReadSByte();

            LeftValue = new Value();
            LeftValue.Read(reader);

            RightValue = new Value();
            RightValue.Read(reader);

            RelOp = (RelOpType)reader.ReadInt32();
        }
Ejemplo n.º 22
0
        public void Read(OsiReader reader)
        {
            Name         = reader.ReadString();
            OutParamMask = new List <byte>();
            var outParamBytes = reader.ReadUInt32();

            while (outParamBytes-- > 0)
            {
                OutParamMask.Add(reader.ReadByte());
            }

            Parameters = new ParameterList();
            Parameters.Read(reader);
        }
Ejemplo n.º 23
0
 public void Read(OsiReader reader)
 {
     Line = reader.ReadUInt32();
     ConditionReferences = reader.ReadUInt32();
     ActionReferences    = reader.ReadUInt32();
     NodeRef             = reader.ReadNodeRef();
     Type  = (FunctionType)reader.ReadByte();
     Meta1 = reader.ReadUInt32();
     Meta2 = reader.ReadUInt32();
     Meta3 = reader.ReadUInt32();
     Meta4 = reader.ReadUInt32();
     Name  = new FunctionSignature();
     Name.Read(reader);
 }
Ejemplo n.º 24
0
        public void Read(OsiReader reader)
        {
            Name      = reader.ReadString();
            Index     = reader.ReadByte();
            IsBuiltin = false;

            if (reader.Ver >= OsiVersion.VerTypeAliases)
            {
                Alias = reader.ReadByte();
            }
            else
            {
                // D:OS 1 only supported string aliases
                Alias = (int)Value.Type_OS1.String;
            }
        }
Ejemplo n.º 25
0
        public void Read(OsiReader reader)
        {
            Physical.Clear();
            Logical.Clear();

            var count = reader.ReadByte();

            while (count-- > 0)
            {
                var index = reader.ReadByte();
                var value = new Value();
                value.Read(reader);

                Physical.Add(value);
                Logical.Add(index, value);
            }
        }
Ejemplo n.º 26
0
        public override void Read(OsiReader reader)
        {
            base.Read(reader);
            LeftParentRef  = reader.ReadNodeRef();
            RightParentRef = reader.ReadNodeRef();
            Adapter1Ref    = reader.ReadAdapterRef();
            Adapter2Ref    = reader.ReadAdapterRef();

            Database1Ref = reader.ReadDatabaseRef();
            Database1    = new NodeEntryItem();
            Database1.Read(reader);
            Database1Flag = reader.ReadByte();

            Database2Ref = reader.ReadDatabaseRef();
            Database2    = new NodeEntryItem();
            Database2.Read(reader);
            Database2Flag = reader.ReadByte();
        }
Ejemplo n.º 27
0
        public virtual void Read(OsiReader reader)
        {
            var wtf = reader.ReadByte();

            if (wtf == 49)
            {
                TypeId   = reader.ReadUInt32();
                IntValue = reader.ReadInt32();
            }
            else if (wtf == 48)
            {
                TypeId = reader.ReadUInt32();
                switch ((Type)TypeId)
                {
                case Type.Unknown:
                    break;

                case Type.Integer:
                    IntValue = reader.ReadInt32();
                    break;

                case Type.Float:
                    FloatValue = reader.ReadSingle();
                    break;

                case Type.String:
                    if (reader.ReadByte() > 0)
                    {
                        StringValue = reader.ReadString();
                    }
                    break;

                default:
                    StringValue = reader.ReadString();
                    break;
                }
            }
            else
            {
                throw new InvalidDataException("Unrecognized value type");
            }
        }
Ejemplo n.º 28
0
        public void Read(OsiReader reader)
        {
            Constants = new Tuple();
            Constants.Read(reader);

            LogicalIndices = new List <sbyte>();
            var count = reader.ReadByte();

            while (count-- > 0)
            {
                LogicalIndices.Add(reader.ReadSByte());
            }

            LogicalToPhysicalMap = new Dictionary <byte, byte>();
            count = reader.ReadByte();
            while (count-- > 0)
            {
                var key   = reader.ReadByte();
                var value = reader.ReadByte();
                LogicalToPhysicalMap.Add(key, value);
            }
        }
Ejemplo n.º 29
0
        public void Read(OsiReader reader)
        {
            reader.ReadByte();
            Version      = reader.ReadString();
            MajorVersion = reader.ReadByte();
            MinorVersion = reader.ReadByte();
            BigEndian    = reader.ReadBoolean();
            Unused       = reader.ReadByte();

            if (Ver >= OsiVersion.VerAddVersionString)
            {
                reader.ReadBytes(0x80); // Version string buffer
            }
            if (Ver >= OsiVersion.VerAddDebugFlags)
            {
                DebugFlags = reader.ReadUInt32();
            }
            else
            {
                DebugFlags = 0;
            }
        }
Ejemplo n.º 30
0
        public void Read(OsiReader reader)
        {
            Index = reader.ReadUInt32();
            Name  = reader.ReadString();
            SubGoalCombination = reader.ReadByte();

            ParentGoals = reader.ReadRefList <GoalReference, Goal>();
            SubGoals    = reader.ReadRefList <GoalReference, Goal>();

            Flags = reader.ReadByte();

            if (reader.Ver >= OsiVersion.VerAddInitExitCalls)
            {
                InitCalls = reader.ReadList <Call>();
                ExitCalls = reader.ReadList <Call>();
            }
            else
            {
                InitCalls = new List <Call>();
                ExitCalls = new List <Call>();
            }
        }