Method: Reight::Map.restore

Defined in:
lib/reight/map.rb

.restore(hash, source_chips) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/reight/map.rb', line 107

def self.restore(hash, source_chips)
  chip_size, chunk_size, chunks = hash.values_at :chip_size, :chunk_size, :chunks
  #hash => {chip_size:, chunk_size:, chunks:}
  new(chip_size: chip_size, chunk_size: chunk_size).tap do |obj|
    obj.instance_eval do
      @chunks = chunks.each.with_object({}) do |chunk_hash, result|
        x, y = chunk_hash.values_at :x, :y
        #chunk_hash => {x:, y:}
        result[[x, y]] = Chunk.restore chunk_hash, source_chips
      end
    end
  end
end