Class: Mastermind::SaveGame
- Inherits:
-
Object
- Object
- Mastermind::SaveGame
- Defined in:
- lib/mastermind/extensions/savegame.rb
Constant Summary collapse
- SAVE_GAME_FILE =
'game_file.yml'
Instance Attribute Summary collapse
-
#datastore ⇒ Object
readonly
Returns the value of attribute datastore.
-
#game_file ⇒ Object
readonly
Returns the value of attribute game_file.
-
#saved_record ⇒ Object
readonly
Returns the value of attribute saved_record.
Instance Method Summary collapse
- #fetch_all_records ⇒ Object
- #fetch_player(player_name) ⇒ Object
- #fetch_record(user_name) ⇒ Object
-
#initialize(datastore: Datastore::YmlStore.instance, game_file: SAVE_GAME_FILE) ⇒ SaveGame
constructor
A new instance of SaveGame.
- #load_records ⇒ Object
- #remove_data_from_save_record(record) ⇒ Object
- #save ⇒ Object
- #save_record(player) ⇒ Object
- #set_player_attr(record) ⇒ Object
Constructor Details
#initialize(datastore: Datastore::YmlStore.instance, game_file: SAVE_GAME_FILE) ⇒ SaveGame
Returns a new instance of SaveGame.
5 6 7 8 9 10 11 |
# 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 |
Instance Attribute Details
#datastore ⇒ Object (readonly)
Returns the value of attribute datastore.
3 4 5 |
# File 'lib/mastermind/extensions/savegame.rb', line 3 def datastore @datastore end |
#game_file ⇒ Object (readonly)
Returns the value of attribute game_file.
3 4 5 |
# File 'lib/mastermind/extensions/savegame.rb', line 3 def game_file @game_file end |
#saved_record ⇒ Object (readonly)
Returns the value of attribute saved_record.
3 4 5 |
# File 'lib/mastermind/extensions/savegame.rb', line 3 def saved_record @saved_record end |
Instance Method Details
#fetch_all_records ⇒ Object
31 32 33 34 |
# 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) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# 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) ⇒ Object
65 66 67 |
# File 'lib/mastermind/extensions/savegame.rb', line 65 def fetch_record(user_name) end |
#load_records ⇒ Object
13 14 15 16 17 |
# 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) ⇒ Object
56 57 58 59 |
# File 'lib/mastermind/extensions/savegame.rb', line 56 def remove_data_from_save_record(record) @save_record.delete(record) save end |
#save ⇒ Object
61 62 63 |
# File 'lib/mastermind/extensions/savegame.rb', line 61 def save @datastore.save(@game_file, @save_record) end |
#save_record(player) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# 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) ⇒ Object
48 49 50 51 52 53 54 |
# 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 |