Exemplo n.º 1
0
        public GMFont(BinaryReader binaryReader, GMWAD w)
        {
            Name     = new GMString(binaryReader);
            FontName = new GMString(binaryReader);
            FontSize = binaryReader.ReadInt32();
            Bold     = ReadBool(binaryReader);
            Italic   = ReadBool(binaryReader);
            First    = binaryReader.ReadInt32();
            Last     = binaryReader.ReadInt32();
            uint tpag_addr = binaryReader.ReadUInt32();

            if (tpag_addr != 0)
            {
                long prev_addr = binaryReader.BaseStream.Position;
                binaryReader.BaseStream.Position = tpag_addr;
                Texture = new GMTPAGEntry(binaryReader, w);
                binaryReader.BaseStream.Position = prev_addr;
            }
            else
            {
                Texture = null;
                Output.Print($"ERROR!! :: Font {Name} has no texture!");
            }

            ScaleX     = binaryReader.ReadSingle();
            ScaleY     = binaryReader.ReadSingle();
            GlyphCount = binaryReader.ReadInt32();
            Glyphs     = new List <GMFontGlyph>(GlyphCount);
            for (int g = 0; g < GlyphCount; g++)
            {
                var glyph = new GMFontGlyph(binaryReader);
                Glyphs.Add(glyph);
            }
        }
Exemplo n.º 2
0
        public GMObject(BinaryReader binaryReader, GMWAD w)
        {
            Name        = new GMString(binaryReader);
            SpriteIndex = binaryReader.ReadInt32();
            Sprite      = null;
            if (SpriteIndex > -1)
            {
                Sprite = w.Sprites.Items[SpriteIndex];
            }
            Visible     = ReadBool(binaryReader);
            Solid       = ReadBool(binaryReader);
            Depth       = binaryReader.ReadInt32();
            Persistent  = ReadBool(binaryReader);
            ParentIndex = binaryReader.ReadInt32();
            Parent      = null;
            MaskIndex   = binaryReader.ReadInt32();
            Mask        = null;
            if (MaskIndex > -1)
            {
                Mask = w.Sprites.Items[MaskIndex];
            }

            // It's a list with list with GMGMLEvents...................
            // yoyo nahooya tak hard blyat?

            int count = binaryReader.ReadInt32();

            Debug.Assert(count == 12); // on PSP it should be 12.
            Events = new List <List <GMGMLEvent> >(count);
            long mprev_addr = binaryReader.BaseStream.Position;

            // Thanks to colinator27 for telling me how that works.
            for (int i = 0; i < count; i++)
            {
                uint e_addr    = binaryReader.ReadUInt32();
                long prev_addr = binaryReader.BaseStream.Position;
                binaryReader.BaseStream.Position = e_addr;
                int count2          = binaryReader.ReadInt32();
                List <GMGMLEvent> l = new List <GMGMLEvent>(count2);
                for (int j = 0; j < count2; j++)
                {
                    uint e_addr2    = binaryReader.ReadUInt32();
                    long prev_addr2 = binaryReader.BaseStream.Position;
                    binaryReader.BaseStream.Position = e_addr2;
                    int key = binaryReader.ReadInt32(); // subtype data????
                    var ev  = new GMGMLEvent(binaryReader);
                    ev.Key = key;
                    l.Add(ev);
                    binaryReader.BaseStream.Position = prev_addr2;
                }
                binaryReader.BaseStream.Position = prev_addr;
                Events.Add(l);
            }

            binaryReader.BaseStream.Position = mprev_addr;
        }
Exemplo n.º 3
0
        public GMRoomInstance(BinaryReader binaryReader, GMWAD w)
        {
            X = binaryReader.ReadInt32();
            Y = binaryReader.ReadInt32();
            //Object = binaryReader.ReadInt32();
            var obj_id = binaryReader.ReadInt32();

            if (obj_id > -1)
            {
                Object = w.Objects.Items[obj_id];
            }
            Id           = binaryReader.ReadInt32();
            CreationCode = new GMString(binaryReader);
        }
Exemplo n.º 4
0
        public int Id;         // tile id

        public GMRoomTile(BinaryReader binaryReader, GMWAD w)
        {
            X = binaryReader.ReadInt32();
            Y = binaryReader.ReadInt32();
            var bg_ind = binaryReader.ReadInt32();

            Background = null;
            if (bg_ind > -1)
            {
                Background = w.Backgrounds.Items[bg_ind];
            }
            XOffset = binaryReader.ReadInt32();
            YOffset = binaryReader.ReadInt32();
            Width   = binaryReader.ReadInt32();
            Height  = binaryReader.ReadInt32();
            Depth   = binaryReader.ReadInt32();
            Id      = binaryReader.ReadInt32();
        }
Exemplo n.º 5
0
        public GMRoomBackground(BinaryReader binaryReader, GMWAD w)
        {
            Visible    = ReadBool(binaryReader);
            Foreground = ReadBool(binaryReader);
            Background = null;
            var bg_ind = binaryReader.ReadInt32();

            if (bg_ind > -1)
            {
                Background = w.Backgrounds.Items[bg_ind];
            }
            X       = binaryReader.ReadInt32();
            Y       = binaryReader.ReadInt32();
            HTiled  = ReadBool(binaryReader);
            VTiled  = ReadBool(binaryReader);
            HSpeed  = binaryReader.ReadInt32();
            VSpeed  = binaryReader.ReadInt32();
            Stretch = ReadBool(binaryReader);
        }
Exemplo n.º 6
0
        public GMBackground(BinaryReader binaryReader, GMWAD w)
        {
            Name        = new GMString(binaryReader);
            Transparent = ReadBool(binaryReader);
            Smooth      = ReadBool(binaryReader);
            Preload     = ReadBool(binaryReader);
            uint tpag_addr = binaryReader.ReadUInt32();

            if (tpag_addr != 0)
            {
                long prev_addr = binaryReader.BaseStream.Position;
                binaryReader.BaseStream.Position = tpag_addr;
                Texture = new GMTPAGEntry(binaryReader, w);
                binaryReader.BaseStream.Position = prev_addr;
            }
            else
            {
                Texture = null;
            }
        }
Exemplo n.º 7
0
        public GMObject Object;         // GMObject index...???

        public GMRoomView(BinaryReader binaryReader, GMWAD w)
        {
            Visible       = ReadBool(binaryReader);
            ViewCoords    = new int[4];
            ViewCoords[0] = binaryReader.ReadInt32();
            ViewCoords[1] = binaryReader.ReadInt32();
            ViewCoords[2] = binaryReader.ReadInt32();
            ViewCoords[3] = binaryReader.ReadInt32();
            PortCoords    = new int[4];
            PortCoords[0] = binaryReader.ReadInt32();
            PortCoords[1] = binaryReader.ReadInt32();
            PortCoords[2] = binaryReader.ReadInt32();
            PortCoords[3] = binaryReader.ReadInt32();
            HBorder       = binaryReader.ReadInt32();
            VBorder       = binaryReader.ReadInt32();
            HSpeed        = binaryReader.ReadInt32();
            VSpeed        = binaryReader.ReadInt32();
            var obj_ind = binaryReader.ReadInt32();

            if (obj_ind > -1)
            {
                Object = w.Objects.Items[obj_ind];
            }
        }
Exemplo n.º 8
0
 public GMBackgrounds(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g)
 {
     CheckHeader("BGND");
     FixChunkAddr(binaryReader);
 }
Exemplo n.º 9
0
 public GMFonts(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g)
 {
     CheckHeader("FONT");
     FixChunkAddr(binaryReader);
 }
Exemplo n.º 10
0
        public GMRoom(BinaryReader binaryReader, GMWAD ww)
        {
            Name         = new GMString(binaryReader);
            Caption      = new GMString(binaryReader);
            Width        = binaryReader.ReadInt32();
            Height       = binaryReader.ReadInt32();
            Speed        = binaryReader.ReadInt32();
            Persistent   = ReadBool(binaryReader);
            Color        = new GMColor(binaryReader.ReadUInt32());
            ShowColor    = ReadBool(binaryReader);
            CreationCode = new GMString(binaryReader);
            EnableViews  = ReadBool(binaryReader);

            var bg_ptr       = binaryReader.ReadUInt32();
            var bg_prev_addr = binaryReader.BaseStream.Position;

            binaryReader.BaseStream.Position = bg_ptr;
            //Read backgrounds here
            var bg_count = binaryReader.ReadInt32();

            Backgrounds = new List <GMRoomBackground>(bg_count);
            for (int bg = 0; bg < bg_count; bg++)
            {
                var bg_bg_ptr       = binaryReader.ReadUInt32();
                var bg_bg_prev_addr = binaryReader.BaseStream.Position;
                binaryReader.BaseStream.Position = bg_bg_ptr;
                Backgrounds.Add(new GMRoomBackground(binaryReader, ww));
                binaryReader.BaseStream.Position = bg_bg_prev_addr;
            }
            binaryReader.BaseStream.Position = bg_prev_addr;

            var vi_ptr       = binaryReader.ReadUInt32();
            var vi_prev_addr = binaryReader.BaseStream.Position;

            binaryReader.BaseStream.Position = vi_ptr;
            //Read Views here
            var vi_count = binaryReader.ReadInt32();

            Views = new List <GMRoomView>(vi_count);
            for (int vi = 0; vi < vi_count; vi++)
            {
                var vi_vi_ptr       = binaryReader.ReadUInt32();
                var vi_vi_prev_addr = binaryReader.BaseStream.Position;
                binaryReader.BaseStream.Position = vi_vi_ptr;
                Views.Add(new GMRoomView(binaryReader, ww));
                binaryReader.BaseStream.Position = vi_vi_prev_addr;
            }
            binaryReader.BaseStream.Position = vi_prev_addr;

            var in_ptr       = binaryReader.ReadUInt32();
            var in_prev_addr = binaryReader.BaseStream.Position;

            binaryReader.BaseStream.Position = in_ptr;
            //Read Room Instances here
            var in_count = binaryReader.ReadInt32();

            Instances = new List <GMRoomInstance>(in_count);
            for (int ins = 0; ins < in_count; ins++)
            {
                var in_in_ptr       = binaryReader.ReadUInt32();
                var in_in_prev_addr = binaryReader.BaseStream.Position;
                binaryReader.BaseStream.Position = in_in_ptr;
                Instances.Add(new GMRoomInstance(binaryReader, ww));
                binaryReader.BaseStream.Position = in_in_prev_addr;
            }
            binaryReader.BaseStream.Position = in_prev_addr;

            var ti_ptr       = binaryReader.ReadUInt32();
            var ti_prev_addr = binaryReader.BaseStream.Position;

            binaryReader.BaseStream.Position = ti_ptr;
            //Read Room Tiles here
            var ti_count = binaryReader.ReadInt32();

            Tiles = new List <GMRoomTile>(ti_count);
            for (int ti = 0; ti < ti_count; ti++)
            {
                var ti_ti_ptr       = binaryReader.ReadUInt32();
                var ti_ti_prev_addr = binaryReader.BaseStream.Position;
                binaryReader.BaseStream.Position = ti_ti_ptr;
                Tiles.Add(new GMRoomTile(binaryReader, ww));
                binaryReader.BaseStream.Position = ti_ti_prev_addr;
            }
            binaryReader.BaseStream.Position = ti_prev_addr;
        }
Exemplo n.º 11
0
 public GMObjects(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g)
 {
     CheckHeader("OBJT");
     FixChunkAddr(binaryReader);
 }
Exemplo n.º 12
0
 public GMRooms(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g)
 {
     CheckHeader("ROOM");
     FixChunkAddr(binaryReader);
 }