Blockly.defineBlocksWithJsonArray([
    {
        "type": "array_declare_pro",
        "message0": "🗄️ Profi-Tabelle: %1 Typ: %2 Größe (Fächer): %3 %4 Startwerte: %5",
        "args0": [
            {"type": "field_input", "name": "ARRAY_NAME", "text": "MeineKennlinie"},
            {"type": "field_dropdown", "name": "ARRAY_TYPE", "options": [
                ["Ganzzahl (int)", "int"],
                ["Kommazahl (float)", "float"],
                ["Text (String)", "String"]
            ]},
            {"type": "field_number", "name": "ARRAY_SIZE", "value": 10, "min": 1},
            {"type": "input_dummy"},
            {"type": "field_input", "name": "ARRAY_VALUES", "text": "0, 10, 20, 30, 40"}
        ],
        "previousStatement": "VAR_DECLARE",
        "nextStatement": "VAR_DECLARE",
        "colour": 315,
        "tooltip": "Erstellt eine Tabelle und füllt sie direkt mit kommagetrennten Startwerten. Bei Texten (String) die Worte in Anführungszeichen setzen: \"A\", \"B\"."
    }
]);

// GENERATOR LOGIK
ArduinoGenerator.forBlock['array_declare_pro'] = function(block) {
    const name = block.getFieldValue('ARRAY_NAME').replace(/[^a-zA-Z0-9_]/g, '');
    const type = block.getFieldValue('ARRAY_TYPE');
    const size = block.getFieldValue('ARRAY_SIZE');
    const values = block.getFieldValue('ARRAY_VALUES').trim();
    
    // Baut den C++ Code zusammen. Wenn Werte da sind, werden sie in { } gesetzt.
    let declaration = `${type} ${name}[${size}]`;
    if (values.length > 0) {
        declaration += ` = {${values}}`;
    }
    declaration += `;`;
    
    ArduinoGenerator.globals_.add(declaration);
    return '';
};