smalruby/smalruby-editor

View on GitHub
app/assets/javascripts/blocks/events.js.coffee.erb

Summary

Maintainability
Test Coverage
# 「イベント」ジャンル

<%
  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)