module RBStarbound::SBAsset6
Attributes
file_count[R]
index[R]
index_offset[R]
metadata[R]
metadata_offset[R]
verbose[RW]
Public Class Methods
get(path)
click to toggle source
# File lib/rbstarbound/sbasset6.rb, line 14 def self.get(path) raise SBAsset6Error, 'No package file given' if @package.nil? offset, length = @index[path] rewind_to(offset) @package.read(length) end
meta_header()
click to toggle source
# File lib/rbstarbound/sbasset6.rb, line 52 def self.meta_header @package.read(5) end
package(io)
click to toggle source
# File lib/rbstarbound/sbasset6.rb, line 7 def self.package(io) @package = io raise SBAsset6Error, 'No package file given' if @package.nil? read_header read_index end
Private Class Methods
read_header()
click to toggle source
# File lib/rbstarbound/sbasset6.rb, line 21 def self.read_header rewind_to(0) header, @metadata_offset = @package.read(16).unpack('A8Q>') raise SBAsset6Error, 'Invalid header' unless header == 'SBAsset6' read_metadata end
read_index()
click to toggle source
# File lib/rbstarbound/sbasset6.rb, line 28 def self.read_index puts 'Loading index...' if @verbose rewind_to(@index_offset) @index = {} @file_count.times do path = RBStarbound::SBON.read_string(@package) offset, length = @package.read(16).unpack('Q>Q>') @index[path] = [offset, length] end puts 'Index loaded.' if @verbose end
read_metadata()
click to toggle source
# File lib/rbstarbound/sbasset6.rb, line 40 def self.read_metadata rewind_to(@metadata_offset) raise SBAsset6Error, 'Invalid index data' unless meta_header == 'INDEX' @metadata = RBStarbound::SBON.read_map(@package) @file_count = RBStarbound::SBON.read_varint(@package) @index_offset = @package.pos end
rewind_to(pos)
click to toggle source
# File lib/rbstarbound/sbasset6.rb, line 48 def self.rewind_to(pos) @package.seek(pos, IO::SEEK_SET) end