class Smalruby3::World

Attributes

s2dx[R]
sprites[RW]
stage[RW]

Public Class Methods

new() click to toggle source
# File lib/smalruby3/world.rb, line 13
def initialize
  reset
  @s2dx = SmalrubyToDXRuby.new
end

Public Instance Methods

add_target(stage_or_sprite) click to toggle source
# File lib/smalruby3/world.rb, line 18
def add_target(stage_or_sprite)
  if stage_or_sprite.stage?
    stage = stage_or_sprite
    if @stage
      raise ExistStage.new(stage)
    end
    @stage = stage
  else
    sprite = stage_or_sprite
    if @name_to_sprite.key?(sprite.name)
      raise ExistSprite.new(sprite)
    end
    @sprites << sprite
    @name_to_sprite[sprite.name] = sprite
  end
  stage_or_sprite
end
asset_path(asset_id, data_format) click to toggle source
# File lib/smalruby3/world.rb, line 59
def asset_path(asset_id, data_format)
  if data_format == "svg"
    data_format = "png"
  end
  md5 = "#{asset_id}.#{data_format}"

  program_path = Pathname($PROGRAM_NAME).expand_path(Dir.pwd)
  paths = [
    Pathname("../#{md5}").expand_path(program_path),
    Pathname("../__assets__/#{md5}").expand_path(program_path),
    Pathname("../../../assets/#{md5}").expand_path(__FILE__),
  ]
  paths.find(&:file?).to_s
end
delete_target(stage_or_sprite) click to toggle source
# File lib/smalruby3/world.rb, line 36
def delete_target(stage_or_sprite)
  if stage_or_sprite.stage?
    @stage = nil
  else
    sprite = stage_or_sprite
    @sprites.delete(sprite)
    @name_to_sprite.delete(sprite.name)
  end
  stage_or_sprite
end
reset() click to toggle source
# File lib/smalruby3/world.rb, line 55
def reset
  clear_sprites
end
sprite(name) click to toggle source
# File lib/smalruby3/world.rb, line 47
def sprite(name)
  @name_to_sprite[name]
end
targets() click to toggle source
# File lib/smalruby3/world.rb, line 51
def targets
  [@stage, *@sprites].compact
end

Private Instance Methods

clear_sprites() click to toggle source
# File lib/smalruby3/world.rb, line 76
def clear_sprites
  @stage = nil
  @sprites = []
  @name_to_sprite = {}
end