Sha256: 49fd6f3dd0ce8ef0f69be477b4a667720fc6c1402f5cffb08931ca6740583457

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

# The class whose instances represent an individual game system (e.g. Sega Genesis object) 
class RomLoader::GameSystem
  
  attr_accessor :name, :rom_index_url
  attr_writer :rom_indices

  @@all = []
  
  # Create individual game system objects from information scraped from http://freeroms.com, sets all instance variables
  def initialize(name:, rom_index_url:)
    @name = name
    @rom_index_url = rom_index_url
    @rom_indices = {}
    @roms = {}
    @@all << self
  end

  # Creates multiple GameSystem objects from information scraped from http://freeroms.com
  def self.create_from_collection(system_array)
    system_array.each { |system_details| self.new(system_details)}
    nil
  end

  # Retrieves an array of all GameSystem objects
  def self.all
    @@all    
  end

  # Retrieves an array of all GameRom objects starting which the provided letter index (e.g. [Sonic the Hedgehog, Streets of Rage,...])
  def get_roms_by_letter(letter_index)
    @roms[letter_index]
  end

  # Retrieves an array of the indicies for the roms (i.e. ["A","B","C"...])
  def get_rom_indices
    @rom_indices.keys
  end

  # Retrieves the url for roms of a particular letter index (e.g. "A" => "http://freeroms.com/genesis_games_that_start_with_a.html")
  def get_rom_collection_url(letter_index)
    @rom_indices[letter_index]
  end

  # Add the game collection scraped from http://freeroms.com to the GameSystem object to the roms (Hash)
  def add_roms_to_collection_by_letter(letter_index, game_obj_array)

    game_obj_array.each { |game| game.system = self }
    @roms[letter_index] = game_obj_array
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
romloader-1.0.0 lib/romloader/game_system.rb