X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fspeech_balloon_template.rb;h=a6c6f75aaad7106048ef44b17e74845aab0d3e1b;hb=d8b50c09ff9034a9abd9cf10ae839e0402df0e7c;hp=9c27ec58c342673482770baf4117c74a2ef00fb6;hpb=3246f9ab4572b91f91a40022a725058f4c557307;p=pettanr%2Fpettanr.git diff --git a/app/models/speech_balloon_template.rb b/app/models/speech_balloon_template.rb index 9c27ec58..a6c6f75a 100644 --- a/app/models/speech_balloon_template.rb +++ b/app/models/speech_balloon_template.rb @@ -1,11 +1,13 @@ #フキダシテンプレート class SpeechBalloonTemplate < ActiveRecord::Base has_many :speech_balloons + belongs_to :system_picture validates :name, :presence => true, :uniqueness => true, :length => {:maximum => 50} validates :classname, :presence => true, :length => {:maximum => 50} validates :caption, :presence => true, :length => {:maximum => 30} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} + validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false} validates :settings, :presence => true before_validation :valid_encode @@ -28,6 +30,10 @@ class SpeechBalloonTemplate < ActiveRecord::Base true end + def symbol_option + self.system_picture.tmb_opt_img_tag + end + def self.list opt = {} opt.merge!(self.list_opt) @@ -35,6 +41,12 @@ class SpeechBalloonTemplate < ActiveRecord::Base SpeechBalloonTemplate.find(:all, opt) end + def self.enable_list + SpeechBalloonTemplate.list.delete_if {|sbt| + Pettanr::Application.speech_balloons[sbt.classname] == nil + } + end + def self.list_opt {} end @@ -61,16 +73,67 @@ class SpeechBalloonTemplate < ActiveRecord::Base def self.store name, attr #settingsにはHashデータが丸っと文字列化されて入る - r = SpeechBalloonTemplate.replace_system_picture(attr["settings"] || {}) - attr["settings"] = r ? r.to_json : nil + r = SpeechBalloonTemplate.replace_system_picture(attr || {}) + attr["settings"] = r["settings"] ? r["settings"].to_json : nil r = SpeechBalloonTemplate.modify_object name, attr r.overwrite r.save r end + def parsed_settings + @template_settings ||= JSON.parse(self.settings) + end + + def engine_name + Pettanr::Application.speech_balloons[self.classname] + end + + def engine_module_name + self.engine_name.camelize + end + + def engine + Object.const_get self.engine_module_name + end + + def engine_speech_balloon_model + engine.const_get 'SpeechBalloon' + end + + def engine_speech_balloon_module + engine.const_get 'SpeechBalloonModule' + end + + def engine_balloon_model + engine.const_get 'Balloon' + end + + def engine_balloon_module + engine.const_get 'BalloonModule' + end + + def engine_speech_model + engine.const_get 'Speech' + end + + def engine_speech_module + engine.const_get 'SpeechModule' + end + def self.import filename SpeechBalloonTemplate.import_file(filename) {|name, attr| SpeechBalloonTemplate.store(name, attr)} end + def self.disp_import_error r + if r == false + puts "json file error. file does not exist or broken" + else + unless r.empty? + r.each do |sbt| + put sbt.errors.full_messages + end + end + end + end end