mirror of
https://github.com/damp11113-software/ccIDE.git
synced 2025-04-27 14:38:12 +00:00
330 lines
13 KiB
JavaScript
330 lines
13 KiB
JavaScript
// this file not for generator only
|
|
|
|
const { luaGenerator } = require('blockly/lua');
|
|
|
|
// Check if luaGenerator.forBlock is defined and initialize if necessary
|
|
if (!luaGenerator.forBlock) {
|
|
luaGenerator.forBlock = {};
|
|
}
|
|
|
|
// generator for Electric Motor
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_set_speed'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
var speed = generator.valueToCode(block, 'RPM', generator.ORDER_ATOMIC);
|
|
|
|
return `${motor}.setSpeed(${speed})\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_stop'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
|
|
return `${motor}.stop()\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_rotate'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
var degrees = generator.valueToCode(block, 'DEGREES', generator.ORDER_ATOMIC);
|
|
var speed = generator.valueToCode(block, 'RPM', generator.ORDER_ATOMIC);
|
|
|
|
if (speed == "nil") {
|
|
return [`${motor}.rotate(${degrees})`, luaGenerator.ORDER_NONE];
|
|
} else {
|
|
return [`${motor}.rotate(${degrees}, ${speed})`, luaGenerator.ORDER_NONE];
|
|
}
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_translate'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
var tblock = generator.valueToCode(block, 'BLOCKS', generator.ORDER_ATOMIC);
|
|
var speed = generator.valueToCode(block, 'RPM', generator.ORDER_ATOMIC);
|
|
|
|
if (speed == "nil") {
|
|
return [`${motor}.translate(${tblock})`, luaGenerator.ORDER_NONE];
|
|
} else {
|
|
return [`${motor}.translate(${tblock}, ${speed})`, luaGenerator.ORDER_NONE];
|
|
}
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_get_speed'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${motor}.getSpeed()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_get_stress_capacity'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${motor}.getStressCapacity()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_get_energy_consumption'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${motor}.getEnergyConsumption()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_get_max_input'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${motor}.getMaxInsert()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_electric_motor_get_max_output'] = function(block, generator) {
|
|
var motor = generator.valueToCode(block, 'MOTOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${motor}.getMaxExtract()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// generator for Accumulator
|
|
|
|
luaGenerator.forBlock['create_addition_accumulator_get_energy'] = function(block, generator) {
|
|
var accumulator = generator.valueToCode(block, 'ACCUMULATOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${accumulator}.getEnergy()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_accumulator_get_capacity'] = function(block, generator) {
|
|
var accumulator = generator.valueToCode(block, 'ACCUMULATOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${accumulator}.getCapacity()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_accumulator_get_percent'] = function(block, generator) {
|
|
var accumulator = generator.valueToCode(block, 'ACCUMULATOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${accumulator}.getPercent()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_accumulator_get_max_input'] = function(block, generator) {
|
|
var accumulator = generator.valueToCode(block, 'ACCUMULATOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${accumulator}.getMaxInsert()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_accumulator_get_max_output'] = function(block, generator) {
|
|
var accumulator = generator.valueToCode(block, 'ACCUMULATOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${accumulator}.getMaxExtract()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_accumulator_get_height'] = function(block, generator) {
|
|
var accumulator = generator.valueToCode(block, 'ACCUMULATOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${accumulator}.getHeight()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_accumulator_get_width'] = function(block, generator) {
|
|
var accumulator = generator.valueToCode(block, 'ACCUMULATOR', generator.ORDER_ATOMIC);
|
|
|
|
return [`${accumulator}.getWidth()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// generator for Portable Energy Interface (PEI)
|
|
|
|
luaGenerator.forBlock['create_addition_pei_get_energy'] = function(block, generator) {
|
|
var pei = generator.valueToCode(block, 'PEI', generator.ORDER_ATOMIC);
|
|
|
|
return [`${pei}.getEnergy()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_pei_get_capacity'] = function(block, generator) {
|
|
var pei = generator.valueToCode(block, 'PEI', generator.ORDER_ATOMIC);
|
|
|
|
return [`${pei}.getCapacity()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_pei_is_connected'] = function(block, generator) {
|
|
var pei = generator.valueToCode(block, 'PEI', generator.ORDER_ATOMIC);
|
|
|
|
return [`${pei}.isConnected()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_pei_get_max_input'] = function(block, generator) {
|
|
var pei = generator.valueToCode(block, 'PEI', generator.ORDER_ATOMIC);
|
|
|
|
return [`${pei}.getMaxInsert()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_pei_get_max_output'] = function(block, generator) {
|
|
var pei = generator.valueToCode(block, 'PEI', generator.ORDER_ATOMIC);
|
|
|
|
return [`${pei}.getMaxExtract()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// generator for Redstone Relay
|
|
|
|
luaGenerator.forBlock['create_addition_relay_get_max_input'] = function(block, generator) {
|
|
var relay = generator.valueToCode(block, 'RELAY', generator.ORDER_ATOMIC);
|
|
|
|
return [`${relay}.getMaxInsert()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_relay_get_max_output'] = function(block, generator) {
|
|
var relay = generator.valueToCode(block, 'RELAY', generator.ORDER_ATOMIC);
|
|
|
|
return [`${relay}.getMaxExtract()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_relay_get_throughput'] = function(block, generator) {
|
|
var relay = generator.valueToCode(block, 'RELAY', generator.ORDER_ATOMIC);
|
|
|
|
return [`${relay}.getThroughput()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_relay_is_powered'] = function(block, generator) {
|
|
var relay = generator.valueToCode(block, 'RELAY', generator.ORDER_ATOMIC);
|
|
|
|
return [`${relay}.isPowered()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// Digital Adapter | Rotational Speed Controller
|
|
|
|
luaGenerator.forBlock['create_addition_da_rotational_speed_control_set_target_speed'] = function(block, generator) {
|
|
var speed = generator.valueToCode(block, 'RPM', generator.ORDER_ATOMIC);
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return `${adapter}.setTargetSpeed("${side}", ${speed})\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_rotational_speed_control_get_target_speed'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getTargetSpeed("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// Digital Adapter | Stressometer
|
|
|
|
luaGenerator.forBlock['create_addition_da_stressometer_get_kinetic_stress'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getKineticStress("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_stressometer_get_kinetic_capacity'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getKineticSpeed("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// Digital Adapter | Speedometer
|
|
|
|
luaGenerator.forBlock['create_addition_da_speedometer_get_kinetic_speed'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getKineticSpeed("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_speedometer_get_kinetic_max_speed'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
|
|
return [`${adapter}.getKineticTopSpeed()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// Digital Adapter | Pulleys
|
|
|
|
luaGenerator.forBlock['create_addition_da_pulleys_get_pulleys_distance'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getPulleyDistance("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// Digital Adapter | Elevator Pulley
|
|
|
|
luaGenerator.forBlock['create_addition_da_elevator_pulley_get_elevator_floor'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getElevatorFloor("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_elevator_pulley_get_elevator_floors'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getElevatorFloors("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_elevator_pulley_get_elevator_floor_name'] = function(block, generator) {
|
|
var floorindex = generator.valueToCode(block, 'INDEX', generator.ORDER_ATOMIC);
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getElevatorFloorName("${side}", ${floorindex})`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_elevator_pulley_goto_elevator_floor_name'] = function(block, generator) {
|
|
var floorindex = generator.valueToCode(block, 'INDEX', generator.ORDER_ATOMIC);
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
if (block.outputConnection && block.outputConnection.targetConnection) {
|
|
return [`${adapter}.gotoElevatorFloor("${side}", ${floorindex})`, luaGenerator.ORDER_NONE];
|
|
} else {
|
|
return `${adapter}.gotoElevatorFloor("${side}", ${floorindex})\n`;
|
|
}
|
|
};
|
|
|
|
// Digital Adapter | Mechanical Piston
|
|
|
|
luaGenerator.forBlock['create_addition_da_mechanical_piston_get_piston_distance'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getPistonDistance("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// Digital Adapter | Mechanical Bearing
|
|
|
|
luaGenerator.forBlock['create_addition_da_mechanical_bearing_get_bearing_angle'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
var side = block.getFieldValue('SIDE');
|
|
|
|
return [`${adapter}.getBearingAngle("${side}")`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
// Digital Adapter | Display Link
|
|
|
|
luaGenerator.forBlock['create_addition_da_dp_link_print'] = function(block, generator) {
|
|
var text = generator.valueToCode(block, 'TEXT', generator.ORDER_ATOMIC);
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
|
|
return `${adapter}.print("${text}")\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_dp_link_clear_line'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
|
|
return `${adapter}.clearLine()\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_dp_link_clear'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
|
|
return `${adapter}.clear()\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_dp_link_get_line'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
|
|
return [`${adapter}.getLine()`, luaGenerator.ORDER_NONE];
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_dp_link_set_line'] = function(block, generator) {
|
|
var line = generator.valueToCode(block, 'LINE', generator.ORDER_ATOMIC);
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
|
|
return `${adapter}.setLine()\n`;
|
|
};
|
|
|
|
luaGenerator.forBlock['create_addition_da_dp_link_get_max_line'] = function(block, generator) {
|
|
var adapter = generator.valueToCode(block, 'DA', generator.ORDER_ATOMIC);
|
|
|
|
return [`${adapter}.getMaxLines()`, luaGenerator.ORDER_NONE];
|
|
}; |