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); } }
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; }
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); }
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(); }
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); }
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; } }
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]; } }
public GMBackgrounds(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g) { CheckHeader("BGND"); FixChunkAddr(binaryReader); }
public GMFonts(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g) { CheckHeader("FONT"); FixChunkAddr(binaryReader); }
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; }
public GMObjects(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g) { CheckHeader("OBJT"); FixChunkAddr(binaryReader); }
public GMRooms(BinaryReader binaryReader, GMWAD g) : base(binaryReader, g) { CheckHeader("ROOM"); FixChunkAddr(binaryReader); }