class Player < ApplicationRecord
|
|
attribute :current_stage, :integer, default: 1
|
|
attribute :extra_lives_stage, :integer, default: 0
|
|
attribute :progress, :json, default: {}
|
|
attribute :is_done, :boolean, default: false
|
|
|
|
scope :playing, -> { where(is_done: false) }
|
|
scope :done, -> { where(is_done: true) }
|
|
|
|
|
|
def is_playing?
|
|
!self.is_done?
|
|
end
|
|
|
|
|
|
def reset_when_game_over
|
|
self.progress = {}
|
|
self.current_stage = 1
|
|
self.save
|
|
end
|
|
|
|
# stage_index: 1, 2, 3...
|
|
# outcome: 'chance' or 'choice'
|
|
def record_flip(stage_index, outcome)
|
|
self.progress[stage_index.to_s] ||= {}
|
|
self.progress[stage_index.to_s]["flip"] = outcome
|
|
save
|
|
end
|
|
|
|
|
|
|
|
# stage_index: 1, 2, 3...
|
|
# result: 'good', 'bad', 'game_over'
|
|
def record_pick_result(stage_index, result)
|
|
self.progress[stage_index.to_s] ||= {}
|
|
self.progress[stage_index.to_s]["result"] = result
|
|
save
|
|
end
|
|
|
|
|
|
end
|