limited support for RGB led
This commit is contained in:
		@@ -13,6 +13,7 @@ namespace pxsim {
 | 
			
		||||
        buttonPairState: ButtonPairState;
 | 
			
		||||
        radioState: RadioState;
 | 
			
		||||
        neopixelState: NeoPixelState;
 | 
			
		||||
        rgbLedState: number;
 | 
			
		||||
 | 
			
		||||
        constructor() {
 | 
			
		||||
            super()
 | 
			
		||||
@@ -48,7 +49,7 @@ namespace pxsim {
 | 
			
		||||
                    0,
 | 
			
		||||
                    0,
 | 
			
		||||
                    DAL.MICROBIT_ID_IO_P19,
 | 
			
		||||
                    DAL.MICROBIT_ID_IO_P20                    
 | 
			
		||||
                    DAL.MICROBIT_ID_IO_P20
 | 
			
		||||
                ]
 | 
			
		||||
            });
 | 
			
		||||
            this.builtinParts["radio"] = this.radioState = new RadioState(runtime);
 | 
			
		||||
@@ -61,11 +62,11 @@ namespace pxsim {
 | 
			
		||||
 | 
			
		||||
            this.builtinVisuals["buttonpair"] = () => new visuals.ButtonPairView();
 | 
			
		||||
            this.builtinVisuals["ledmatrix"] = () => new visuals.LedMatrixView();
 | 
			
		||||
            this.builtinVisuals["neopixel"] = () => new visuals.NeoPixelView();            
 | 
			
		||||
            this.builtinVisuals["neopixel"] = () => new visuals.NeoPixelView();
 | 
			
		||||
 | 
			
		||||
            this.builtinPartVisuals["buttonpair"] = (xy: visuals.Coord) => visuals.mkBtnSvg(xy);
 | 
			
		||||
            this.builtinPartVisuals["ledmatrix"] = (xy: visuals.Coord) => visuals.mkLedMatrixSvg(xy, 8, 8);
 | 
			
		||||
            this.builtinPartVisuals["neopixel"] = (xy: visuals.Coord) => visuals.mkNeoPixelPart(xy);            
 | 
			
		||||
            this.builtinPartVisuals["neopixel"] = (xy: visuals.Coord) => visuals.mkNeoPixelPart(xy);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        receiveMessage(msg: SimulatorMessage) {
 | 
			
		||||
@@ -97,7 +98,7 @@ namespace pxsim {
 | 
			
		||||
            const cmpDefs = msg.partDefinitions || {};
 | 
			
		||||
            const fnArgs = msg.fnArgs;
 | 
			
		||||
 | 
			
		||||
            const opts : visuals.BoardHostOpts = {
 | 
			
		||||
            const opts: visuals.BoardHostOpts = {
 | 
			
		||||
                state: this,
 | 
			
		||||
                boardDef: boardDef,
 | 
			
		||||
                partsList: cmpsList,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								sim/state/rgbled.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								sim/state/rgbled.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
namespace pxsim.basic {
 | 
			
		||||
    export function setLedColor(c: number) {
 | 
			
		||||
        board().rgbLedState = c;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -253,6 +253,7 @@ namespace pxsim.visuals {
 | 
			
		||||
        private shakeButton: SVGElement;
 | 
			
		||||
        public board: pxsim.DalBoard;
 | 
			
		||||
        private pinNmToCoord: Map<Coord> = {};
 | 
			
		||||
        private rgbLed: SVGElement;
 | 
			
		||||
 | 
			
		||||
        constructor(public props: IBoardProps) {
 | 
			
		||||
            this.recordPinCoords();
 | 
			
		||||
@@ -341,11 +342,21 @@ namespace pxsim.visuals {
 | 
			
		||||
            this.updateTemperature();
 | 
			
		||||
            this.updateButtonAB();
 | 
			
		||||
            this.updateGestures();
 | 
			
		||||
            this.updateRgbLed();
 | 
			
		||||
 | 
			
		||||
            if (!runtime || runtime.dead) svg.addClass(this.element, "grayscale");
 | 
			
		||||
            else svg.removeClass(this.element, "grayscale");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private updateRgbLed() {
 | 
			
		||||
            let state = this.board;
 | 
			
		||||
            if (state.rgbLedState) {
 | 
			
		||||
                if (!this.rgbLed)
 | 
			
		||||
                    this.rgbLed = svg.child(this.g, "circle", { cx: 170, cy: 200 });
 | 
			
		||||
                svg.fill(this.rgbLed, svg.toHtmlColor(state.rgbLedState));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private updateGestures() {
 | 
			
		||||
            let state = this.board;
 | 
			
		||||
            if (state.accelerometerState.useShake && !this.shakeButton) {
 | 
			
		||||
@@ -353,7 +364,7 @@ namespace pxsim.visuals {
 | 
			
		||||
                this.shakeButton = shake.inner;
 | 
			
		||||
                svg.fill(this.shakeButton, this.props.theme.virtualButtonUp)
 | 
			
		||||
                svg.buttonEvents(shake.outer,
 | 
			
		||||
                    ev => {},
 | 
			
		||||
                    ev => { },
 | 
			
		||||
                    (ev) => {
 | 
			
		||||
                        svg.fill(this.shakeButton, this.props.theme.virtualButtonDown)
 | 
			
		||||
                    },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user