LifePex/src/models/achievement.rb

39 lines
996 B
Ruby

class LifePex::Achievement < Sequel::Model(LifePex::DB[:achievements])
include LifePex::AchievementDSL::Success::Setup::Medal
many_to_one :user
# def validate
# super
# end
def parameters
JSON.parse(parameters_json)
end
def parameters=(parameters_hash)
self.parameters_json = parameters_hash.to_json
end
def set_dsl_setup(setup)
self.set(
name: setup.name,
success_name: setup.success.name,
parameters_json: setup.parameters.to_json,
icon: setup.icon,
)
end
# FIXME: use a singleton instead of an include
AVAILABLE_SUCCESS = LifePex::AchievementDSL::Includer::SUCCESS_INDEX.keys
def to_dsl_setup
current = self
current_parameters = self.parameters()
LifePex::AchievementDSL::Includer::SUCCESS_INDEX[current[:success_name]].setup(current[:name], to: current[:user_id]) do
icon current[:icon].to_s
current_parameters.each do |name, value|
parameter name => value
end
end
end
end