class Table
Constants
- MAX_ROW_LENGTH
Public Class Methods
_load(bytes)
click to toggle source
# File lib/RGSS.rb, line 69 def self._load(bytes) Table.new(bytes) end
new(bytes)
click to toggle source
# File lib/RGSS.rb, line 24 def initialize(bytes) @dim, @x, @y, @z, items, *@data = bytes.unpack('L5 S*') raise "Size mismatch loading Table from data" unless items == @data.length raise "Size mismatch loading Table from data" unless @x * @y * @z == items end
Public Instance Methods
_dump(*ignored)
click to toggle source
# File lib/RGSS.rb, line 65 def _dump(*ignored) return [@dim, @x, @y, @z, @x * @y * @z, *@data].pack('L5 S*') end
encode_with(coder)
click to toggle source
# File lib/RGSS.rb, line 32 def encode_with(coder) coder.style = Psych::Nodes::Mapping::BLOCK coder['dim'] = @dim coder['x'] = @x coder['y'] = @y coder['z'] = @z if @x * @y * @z > 0 stride = @x < 2 ? (@y < 2 ? @z : @y) : @x rows = @data.each_slice(stride).to_a if MAX_ROW_LENGTH != -1 && stride > MAX_ROW_LENGTH block_length = (stride + MAX_ROW_LENGTH - 1) / MAX_ROW_LENGTH row_length = (stride + block_length - 1) / block_length rows = rows.collect{|x| x.each_slice(row_length).to_a}.flatten(1) end rows = rows.collect{|x| x.collect{|y| "%04x" % y}.join(" ")} coder['data'] = rows else coder['data'] = [] end end
init_with(coder)
click to toggle source
# File lib/RGSS.rb, line 55 def init_with(coder) @dim = coder['dim'] @x = coder['x'] @y = coder['y'] @z = coder['z'] @data = coder['data'].collect{|x| x.split(" ").collect{|y| y.hex}}.flatten items = @x * @y * @z raise "Size mismatch loading Table from YAML" unless items == @data.length end