Sha256: 3af98da1ee928ddc8a470c628935294ebe39666e2745c7a222e601e5430f3bae

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

class MWO::Mech < OpenStruct
  extend MWO::Utils

  def self.all_raw(overrides: {})
    client = MWO::Client.new(overrides: {})
    fetch(client.mechs_url)
  end

  def self.all

    mechs = []
    all_raw["Mechs"].each do |name, attrs|

      # Remove the loadout from the index.
      attrs.delete('Loadout')

      # The mech classification value is broken in the API
      attrs.delete('Class')
      attrs["WeightClass"] = case attrs['MaxTons']
      when 0..35
        'Light'
      when 36..55
        'Medium'
      when 56..75
        'Heavy'
      when 76..100
        'Assault'
      when 101.300
        'Experimental'
      end

      # Remove the 'class' attribute, it is bugged from the API
      attrs.delete('Loadout')

      mech = {}
      attrs.each do |k,v|
        mech[to_symbol(k)] = v
      end

      # set override the invalid classification
      mechs << new(mech)
    end

    return mechs.extend MWO::CollectionUtils
  end

  def self.lights
    all.filter({weight_class: 'Light'})
  end

  def self.mediums
    all.filter({weight_class: 'Medium'})
  end

  def self.heavies
    all.filter({weight_class: 'Heavy'})
  end

  def self.assaults
    all.filter({weight_class: 'Assault'})
  end

  def self.dictionary
    client = MWO::Client.new(overrides: {})
    raw = fetch(client.mech_ids_url)
    raw["Mechs"]
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mwo-1.0.0 lib/mwo/mech.rb
mwo-0.1.2 lib/mwo/mech.rb