예제 #1
0
        public void ReadFrom( Stream aStream )
        {
            using ( var reader = new GMBinaryReader( aStream ) ) {
            int version = reader.ReadInt32();
            if ( version != FormatConstants.GMVersion50 && version != FormatConstants.GMVersion52 )
              throw new Exceptions.UnsupportedVersion( aStream.Position, version );

            TabCaption = reader.ReadString();
            ID = reader.ReadInt32();
            Author = reader.ReadString();
            Version = reader.ReadInt32();
            LastChanged = DateTime.FromOADate( reader.ReadDouble() );
            Information = reader.ReadString();
            InitializationCode = reader.ReadString();
            Advanced = reader.ReadInt32AsBool();

            reader.BaseStream.Position += 4;

            int count = reader.ReadInt32();
            Actions = new List<LibraryAction>( count );

            for ( int i = 0; i < count; i++ ) {
              var action = new LibraryAction();
              action.ReadFrom( reader );

              Actions.Add( action );
            }
              }
        }
예제 #2
0
        public void ReadFrom(Stream aStream)
        {
            using (var reader = new GMBinaryReader(aStream)) {
                int version = reader.ReadInt32();
                if (version != FormatConstants.GMVersion50 && version != FormatConstants.GMVersion52)
                {
                    throw new Exceptions.UnsupportedVersion(aStream.Position, version);
                }

                TabCaption         = reader.ReadString();
                ID                 = reader.ReadInt32();
                Author             = reader.ReadString();
                Version            = reader.ReadInt32();
                LastChanged        = DateTime.FromOADate(reader.ReadDouble());
                Information        = reader.ReadString();
                InitializationCode = reader.ReadString();
                Advanced           = reader.ReadInt32AsBool();

                reader.BaseStream.Position += 4;

                int count = reader.ReadInt32();
                Actions = new List <LibraryAction>(count);

                for (int i = 0; i < count; i++)
                {
                    var action = new LibraryAction();
                    action.ReadFrom(reader);

                    Actions.Add(action);
                }
            }
        }
예제 #3
0
        public void ReadFrom( GMBinaryReader aReader )
        {
            int version = aReader.ReadInt32();
              if ( version != FormatConstants.GMVersion50 && version != FormatConstants.GMVersion52 )
            throw new Exceptions.UnsupportedVersion( aReader.BaseStream.Position, version );

              Name = aReader.ReadString();
              ID = aReader.ReadInt32();
              IconData = aReader.ReadChunk();
              Hidden = aReader.ReadInt32AsBool();
              Advanced = aReader.ReadInt32AsBool();

              if ( version == FormatConstants.GMVersion52 )
            RegisteredOnly = aReader.ReadInt32AsBool();
              else
            RegisteredOnly = false;

              Description = aReader.ReadString();
              ListText = aReader.ReadString();
              HintText = aReader.ReadString();
              Kind = (ActionKinds) aReader.ReadInt32();
              InterfaceKind = (InterfaceKinds) aReader.ReadInt32();
              IsQuestion = aReader.ReadInt32AsBool();
              IsApplyable = aReader.ReadInt32AsBool();
              CanBeRelative = aReader.ReadInt32AsBool();

              {
            int count = aReader.ReadInt32();
            aReader.BaseStream.Position += 4;

            Arguments = new List<Argument>( count );

            for ( int i = 0; i < count; i++ )
              Arguments.Add( new Argument() {
            Caption = aReader.ReadString(),
            Kind = (ArgumentKinds) aReader.ReadInt32(),
            DefaultValue = aReader.ReadString(),
            Menu = aReader.ReadString()
              } );

            for ( int i = 0; i < 8 - count; i++ ) {
              aReader.BaseStream.Position += aReader.ReadInt32() + 8;
              aReader.BaseStream.Position += aReader.ReadInt32() + 4;
              aReader.BaseStream.Position += aReader.ReadInt32() + 4;
            }
              }

              ExecutionType = (ActionTypes) aReader.ReadInt32();
              Code = aReader.ReadString();

              aReader.BaseStream.Position += 4;
        }
예제 #4
0
        public void ReadFrom(GMBinaryReader aReader)
        {
            int version = aReader.ReadInt32();

            if (version != FormatConstants.GMVersion50 && version != FormatConstants.GMVersion52)
            {
                throw new Exceptions.UnsupportedVersion(aReader.BaseStream.Position, version);
            }

            Name     = aReader.ReadString();
            ID       = aReader.ReadInt32();
            IconData = aReader.ReadChunk();
            Hidden   = aReader.ReadInt32AsBool();
            Advanced = aReader.ReadInt32AsBool();

            if (version == FormatConstants.GMVersion52)
            {
                RegisteredOnly = aReader.ReadInt32AsBool();
            }
            else
            {
                RegisteredOnly = false;
            }

            Description   = aReader.ReadString();
            ListText      = aReader.ReadString();
            HintText      = aReader.ReadString();
            Kind          = (ActionKinds)aReader.ReadInt32();
            InterfaceKind = (InterfaceKinds)aReader.ReadInt32();
            IsQuestion    = aReader.ReadInt32AsBool();
            IsApplyable   = aReader.ReadInt32AsBool();
            CanBeRelative = aReader.ReadInt32AsBool();

            {
                int count = aReader.ReadInt32();
                aReader.BaseStream.Position += 4;

                Arguments = new List <Argument>(count);

                for (int i = 0; i < count; i++)
                {
                    Arguments.Add(new Argument()
                    {
                        Caption      = aReader.ReadString(),
                        Kind         = (ArgumentKinds)aReader.ReadInt32(),
                        DefaultValue = aReader.ReadString(),
                        Menu         = aReader.ReadString()
                    });
                }

                for (int i = 0; i < 8 - count; i++)
                {
                    aReader.BaseStream.Position += aReader.ReadInt32() + 8;
                    aReader.BaseStream.Position += aReader.ReadInt32() + 4;
                    aReader.BaseStream.Position += aReader.ReadInt32() + 4;
                }
            }

            ExecutionType = (ActionTypes)aReader.ReadInt32();
            Code          = aReader.ReadString();

            aReader.BaseStream.Position += 4;
        }
예제 #5
0
        public void ReadFrom( Stream aStream )
        {
            using ( GMBinaryReader reader = new GMBinaryReader( aStream ) ) {
            int magicNumber = reader.ReadInt32();
            if ( magicNumber != FormatConstants.GMMagicNumber )
              throw new Exceptions.UnknownFormat();

            int version = reader.ReadInt32();
            if ( version != FormatConstants.GMVersion80 && version != FormatConstants.GMVersion81 )
              throw new Exceptions.UnsupportedVersion( aStream.Position - 4, version );

            FormatVersion = version;

            Settings.ReadFrom( reader );
            Triggers.ReadFrom( reader );
            Constants.ReadFrom( reader );
            Sounds.ReadFrom( reader );
            Sprites.ReadFrom( reader );
            Backgrounds.ReadFrom( reader );
            Paths.ReadFrom( reader );
            Scripts.ReadFrom( reader );
            Fonts.ReadFrom( reader );
            TimeLines.ReadFrom( reader );
            Objects.ReadFrom( reader );
            Rooms.ReadFrom( reader );
            Includes.ReadFrom( reader );
            m_extensions.ReadFrom( reader );
            Information.ReadFrom( reader );
            m_creationCodes.ReadFrom( reader );
            m_roomOrder.ReadFrom( reader );
            ResourceTree.ReadFrom( reader );
              }
        }