diff --git a/localtypings/pxtarget.d.ts b/localtypings/pxtarget.d.ts index 81380b291836..5aefbb57be03 100644 --- a/localtypings/pxtarget.d.ts +++ b/localtypings/pxtarget.d.ts @@ -813,6 +813,8 @@ declare namespace ts.pxtc { iconURL?: string; imageLiteral?: number; gridLiteral?: number; + gridLiteralOnColor?: string; + gridLiteralOffColor?: string; imageLiteralColumns?: number; // optional number of columns imageLiteralRows?: number; // optional number of rows imageLiteralScale?: number; // button sizing between 0.6 and 2, default is 1 diff --git a/pxtblocks/blocklyloader.ts b/pxtblocks/blocklyloader.ts index 6928abdaa8bf..e851855aeffe 100644 --- a/pxtblocks/blocklyloader.ts +++ b/pxtblocks/blocklyloader.ts @@ -686,8 +686,10 @@ namespace pxt.blocks { const columns = (fn.attributes.imageLiteralColumns || 5) * gridTemplateString; const rows = fn.attributes.imageLiteralRows || 5; const scale = fn.attributes.imageLiteralScale; + const onColor = fn.attributes.gridLiteralOnColor; + const offColor = fn.attributes.gridLiteralOffColor; let ri = block.appendDummyInput(); - ri.appendField(new pxtblockly.FieldMatrix("", { columns, rows, scale }), "LEDS"); + ri.appendField(new pxtblockly.FieldMatrix("", { columns, rows, scale, onColor, offColor }), "LEDS"); } if (fn.attributes.inlineInputMode === "external") { diff --git a/pxtblocks/fields/field_ledmatrix.ts b/pxtblocks/fields/field_ledmatrix.ts index 12928053bd66..390b657f75cb 100644 --- a/pxtblocks/fields/field_ledmatrix.ts +++ b/pxtblocks/fields/field_ledmatrix.ts @@ -233,7 +233,8 @@ namespace pxtblockly { } private getOpacity(x: number, y: number) { - return this.cellState[x][y] ? '1.0' : '0.2'; + const offOpacity = this.offColor ? '1.0': '0.2'; + return this.cellState[x][y] ? '1.0' : offOpacity; } private updateCell(x: number, y: number) {