39 lines
996 B
Ruby
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
|