+ pick: (item) ->\r
+ @listenTo(this, 'ready', @ready)\r
+ if item.item_name() == @target_model.item_name()\r
+ # Inspire\r
+ new_item = new @target_model(item.attributes)\r
+ @trigger('ready', new_item)\r
+ else if @target_model.is_traceable(item.item_name())\r
+ # Trace\r
+ n = @target_model['trace_from_' + item.item_name()]\r
+ n()\r
+ else if item.item_name() == @target_model.pick_item_name()\r
+ # Pick\r
+ speech_balloon_template = item\r
+ writing_format = new Pettanr.WritingFormat({id: 1})\r
+ writing_format.fetch({cache: true}).done =>\r
+ templates = {\r
+ speech_balloon_template: speech_balloon_template,\r
+ writing_format: writing_format\r
+ }\r
+ new_item = new @target_model()\r
+ new_item.set(new_item.pick(templates), {silent: true})\r
+ new_item.boosts 'post'\r
+ new_item.supply_default(templates)\r
+ # prepare balloon\r
+ balloon = new Pettanr.Balloon()\r
+ balloon.set(balloon.pick(templates), {silent: true})\r
+ balloon.boosts 'post'\r
+ balloon.supply_default(templates)\r
+ # prepare speech\r
+ speech = new Pettanr.Speech()\r
+ speech.set(speech.pick(templates), {silent: true})\r
+ speech.boosts 'post'\r
+ speech.supply_default(templates)\r
+ # join elements\r
+ new_item.set({balloon: balloon, speech: speech}, {silent: true})\r
+ @trigger('ready', new_item)\r
+ \r
+ ready: (new_item) ->\r
+ @dialog().stop()\r
+ @trigger('pick', new_item)\r
+ \r