void updateFalling(void) { for(int j=0; j<numberOfFalling; j++) { if(moving[j].use==true) { swirlingDirection=randInt(MAXSWIRL); if(randomEvent(2)==true) swirlingDirection=-swirlingDirection; moving[j].stepX=moving[j].stepX+swirlingDirection; if(moving[j].stepX>maxXStep) moving[j].stepX=maxXStep; if(moving[j].stepX<-maxXStep) moving[j].stepX=-maxXStep; moving[j].y=moving[j].y+moving[j].stepY; moving[j].x=moving[j].x+moving[j].stepX+windSpeed+(gustOffSet*gustDirection); if(checkOnWindow(&moving[j])==false) { if(moving[j].y>displayHeight+moving[j].object->h[0]) { moving[j].use=false; moving[j].y=0-moving[j].object->h[0]; updateBottomSnow(&moving[j]); } } else { moving[j].use=false; moving[j].y=0-moving[j].object->h[0]; } if(moving[j].x>displayWidth+moving[j].object->w[0]) moving[j].x=0-moving[j].object->w[0]; if(moving[j].x<0-moving[j].object->w[0]) moving[j].x=displayWidth; } else { if(randomEvent(fallingSpread)==true) { moving[j].use=true; moving[j].stepY=randInt(fallSpeed-minFallSpeed+1)+minFallSpeed; moving[j].x=(rand() % displayWidth); moving[j].imageNum=randInt(moving[j].object->anims); moving[j].countDown=fallingAnimSpeed; moving[j].direction=randomEvent(2); } } } }
ssize_t unreliableChunkReadAt(struct chunk *aChunk, int aFd, uint64_t aOffset, uint32_t aSize) { if (randomEvent(100)) { logmsg(LLVL_WARN, "Fault injection: Failing unreliable read at offset 0x%lx.\n", aOffset); return -1; } else { return chunkReadAt(aChunk, aFd, aOffset, aSize); } }
void updateGusts(void) { if(doingGusts==false) { if((randomEvent(gustEvent)==true) && (gustPortion==1)) { gustCountdown=gustDuration; gustDirection=randomDirection(); realGustSpeed=1; gustPortion=1; gustInc=1.0; doingGusts=true; } } else doGusts(); }
void updateFlyers(void) { int j=0; for(j=0; j<numberOfFlyers; j++) { if(flyersMove[j].use==true) { flyersMove[j].x+=flyersStep+((gustOffSet*gustDirection)/4); if(flyersMove[j].x>displayWidth+flyersMove[j].object->w[0]) { flyersMove[j].y=(rand() % flyersMaxY); flyersMove[j].x=0-flyersMove[j].object->w[0]; flyersMove[j].use=false; } } else { if(randomEvent(flyerSpread)==true) flyersMove[j].use=true; } } }
void drawLamps(void) { int rc=0; int loop; int CurrentlampX; if(lampSet==0) return; CurrentlampX=lampX; rc=XSetClipMask(display,gc,lampsPixmap[_SELECTPIXMAP(ONMASK,lampsOnOff)]); switch(lastLampAnim) { case LAMPFLASH: for (loop=0; loop<lampCount; loop++) { rc+=XSetClipOrigin(display,gc,CurrentlampX,lampY); rc+=XCopyArea(display,lampsPixmap[_SELECTPIXMAP(ONPIXMAP,lampsOnOff)],drawOnThis,gc,0,0,lampWidth,lampHeight,CurrentlampX,lampY); CurrentlampX+=lampWidth; } break; case LAMPRANDOM: if(lampsNeedsUpdate==true) { lampsNeedsUpdate=false; for (loop=0; loop<lampCount; loop++) { lampState[loop]=randomEvent(2); } } for (loop=0; loop<lampCount; loop++) { rc+=XSetClipOrigin(display,gc,CurrentlampX,lampY); rc+=XCopyArea(display,lampsPixmap[_SELECTPIXMAP(ONPIXMAP,(int)lampState[loop])],drawOnThis,gc,0,0,lampWidth,lampHeight,CurrentlampX,lampY); CurrentlampX+=lampWidth; } break; case LAMPCHASE: if(lampsNeedsUpdate==true) { lampsNeedsUpdate=false; for (loop=0; loop<lampCount; loop++) { lampState[loop]=false; } lampSection++; if(lampSection==lampCount) lampSection=0; lampState[lampSection]=true; } for (loop=0; loop<lampCount; loop++) { rc+=XSetClipOrigin(display,gc,CurrentlampX,lampY); rc+=XCopyArea(display,lampsPixmap[_SELECTPIXMAP(ONPIXMAP,(int)lampState[loop])],drawOnThis,gc,0,0,lampWidth,lampHeight,CurrentlampX,lampY); CurrentlampX+=lampWidth; } break; case INVERTLAMPCHASE: if(lampsNeedsUpdate==true) { lampsNeedsUpdate=false; for (loop=0; loop<lampCount; loop++) { lampState[loop]=true; } lampSection++; if(lampSection==lampCount) lampSection=0; lampState[lampSection]=false; } for (loop=0; loop<lampCount; loop++) { rc+=XSetClipOrigin(display,gc,CurrentlampX,lampY); rc+=XCopyArea(display,lampsPixmap[_SELECTPIXMAP(ONPIXMAP,(int)lampState[loop])],drawOnThis,gc,0,0,lampWidth,lampHeight,CurrentlampX,lampY); CurrentlampX+=lampWidth; } break; } }