void drawLine(unsigned char col1, unsigned char row1, unsigned char col2, unsigned char row2) { if(row1 == row2 && col2 > col1) { for(col1; col1<=col2; col1++) { setPx(row1,col1); } } else if(col1 == col2 && row2 > row1) { for(row1; row1<=row2; row1++) { setPx(row1,col1); } } }
TilePixelValue::TilePixelValue(unsigned int zoom, unsigned int px, unsigned int py) : data_(0) { setZoom(zoom); setPx(px); setPy(py); }
PlayerButton::PlayerButton (QWidget *parent, const QString &pic) : QLabel (parent) { setMargin (3); setPx (pic); setFrameStyle (QFrame::StyledPanel | QFrame::Plain); setAutoFillBackground (true); }
void cbPIO_write( cbPIO_Port port, cbPIO_Pin pin, cbPIO_Value value) { cb_ASSERT(port <= cbPIO_PORT_2); cb_ASSERT((port != cbPIO_PORT_2) || (pin < cbPIO_PIN_5)); setPx(port, pin, value); }
void drawPoint(point myPoint, unsigned char shade) { setPx(makePoint(myPoint.x%128, myPoint.y%96), shade); }
void eloop(){ if(Btop>B||Etop>E)marke(); for(bxy*b=B;b<Btop;b++){ if(0)killb:if(killb(b))break; float bx=b->x,by=b->y; b->x+=b->xd; b->y+=b->yd; if(b->y<0||b->x<0||b->x>128||b->y>256)goto killb; if(T==MT){ glLine(bx,by,b->x,b->y); glRect(b->x-1,b->y-1,b->x+1,b->y+1); } for(int i=0;i<2;i++) if(btop(i,b)<256){ if(Php[i]!=b->p){ Ph[i]--; Php[i]=b->p; } goto killb; } } for(obje*e=E;e<Etop;e++){ if(0)kille:if(kille(e))break; float x=e->x,y=e->y,r; int et=!!(e->t&128); switch(e->t&127){ case(CAN) e->x=x+=e->xd; e->y=y+=e->yd; et=nerdest(e); erotxy(e,Px[et],Py[et],M_PI/16); if(!(T-e->c&3)) mkbd(e->c,x+cos(e->d)*r*2,y+sin(e->d)*r*2,6,e->d); if(x<-5||x>133||y<-5||y>261||e->h<1)goto kille; else(e->h<4||rdmg(x,y,e->h*3/2)){ deceh(e); } if(T==MT){ float r=min(T-e->c,e->h); glColor(wht); glLine(x,y,x+cos(e->d)*r*2,y+sin(e->d)*r*2); glColor(red+et); glCirc(x,y,r); } case(TAR) r=min(T-e->c,abs(e->h)); et=e->h<6?4:rdmg(x,y,r); if(et) seteh(e,e->h-et); setexdyd(e,rrotxy(e->xd,x,y,Px[0],Py[0],M_PI/72),rrotxy(e->yd,x,y,Px[1],Py[1],M_PI/72)); if(e->h<-120)goto kille; if(T==MT){ glColor(wht); glCirc(x,y,r); rndcol(); glCirc(x,y,min(r,24)); glColor(wht); glCirc(x,y,min(r,16)); rndcol(); glCirc(x,y,min(r,8)); } for(int i=0;i<2;i++) xLz(min(T-e->c,127+e->h),x,y,i?e->yd:e->xd); case(ROT) e->x=x+=e->xd; e->y=y+=e->yd; e->d+=M_PI/(et?128:-128); for(int i=0;i<3;i++) mkbd(e->c,x+cos(e->d+i*M_PI*2/3)*32,y+sin(e->d+i*M_PI*2/3)*32,8,e->d+i*M_PI*2/3); if(x<-5||x>133||y<-5||y>261||e->h<1)goto kille; else(e->h<8||rdmg(x,y,e->h)){ deceh(e); } if(T==MT){ rndcol(); glCirc(x,y,e->h); glColor(wht); for(int i=0;i<3;i++) glLine(x+cos(e->d+i*M_PI*2/3)*(32-e->h*3),y+sin(e->d+i*M_PI*2/3)*(32-e->h*3),x+cos(e->d+i*M_PI*2/3)*32,y+sin(e->d+i*M_PI*2/3)*32); } case(DOG) et=nearest(e); if(dst2(x,y,Px[et],Py[et])<64){ setPx(et,e->x); setPy(et,e->y); }else{ erotxy(e,Px[et],Py[et],M_PI/32); setexy(e,x+=cos(e->d)*e->xd,y+=sin(e->d)*e->xd); et=2; } if(rdmg2(x,y,16)&(et==2?0xFFFF:et==1?0x00FF:0xFF00)){ deceh(e); if(!e->h)goto kille; } if(T==MT){ glColor(et==2?wht:red+et); glCirc(x,y,min(e->h,T-e->c)); } case(POO) et=nearest(e); erotxy(e,Px[et],Py[et],M_PI/48); setexy(e,x+=cos(e->d)*e->xd,y+=sin(e->d)*e->xd); if(!(T-e->c&7)) mkbd(e->c,x,y,0,0); if(T==MT){ rndcol(); glCirc(x,y,min(T-e->c,e->h)/2); } if(dst2(x,y,Px[et],Py[et])<sqr(e->h)||e->h<16){ deceh(e); if(!e->h)goto kille; } case(B1) if(y<64){ add2ey(e); y+=2; } mkbxy(e->c,x,y,Px[0],Py[0],4); mkbxy(e->c+1,x,y,Px[1],Py[1],4); mkbxy(e->c+2,x,y,Px[!(e->h&8)],Py[!(e->h&8)],1); et=rdmg2(x,y,e->h); if((e->h&7)!=7&&getb(et,e->h&8)) seteh(e,e->h+1); else(getb(et,!(e->h&8))||e->h<7){ deceh(e); if(!e->h)goto kille; }
void cbPIO_open( cbPIO_Port port, cbPIO_Pin pin, cbPIO_NotifyCallbIrq notifyCallbFcn, cbPIO_Mode mode, cbPIO_Value value) { uint8 i; bool done = FALSE; uint8 selBit = pin; uint8 inpBit = pin; cb_ASSERT(port < cbPIO_PORT_INVALID); cb_ASSERT((port != cbPIO_PORT_2) || (pin < cbPIO_PIN_5)); if(port == cbPIO_PORT_2) { switch(pin) { case cbPIO_PIN_0: selBit = 0x01; break; case cbPIO_PIN_3: selBit = 0x02; break; case cbPIO_PIN_4: selBit = 0x04; break; default: selBit = 0x00; break; } } else if(port == cbPIO_PORT_1) { inpBit &= 0xFC; } switch(mode) { case cbPIO_INPUT_PU: *(pxSel[port]) &= ~selBit; *(pxDir[port]) &= ~pin; *(pxInp[port]) &= ~inpBit; if(port == cbPIO_PORT_0) { *(pxInp[2]) &= ~(0x20); } else if(port == cbPIO_PORT_1) { *(pxInp[2]) &= ~(0x40); } else { *(pxInp[2]) &= ~(0x80); } break; case cbPIO_INPUT_PD: *(pxSel[port]) &= ~selBit; *(pxDir[port]) &= ~pin; *(pxInp[port]) &= ~inpBit; if(port == cbPIO_PORT_0) { *(pxInp[2]) |= 0x20; } else if(port == cbPIO_PORT_1) { *(pxInp[2]) |= 0x40; } else { *(pxInp[2]) |= 0x80; } break; case cbPIO_INPUT_FLOATING: *(pxSel[port]) &= ~selBit; *(pxDir[port]) &= ~pin; break; case cbPIO_OUTPUT: *(pxSel[port]) &= ~selBit; *(pxDir[port]) |= pin; #if 0 if(value == cbPIO_HIGH) { *(px[port]) |= pin; } else { *(px[port]) &= ~pin; } #else setPx(port, pin, value); #endif break; case cbPIO_ALTERNATE: *(pxSel[port]) |= selBit; break; default: cb_EXIT(mode); } if( (notifyCallbFcn != NULL) && ((mode == cbPIO_INPUT_FLOATING) || (mode == cbPIO_INPUT_PU) || (mode == cbPIO_INPUT_PD))) { for(i = 0; (i < cbPIO_MAX_CALLBACKS) && (done == FALSE); i++) { if(pio.callb[i] == NULL) { pio.callb[i] = notifyCallbFcn; pio.port[i] = port; pio.pin[i] = pin; done = TRUE; cfgIrq(port, pin); } } } }