51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import Blockly from "blockly/core";
 | 
						|
import { getColour } from "../helpers/colour";
 | 
						|
import { getCompatibleTypes } from "../helpers/types";
 | 
						|
 | 
						|
Blockly.Blocks["variables_set_dynamic"] = {
 | 
						|
  init: function () {
 | 
						|
    // const type = myVar.type;
 | 
						|
    this.setColour(getColour().variables);
 | 
						|
    this.setPreviousStatement(true, null);
 | 
						|
    this.setNextStatement(true, null);
 | 
						|
    this.appendValueInput("VALUE")
 | 
						|
      .appendField("set", "set")
 | 
						|
      .appendField("", "type")
 | 
						|
      .appendField(new Blockly.FieldVariable("VAR"), "VAR")
 | 
						|
      .appendField("to");
 | 
						|
  },
 | 
						|
  onchange: function (e) {
 | 
						|
    let variableID = this.getFieldValue("VAR");
 | 
						|
    let variable = Blockly.getMainWorkspace()
 | 
						|
      .getVariableMap()
 | 
						|
      .getVariableById(variableID);
 | 
						|
    if (variable !== null) {
 | 
						|
      this.getField("type").setValue(variable.type);
 | 
						|
      this.getInput("VALUE").setCheck(getCompatibleTypes(variable.type));
 | 
						|
    }
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
Blockly.Blocks["variables_get_dynamic"] = {
 | 
						|
  init: function () {
 | 
						|
    this.setColour(getColour().variables);
 | 
						|
    this.appendDummyInput()
 | 
						|
      .appendField("", "type")
 | 
						|
      .appendField(new Blockly.FieldVariable("VAR"), "VAR");
 | 
						|
    this.setOutput(true);
 | 
						|
  },
 | 
						|
  onchange: function (e) {
 | 
						|
    let variableID = this.getFieldValue("VAR");
 | 
						|
    let variable = Blockly.getMainWorkspace()
 | 
						|
      .getVariableMap()
 | 
						|
      .getVariableById(variableID);
 | 
						|
    if (variable !== null) {
 | 
						|
      this.getField("type").setValue(variable.type);
 | 
						|
    }
 | 
						|
  },
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * new comment
 | 
						|
 */
 |