class Mastermind::SaveGame

Constants

SAVE_GAME_FILE

Attributes

datastore[R]
game_file[R]
saved_record[R]

Public Class Methods

new(datastore: Datastore::YmlStore.instance, game_file: SAVE_GAME_FILE) click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 5
def initialize(datastore: Datastore::YmlStore.instance, game_file: SAVE_GAME_FILE)
  @datastore = datastore
  @game_file = game_file

  @datastore.filename=@game_file
  load_records
end

Public Instance Methods

fetch_all_records() click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 31
def fetch_all_records
 @save_record = @datastore.fetch_multiple_records @game_file
 @save_record
end
fetch_player(player_name) click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 36
def fetch_player(player_name)
  if player_name.is_a? Integer
    record = @save_record[player_name - 1]
  elsif player_name.is_a? String
    record = @save_record.select{ |record|
      record[:name].downcase == player_name.downcase
    }.first
  end
  return set_player_attr(record) if record
  false
end
fetch_record(user_name) click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 65
def fetch_record(user_name)

end
load_records() click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 13
def load_records
  @save_record = fetch_all_records || []
  @save_record.flatten!
  @save_record
end
remove_data_from_save_record(record) click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 56
def remove_data_from_save_record(record)
  @save_record.delete(record)
  save
end
save() click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 61
def save
  @datastore.save(@game_file, @save_record)
end
save_record(player) click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 19
def save_record(player)
  if player.is_a? Player
    player = player.to_h
  elsif player.is_a? Hash
    player
  else
    raise ArgumentError, 'Invalid player'
  end
  @datastore.save(@game_file, player, 'a+')
  load_records
end
set_player_attr(record) click to toggle source
# File lib/mastermind/extensions/savegame.rb, line 48
def set_player_attr(record)
  player = Player.new
  player.set_save_attr(record)

  remove_data_from_save_record(record)
  player
end