Class: Oolite::Market

Inherits:
Object
  • Object
show all
Defined in:
lib/oolite/market.rb

Instance Method Summary collapse

Constructor Details

#initializeMarket

Returns a new instance of Market.



15
16
17
18
19
20
21
22
# File 'lib/oolite/market.rb', line 15

def initialize
  Oolite.configure do |config|
    @save_file_path = Pathname(config.save_file_path)
    path = @save_file_path.dirname
    @market_data_path = path + (Pathname(config.market_data_filename).to_s + '.yml')
    @market_data_csv = path + (Pathname(config.market_data_filename).to_s + '.csv')
  end
end

Instance Method Details

#update(filename = nil) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/oolite/market.rb', line 24

def update filename = nil
  filename ||= @save_file_path

  savefile = SaveFile.new filename

  add_credits_to_config savefile.credits
  add_cargo_to_config savefile.cargo

  system_name = savefile.current_system_name
  add_system_to_config system_name
  puts "Updating data for #{system_name} system"

  data[system_name] = savefile.local_market_data

  write_data_file
end

#upgradeObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/oolite/market.rb', line 41

def upgrade
  mf = MarketFile.new
  old_data = mf.data

  old_data.each do |key, d|
    updated_hash = Hash.new
    d.each do |item, price|
      if price.class == Hash
        updated_hash[item] = price
      else
        updated_hash[item] = { price: price, amount: 0 }
      end
    end

    data[key] = updated_hash
  end

  write_data_file
end

#upgrade_priceObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/oolite/market.rb', line 61

def upgrade_price
  mf = MarketFile.new
  old_data = mf.data

  old_data.each do |key, d|
    updated_hash = Hash.new
    d.each do |item, info|
      updated_hash[item] = { price: (info[:price] * 10).to_i, amount: info[:amount] }
    end

    data[key] = updated_hash
  end

  write_data_file
end

#write_csv(filename = nil) ⇒ Object



77
78
79
80
81
82
83
84
# File 'lib/oolite/market.rb', line 77

def write_csv filename = nil
  filename ||= @market_data_csv
  csv_doc = CSVDoc.new
  format_data csv_doc
  csv_doc.write filename

  puts "CSV file written to #{filename}"
end