class DXRuby::Tiled::Tilesets

Attributes

tile_bottom[R]
tile_left[R]
tile_right[R]
tile_top[R]
tiles[R]

Public Class Methods

new(data, map) click to toggle source
# File lib/dxruby_tiled/tilesets.rb, line 6
def initialize(data, map)
  @last_time = 0
  @tiles = {}
  dummy_tile = Tile.new(DXRuby::Image.new(map.tile_width, map.tile_height), 0, 0, 0)
  def dummy_tile.render(x, y, target = DXRuby::Window, z_index = 0); end
  def dummy_tile.draw(x, y, target = DXRuby::Window, z_index = 0); end
  @tiles[0] = dummy_tile
  @tiles.default = dummy_tile
  
  @animations = []
  @tilesets = data.map { |tileset| Tileset.new(tileset, map) }
  hex = map.orientation == HexagonalLayer
  @tilesets.each do |tileset|
    gid = tileset.firstgid
    tileset.tiles.each_with_index do |tile, i|
      next unless tile
      @tiles[gid + i] = tile
      range = hex ? 1..15 : 1..7
      k     = hex ? 0x10000000 : 0x20000000
      range.each do |j|
        tileid = j * k + gid + i
        @tiles[tileid] = FlippedTile.new(tile, tileid, hex)
      end
    end
    tileset.animations.each { |i| @animations.push(gid + i) }
  end
  @tile_left   = @tiles.values.map { |tile| tile.offset_x }.min
  @tile_top    = @tiles.values.map { |tile| tile.offset_y }.min
  @tile_right  = @tiles.values.map { |tile| tile.offset_x + tile.width  }.max
  @tile_bottom = @tiles.values.map { |tile| tile.offset_y + tile.height }.max
end

Public Instance Methods

[](num) click to toggle source
# File lib/dxruby_tiled/tilesets.rb, line 38
def [](num)
  @tiles[num]
end
animate() click to toggle source
# File lib/dxruby_tiled/tilesets.rb, line 42
def animate()
  return if @last_time == DXRuby::Window::running_time
  @last_time = DXRuby::Window::running_time
  
  @animations.each { |i| @tiles[i].animate!(@last_time) }
end
delayed_dispose() click to toggle source
# File lib/dxruby_tiled/tilesets.rb, line 58
def delayed_dispose()
  @tilesets.each_value { |tileset| tileset.delayed_dispose() }
  @tiles[0].image.delayed_dispose()
end
dispose() click to toggle source
# File lib/dxruby_tiled/tilesets.rb, line 53
def dispose()
  @tilesets.each_value { |tileset| tileset.dispose() }
  @tiles[0].image.dispose()
end
disposed?() click to toggle source
# File lib/dxruby_tiled/tilesets.rb, line 63
def disposed?()
  @tiles[0].image.disposed?()
end
gid_adjusted_by_source(gid, source) click to toggle source
# File lib/dxruby_tiled/tilesets.rb, line 49
def gid_adjusted_by_source(gid, source)
  gid + @tilesets.find { |tileset| tileset.source == source }.firstgid - 1
end