class GBTiles::GBR::Import::GBRFile

Attributes

tile_set[RW]
version[RW]

Public Class Methods

new() click to toggle source
# File lib/gbtiles/gbr/import/gbr_file.rb, line 26
def initialize
  @tile_set = GBTiles::GBR::TileSet::TileSet.new
end
open(file) click to toggle source
# File lib/gbtiles/gbr/import/gbr_file.rb, line 30
def self.open file
  import = GBTiles::GBR::Import::GBRFile.new

  # Check to see if this is a valid file type
  if (file.read(3) != "GBO") then
    raise IOError, "Not a valid file (expected: GBO)"
  end

  # Version number
  import.version = file.read(1)

  # For each object
  while !file.eof?
    object_type = GBTiles::DataType.word(file.read(2))
    object_id   = GBTiles::DataType.word(file.read(2))
    object_len  = GBTiles::DataType.long(file.read(4))
    object_data = file.read(object_len)

    case GBTiles::GBR::TileSet::OBJECT_TYPE.key(object_type)
    when :producer
      object = GBTiles::GBR::TileSet::Objects::Producer.initFromBitString(object_data)

    when :tile_data
      object = GBTiles::GBR::TileSet::Objects::TileData.initFromBitString(object_data)

    when :tile_settings
      object = GBTiles::GBR::TileSet::Objects::TileSettings.initFromBitString(object_data)

    when :tile_export
      object = GBTiles::GBR::TileSet::Objects::TileExport.initFromBitString(object_data)

    when :tile_import
      object = GBTiles::GBR::TileSet::Objects::TileImport.initFromBitString(object_data)

    when :palettes
      object = GBTiles::GBR::TileSet::Objects::Palettes.initFromBitString(object_data)

    when :tile_pal
      object = GBTiles::GBR::TileSet::Objects::TilePal.initFromBitString(object_data)

    else
      object = GBTiles::GBR::TileSet::Objects::Unknown.new object_type
      object.object_data = object_data

    end

    object.object_id = object_id

    import.tile_set.objects << object
  end

  import
end