using System; using System.Collections.Generic; using System.Linq; namespace WebMrbc { public class SystemExitBlock : Block { public const string type_name = "system_exit"; public SystemExitBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("終了させます"); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemSetRunBlock : Block { public const string type_name = "system_setrun"; public SystemSetRunBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("次に実行するスクリプトファイルをセットします"); this.appendValueInput("FILENAME") .setCheck("String"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemVersionBlock : Block { public const string type_name = "system_version"; public SystemVersionBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("システムのバージョンを取得します"); this.setOutput(true, "String"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemPushBlock : Block { public const string type_name = "system_push"; public SystemPushBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("フラッシュメモリに書き込みます"); this.appendValueInput("ADDRESS") .setCheck("Number") .appendField("開始アドレス"); this.appendValueInput("DATA") .setCheck("String") .appendField("データ"); this.appendValueInput("LENGTH") .setCheck("Number") .appendField("サイズ"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemPopBlock : Block { public const string type_name = "system_pop"; public SystemPopBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("フラッシュメモリから読み出します"); this.appendValueInput("ADDRESS") .setCheck("Number") .appendField("開始アドレス"); this.appendValueInput("LENGTH") .setCheck("Number") .appendField("サイズ"); this.setInputsInline(true); this.setOutput(true, "String"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemFileLoadBlock : Block { public const string type_name = "system_fileload"; public SystemFileLoadBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("ファイルローダーを呼び出します"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemResetBlock : Block { public const string type_name = "system_reset"; public SystemResetBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("リセットします"); this.setInputsInline(true); this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemUseSdBlock : Block { public const string type_name = "system_use_sd"; public SystemUseSdBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("SDカードを使えるようにします"); this.setInputsInline(true); this.setOutput(true, "Boolean"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemUseWifiBlock : Block { public const string type_name = "system_use_wifi"; public SystemUseWifiBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("WiFiモジュールESP8266ボードを使えるようにします"); this.setInputsInline(true); this.setOutput(true, "Boolean"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } public class SystemGetMrbPathBlock : Block { public const string type_name = "system_get_mrb_path"; public SystemGetMrbPathBlock() : base(type_name) { } public void init() { this.appendDummyInput() .appendField("実行しているmrbファイルパスを取得します"); this.setInputsInline(true); this.setOutput(true, "String"); this.setColour(160); this.setTooltip(""); this.setHelpUrl("http://www.example.com/"); } } partial class Ruby { public node system_exit(SystemExitBlock block) { var c = new const_node(this, intern("System")); var p = new node[0]; return new call_node(this, c, intern("exit"), p, null); } public node system_setrun(SystemSetRunBlock block) { var value_filename = valueToCode(block, "FILENAME"); var c = new const_node(this, intern("System")); var p = new node[] { value_filename }; return new call_node(this, c, intern("setRun"), p, null); } public node system_version(SystemVersionBlock block) { var c = new const_node(this, intern("System")); var p = new node[0]; return new call_node(this, c, intern("version"), p, null); } public node system_push(SystemPushBlock block) { var value_address = valueToCode(block, "ADDRESS"); var value_data = valueToCode(block, "DATA"); var value_length = valueToCode(block, "LENGTH"); var c = new const_node(this, intern("System")); var p = new node[] { value_address, value_data, value_length }; return new call_node(this, c, intern("push"), p, null); } public node system_pop(SystemPopBlock block) { var value_address = valueToCode(block, "ADDRESS"); var value_length = valueToCode(block, "LENGTH"); var c = new const_node(this, intern("System")); var p = new node[] { value_address, value_length }; return new call_node(this, c, intern("pop"), p, null); } public node system_fileload(SystemFileLoadBlock block) { var c = new const_node(this, intern("System")); var p = new node[0]; return new call_node(this, c, intern("fileload"), p, null); } public node system_reset(SystemResetBlock block) { var c = new const_node(this, intern("System")); var p = new node[0]; return new call_node(this, c, intern("reset"), p, null); } public node system_use_sd(SystemUseSdBlock block) { var c = new const_node(this, intern("System")); var p = new node[0]; return new call_node(this, c, intern("useSD"), p, null); } public node system_use_wifi(SystemUseWifiBlock block) { var c = new const_node(this, intern("System")); var p = new node[0]; return new call_node(this, c, intern("useWiFi"), p, null); } public node system_get_mrb_path(SystemGetMrbPathBlock block) { var c = new const_node(this, intern("System")); var p = new node[0]; return new call_node(this, c, intern("getMrbPath"), p, null); } } }