app/assets/javascripts/blocks/events.js.coffee.erb
# 「イベント」ジャンル
<%
category = 'events'
require 'smalruby_editor'
require 'smalruby_editor/blockly_message_helper'
color = SmalrubyEditor::COLORS[category.to_sym]
%>
# 実行ボタンがクリックされたとき
<% n = "#{category}_on_start" %>
Blockly.Blocks['<%= n %>'] =
init: ()->
@setHelpUrl('')
@setColour(<%= color %>)
@appendDummyInput()
.appendField(<%= bm('.on_start') %>)
@appendStatementInput('DO')
@setPreviousStatement(true)
@setNextStatement(true)
@setTooltip('')
Blockly.Ruby['<%= n %>'] = (block) ->
Blockly.Ruby.characterEvent_(block, 'DO', 'start')
# キーボードの[▼キー]が[▼押された/押され続けている]とき
<% n = "#{category}_on_key_push_or_down" %>
Blockly.Blocks['<%= n %>'] =
init: ()->
keyDropdown = window.SmalrubyEditor.Sensing.KeyDropdown
podDropdown = window.SmalrubyEditor.Sensing.PushOrDownDropdown
@setHelpUrl('')
@setColour(<%= color %>)
@interpolateMsg(<%= bm('.on_key_push_or_down') %>,
['KEY', new Blockly.FieldDropdown(keyDropdown)],
['POD', new Blockly.FieldDropdown(podDropdown)],
Blockly.ALIGN_RIGHT)
@appendStatementInput('DO')
@setPreviousStatement(true)
@setNextStatement(true)
@setTooltip('')
Blockly.Ruby['<%= n %>'] = (block) ->
key = @getFieldValue('KEY')
pod = @getFieldValue('POD')
Blockly.Ruby.characterEvent_(block, 'DO', "key_#{pod}", key)
# キャラクターがクリックされたとき
<% n = "#{category}_on_click" %>
Blockly.Blocks['<%= n %>'] =
init: ()->
@setHelpUrl('')
@setColour(<%= color %>)
@appendDummyInput()
.appendField(<%= bm('.on_click') %>)
@appendStatementInput('DO')
@setPreviousStatement(true)
@setNextStatement(true)
@setTooltip('')
Blockly.Ruby['<%= n %>'] = (block) ->
Blockly.Ruby.characterEvent_(block, 'DO', 'click')
# [▼キャラクター]にぶつかったとき
<% n = "#{category}_on_hit" %>
Blockly.Blocks['<%= n %>'] =
init: ()->
@setHelpUrl('')
@setColour(<%= color %>)
@interpolateMsg(<%= bm('.on_hit') %>,
['CHAR', new Smalruby.FieldCharacter()],
Blockly.ALIGN_RIGHT)
@appendStatementInput('DO')
@setPreviousStatement(true)
@setNextStatement(true)
@setTooltip('')
Blockly.Ruby['<%= n %>'] = (block) ->
char = @getCharacterFieldValue()
Blockly.Ruby.characterEvent_(block, 'DO', 'hit', char)