Example #1
0
void bGroup::drawForeground(){
	//******** if a block is currently being held, draw it on different layers, depending on Circumstances
	//-------- draw all the shadows
	for (unsigned int i=0; i<blocks.size(); i++) {
		if (blocks[i].bGrabbed) {
			blocks[i].drawShadow();
		}
	}
	//-------- draw all the grabbed blocks
	for (unsigned int i=0; i<blocks.size(); i++) {
		if (blocks[i].bGrabbed) {
			blocks[i].draw();
		}
	}
	
	//-------- draw ungrabbed statement blocks
	for (unsigned int i=0; i<blocks.size(); i++) {
		if (blocks[i].type==BLK_VAL&&!blocks[i].bGrabbed) {
			blocks[i].draw();
		}
	}
	//-------- draw grabbed statement blocks
	for (unsigned int i=0; i<blocks.size(); i++) {
		if (blocks[i].type==BLK_VAL&&blocks[i].bGrabbed) {
			blocks[i].draw();
		}
	}
	
	//-------- Not deprecated, displays blocks when dd clicked.
	for (unsigned int i=0; i<blocks.size(); i++) {
		if (blocks[i].ddOpen) {
			blocks[i].draw();
		}
	}
  
  if(held.bGrabbed){
    held.drawShadow();
    held.draw();
  }
  
  if(inHand&&held.bGrabbed){
    bool drawnInd=0;
    drawnInd=drawIndicators(held, base);
    for (unsigned int i=0; i<size()&&!drawnInd; i++) {
      drawnInd=drawIndicators(held,blocks[i]);
    }
  }
  
  
}
void SSD1306::nextFrameTick() {
  myFrameTick++;
  if (myFrameTick == myFrameWaitTicks && myFrameState == 0 || myFrameTick == myFrameTransitionTicks && myFrameState == 1) {
    myFrameState = (myFrameState + 1) %  2;
    if (myFrameState == FRAME_STATE_FIX) {
      myCurrentFrame = (myCurrentFrame + 1) % myFrameCount;
    }
    myFrameTick = 0;
  }
  drawIndicators(myFrameCount, myCurrentFrame);

  switch (myFrameState) {
    case 0:
      (*myFrameCallbacks[myCurrentFrame])(0, 0);
      break;
    case 1:
      (*myFrameCallbacks[myCurrentFrame])(-128 * myFrameTick / myFrameTransitionTicks, 0);
      (*myFrameCallbacks[(myCurrentFrame + 1) % myFrameCount])(-128 * myFrameTick / myFrameTransitionTicks + 128, 0);
      break;
  }

}