/*************************************************** X De Block! Draw char. ***************************************************/ #include "gameheader.h" #include "xpm/wall.xpm" #include "xpm/stat.xpm" #include "xpm/pato.xpm" #include "xpm/back0.xpm" #include "xpm/back1.xpm" #include "xpm/back2.xpm" #include "xpm/back3.xpm" #include "xpm/back4.xpm" #include "xpm/back5.xpm" #include "xpm/back6.xpm" #include "xpm/back7.xpm" #include "xpm/back9.xpm" #include "xpm/blo0.xpm" #include "xpm/blo1.xpm" #include "xpm/blo2.xpm" #include "xpm/blo3.xpm" #include "xpm/blo4.xpm" #include "xpm/blo5.xpm" #include "xpm/blo6.xpm" #include "xpm/blo7.xpm" #include "xpm/blo8.xpm" #include "xpm/blo9.xpm" #include "xpm/blo10.xpm" #include "xpm/blo11.xpm" #include "xpm/blo12.xpm" #include "xpm/blo13.xpm" #include "xpm/blo14.xpm" #include "xpm/blo15.xpm" #include "xpm/blo16.xpm" #include "xpm/blo17.xpm" #include "xpm/blo18.xpm" #include "xpm/blo19.xpm" #include "xpm/blo20.xpm" #include "xpm/blo21.xpm" #include "xpm/blo22.xpm" #include "xpm/blo23.xpm" #include "xpm/blo24.xpm" #include "xpm/blo25.xpm" #include "xpm/blo26.xpm" #include "xpm/blo27.xpm" #include "xpm/blo28.xpm" #include "xpm/blo29.xpm" #include "xpm/blo30.xpm" #include "xpm/blo31.xpm" #include "xpm/blo40.xpm" #include "xpm/blo41.xpm" #include "xpm/blo42.xpm" #include "xpm/blo43.xpm" #include "xpm/blo44.xpm" #include "xpm/blo60.xpm" #include "xpm/blo61.xpm" #include "xpm/blo62.xpm" #include "xpm/blo63.xpm" #include "xpm/blo70.xpm" #include "xpm/blo71.xpm" #include "xpm/blo72.xpm" #include "xpm/blo73.xpm" #include "xpm/blo80.xpm" #include "xpm/blo81.xpm" #include "xpm/blo82.xpm" #include "xpm/blo83.xpm" #include "xpm/blo90.xpm" #include "xpm/blo91.xpm" #include "xpm/blo92.xpm" #include "xpm/blo93.xpm" #include "xpm/blo94.xpm" #include "xpm/blo100.xpm" #include "xpm/blo101.xpm" #include "xpm/blo102.xpm" #include "xpm/blo103.xpm" #include "xpm/blo104.xpm" #include "xpm/blo110.xpm" #include "xpm/blo111.xpm" #include "xpm/blo112.xpm" #include "xpm/blo113.xpm" #include "xpm/blo120.xpm" #include "xpm/blo121.xpm" #include "xpm/blo130.xpm" #include "xpm/blo140.xpm" #include "xpm/blo200.xpm" #include "xpm/blo201.xpm" #include "xpm/blo210.xpm" #include "xpm/blo220.xpm" #include "xpm/blo230.xpm" #include "xpm/blo231.xpm" #include "xpm/blo232.xpm" #include "xpm/blo233.xpm" #include "xpm/blo240.xpm" #include "xpm/blo250.xpm" #include "xpm/blo301.xpm" #include "xpm/bloN.xpm" extern Display *display; /* global display */ extern Window mWin; /* global main window */ extern GC gc; /* global gc */ extern Pixmap offPixmap,backPicPixmap; /* global offscreen pixmaps */ extern XFontStruct *xfont; /* global font */ extern Colormap cmap; /* global cmap */ extern allDataRec nowDataRec; extern mapFilePtr nowMapFile; extern flgs gameMainFlg; extern XColor black,white,blue,green,red,yellow,skyblue,rgb; /** define gameitems.c **/ extern Pixmap itemP[19]; static Pixmap bloPm[302]; static Pixmap bloMPm[302]; static char bloflg[302]; void drawBack_Pic(r) XRectangle *r; { /** copy area backpicpixmap => mWin **/ XCopyArea(display,backPicPixmap,mWin,gc,r->x -dWallLeft,r->y -dWallTop, r->width,r->height,r->x,r->y); } void drawBack_Pics(x,y,wid,hei) short x,y,wid,hei; { /** copy area backpicpixmap => mWin **/ XCopyArea(display,backPicPixmap,mWin,gc, x-dWallLeft,y-dWallTop,wid,hei,x,y); } void drawBack_Off(r) XRectangle *r; { /** copy area offpixmap => mWin **/ XCopyArea(display,offPixmap,mWin,gc,r->x,r->y,r->width,r->height,r->x,r->y); } void drawBack_Offs(x,y,wid,hei) short x,y,wid,hei; { /** copy area offpixmap => mWin **/ XCopyArea(display,offPixmap,mWin,gc,x,y,wid,hei,x,y); } void drawOff_Pic(r) XRectangle *r; { /** copy area backpicpixmap => offpixmap **/ XCopyArea(display,backPicPixmap,offPixmap,gc,r->x -dWallLeft,r->y -dWallTop, r->width,r->height,r->x,r->y); } void drawOff_Pics(x,y,wid,hei) short x,y,wid,hei; { /** copy area backpicpixmap => offpixmap **/ XCopyArea(display,backPicPixmap,offPixmap,gc, x-dWallLeft,y-dWallTop,wid,hei,x,y); } void drawOff_Blo(clear,draw,px_id) XRectangle *clear; XRectangle *draw; short px_id; { drawOff_Pics(clear->x,clear->y,clear->width,clear->height); if(bloflg[px_id]) drawWithMask(display,offPixmap,bloPm[px_id],bloMPm[px_id], draw->x,draw->y,draw->width,draw->height); else drawWithMask(display,offPixmap,bloPm[290],bloMPm[290], draw->x,draw->y,draw->width,draw->height); XCopyArea(display,offPixmap,mWin,gc, draw->x,draw->y,draw->width,draw->height,draw->x,draw->y); } void drawBar(void) { drawBack_Off(&nowDataRec.nowBar.prevRect); XSetForeground(display,gc,nowDataRec.nowMap.barColor); XFillRectangles(display,mWin,gc,&nowDataRec.nowBar.nowRect,1); } void drawBall(i) register i; { drawBack_Off(&nowDataRec.nowBall[i].prevRect); XSetForeground(display,gc,nowDataRec.nowMap.ballColor); XFillArc(display,mWin,gc, nowDataRec.nowBall[i].nowRect.x, nowDataRec.nowBall[i].nowRect.y, nowDataRec.nowBall[i].nowRect.width, nowDataRec.nowBall[i].nowRect.height, 0,64*360); } void drawItem(iNum) register iNum; { register tempLengh; tempLengh = nowDataRec.nowItem[iNum].nowRect.width; if(tempLengh <= dBlockWidth/4) nowDataRec.nowItem[iNum].nowAnime = 1; else if(tempLengh >= dBlockWidth*2/3) nowDataRec.nowItem[iNum].nowAnime = -1; nowDataRec.nowItem[iNum].nowRect.x -= nowDataRec.nowItem[iNum].nowAnime; nowDataRec.nowItem[iNum].nowPoint.x -= nowDataRec.nowItem[iNum].nowAnime; nowDataRec.nowItem[iNum].nowRect.width +=nowDataRec.nowItem[iNum].nowAnime*2; drawBack_Off(&nowDataRec.nowItem[iNum].prevRect); XCopyArea(display,itemP[nowDataRec.nowItem[iNum].itemKind],mWin,gc, nowDataRec.nowItem[iNum].nowPoint.x, 0, nowDataRec.nowItem[iNum].nowRect.width, dBlockHeight, nowDataRec.nowItem[iNum].nowRect.x, nowDataRec.nowItem[iNum].nowRect.y); } void initBlockPix(void) { XpmAttributes attr; int err,i; for(i^=i;i < 300;i++) bloflg[i] = False; attr.valuemask = XpmColormap; attr.colormap = cmap; /* normal blocks */ bloflg[0] = True; err = XpmCreatePixmapFromData(display,mWin,blo0_xpm, &bloPm[0],&bloMPm[0],&attr); handleXPMError(err,"init bloPm[0]"); bloflg[1] = True; err = XpmCreatePixmapFromData(display,mWin,blo1_xpm, &bloPm[1],&bloMPm[1],&attr); handleXPMError(err,"init bloPm[1]"); bloflg[2] = True; err = XpmCreatePixmapFromData(display,mWin,blo2_xpm, &bloPm[2],&bloMPm[2],&attr); handleXPMError(err,"init bloPm[2]"); bloflg[3] = True; err = XpmCreatePixmapFromData(display,mWin,blo3_xpm, &bloPm[3],&bloMPm[3],&attr); handleXPMError(err,"init bloPm[3]"); bloflg[4] = True; err = XpmCreatePixmapFromData(display,mWin,blo4_xpm, &bloPm[4],&bloMPm[4],&attr); handleXPMError(err,"init bloPm[4]"); bloflg[5] = True; err = XpmCreatePixmapFromData(display,mWin,blo5_xpm, &bloPm[5],&bloMPm[5],&attr); handleXPMError(err,"init bloPm[5]"); bloflg[6] = True; err = XpmCreatePixmapFromData(display,mWin,blo6_xpm, &bloPm[6],&bloMPm[6],&attr); handleXPMError(err,"init bloPm[6]"); bloflg[7] = True; err = XpmCreatePixmapFromData(display,mWin,blo7_xpm, &bloPm[7],&bloMPm[7],&attr); handleXPMError(err,"init bloPm[7]"); bloflg[8] = True; err = XpmCreatePixmapFromData(display,mWin,blo8_xpm, &bloPm[8],&bloMPm[8],&attr); handleXPMError(err,"init bloPm[8]"); bloflg[9] = True; err = XpmCreatePixmapFromData(display,mWin,blo9_xpm, &bloPm[9],&bloMPm[9],&attr); handleXPMError(err,"init bloPm[9]"); bloflg[10] = True; err = XpmCreatePixmapFromData(display,mWin,blo10_xpm, &bloPm[10],&bloMPm[10],&attr); handleXPMError(err,"init bloPm[10]"); bloflg[11] = True; err = XpmCreatePixmapFromData(display,mWin,blo11_xpm, &bloPm[11],&bloMPm[11],&attr); handleXPMError(err,"init bloPm[11]"); bloflg[12] = True; err = XpmCreatePixmapFromData(display,mWin,blo12_xpm, &bloPm[12],&bloMPm[12],&attr); handleXPMError(err,"init bloPm[12]"); bloflg[13] = True; err = XpmCreatePixmapFromData(display,mWin,blo13_xpm, &bloPm[13],&bloMPm[13],&attr); handleXPMError(err,"init bloPm[13]"); bloflg[14] = True; err = XpmCreatePixmapFromData(display,mWin,blo14_xpm, &bloPm[14],&bloMPm[14],&attr); handleXPMError(err,"init bloPm[14]"); bloflg[15] = True; err = XpmCreatePixmapFromData(display,mWin,blo15_xpm, &bloPm[15],&bloMPm[15],&attr); handleXPMError(err,"init bloPm[15]"); bloflg[16] = True; err = XpmCreatePixmapFromData(display,mWin,blo16_xpm, &bloPm[16],&bloMPm[16],&attr); handleXPMError(err,"init bloPm[16]"); bloflg[17] = True; err = XpmCreatePixmapFromData(display,mWin,blo17_xpm, &bloPm[17],&bloMPm[17],&attr); handleXPMError(err,"init bloPm[17]"); bloflg[18] = True; err = XpmCreatePixmapFromData(display,mWin,blo18_xpm, &bloPm[18],&bloMPm[18],&attr); handleXPMError(err,"init bloPm[18]"); bloflg[19] = True; err = XpmCreatePixmapFromData(display,mWin,blo19_xpm, &bloPm[19],&bloMPm[19],&attr); handleXPMError(err,"init bloPm[19]"); bloflg[20] = True; err = XpmCreatePixmapFromData(display,mWin,blo20_xpm, &bloPm[20],&bloMPm[20],&attr); handleXPMError(err,"init bloPm[20]"); bloflg[21] = True; err = XpmCreatePixmapFromData(display,mWin,blo21_xpm, &bloPm[21],&bloMPm[21],&attr); handleXPMError(err,"init bloPm[21]"); bloflg[22] = True; err = XpmCreatePixmapFromData(display,mWin,blo22_xpm, &bloPm[22],&bloMPm[22],&attr); handleXPMError(err,"init bloPm[22]"); bloflg[23] = True; err = XpmCreatePixmapFromData(display,mWin,blo23_xpm, &bloPm[23],&bloMPm[23],&attr); handleXPMError(err,"init bloPm[23]"); bloflg[24] = True; err = XpmCreatePixmapFromData(display,mWin,blo24_xpm, &bloPm[24],&bloMPm[24],&attr); handleXPMError(err,"init bloPm[24]"); bloflg[25] = True; err = XpmCreatePixmapFromData(display,mWin,blo25_xpm, &bloPm[25],&bloMPm[25],&attr); handleXPMError(err,"init bloPm[25]"); bloflg[26] = True; err = XpmCreatePixmapFromData(display,mWin,blo26_xpm, &bloPm[26],&bloMPm[26],&attr); handleXPMError(err,"init bloPm[26]"); bloflg[27] = True; err = XpmCreatePixmapFromData(display,mWin,blo27_xpm, &bloPm[27],&bloMPm[27],&attr); handleXPMError(err,"init bloPm[27]"); bloflg[28] = True; err = XpmCreatePixmapFromData(display,mWin,blo28_xpm, &bloPm[28],&bloMPm[28],&attr); handleXPMError(err,"init bloPm[28]"); bloflg[29] = True; err = XpmCreatePixmapFromData(display,mWin,blo29_xpm, &bloPm[29],&bloMPm[29],&attr); handleXPMError(err,"init bloPm[29]"); bloflg[30] = True; err = XpmCreatePixmapFromData(display,mWin,blo30_xpm, &bloPm[30],&bloMPm[30],&attr); handleXPMError(err,"init bloPm[30]"); bloflg[31] = True; err = XpmCreatePixmapFromData(display,mWin,blo31_xpm, &bloPm[31],&bloMPm[31],&attr); handleXPMError(err,"init bloPm[31]"); /* */ bloflg[40] = True; err = XpmCreatePixmapFromData(display,mWin,blo40_xpm, &bloPm[40],&bloMPm[40],&attr); handleXPMError(err,"init bloPm[40]"); bloflg[41] = True; err = XpmCreatePixmapFromData(display,mWin,blo41_xpm, &bloPm[41],&bloMPm[41],&attr); handleXPMError(err,"init bloPm[41]"); bloflg[42] = True; err = XpmCreatePixmapFromData(display,mWin,blo42_xpm, &bloPm[42],&bloMPm[42],&attr); handleXPMError(err,"init bloPm[42]"); bloflg[43] = True; err = XpmCreatePixmapFromData(display,mWin,blo43_xpm, &bloPm[43],&bloMPm[43],&attr); handleXPMError(err,"init bloPm[43]"); bloflg[44] = True; err = XpmCreatePixmapFromData(display,mWin,blo44_xpm, &bloPm[44],&bloMPm[44],&attr); handleXPMError(err,"init bloPm[44]"); /* */ bloflg[60] = True; err = XpmCreatePixmapFromData(display,mWin,blo60_xpm, &bloPm[60],&bloMPm[60],&attr); handleXPMError(err,"init bloPm[60]"); bloflg[61] = True; err = XpmCreatePixmapFromData(display,mWin,blo61_xpm, &bloPm[61],&bloMPm[61],&attr); handleXPMError(err,"init bloPm[61]"); bloflg[62] = True; err = XpmCreatePixmapFromData(display,mWin,blo62_xpm, &bloPm[62],&bloMPm[62],&attr); handleXPMError(err,"init bloPm[62]"); bloflg[63] = True; err = XpmCreatePixmapFromData(display,mWin,blo63_xpm, &bloPm[63],&bloMPm[63],&attr); handleXPMError(err,"init bloPm[63]"); /* */ bloflg[70] = True; err = XpmCreatePixmapFromData(display,mWin,blo70_xpm, &bloPm[70],&bloMPm[70],&attr); handleXPMError(err,"init bloPm[70]"); bloflg[71] = True; err = XpmCreatePixmapFromData(display,mWin,blo71_xpm, &bloPm[71],&bloMPm[71],&attr); handleXPMError(err,"init bloPm[71]"); bloflg[72] = True; err = XpmCreatePixmapFromData(display,mWin,blo72_xpm, &bloPm[72],&bloMPm[72],&attr); handleXPMError(err,"init bloPm[72]"); bloflg[73] = True; err = XpmCreatePixmapFromData(display,mWin,blo73_xpm, &bloPm[73],&bloMPm[73],&attr); handleXPMError(err,"init bloPm[73]"); /* */ bloflg[80] = True; err = XpmCreatePixmapFromData(display,mWin,blo80_xpm, &bloPm[80],&bloMPm[80],&attr); handleXPMError(err,"init bloPm[80]"); bloflg[81] = True; err = XpmCreatePixmapFromData(display,mWin,blo81_xpm, &bloPm[81],&bloMPm[81],&attr); handleXPMError(err,"init bloPm[81]"); bloflg[82] = True; err = XpmCreatePixmapFromData(display,mWin,blo82_xpm, &bloPm[82],&bloMPm[82],&attr); handleXPMError(err,"init bloPm[82]"); bloflg[83] = True; err = XpmCreatePixmapFromData(display,mWin,blo83_xpm, &bloPm[83],&bloMPm[83],&attr); handleXPMError(err,"init bloPm[83]"); /* */ bloflg[90] = True; err = XpmCreatePixmapFromData(display,mWin,blo90_xpm, &bloPm[90],&bloMPm[90],&attr); handleXPMError(err,"init bloPm[90]"); bloflg[91] = True; err = XpmCreatePixmapFromData(display,mWin,blo91_xpm, &bloPm[91],&bloMPm[91],&attr); handleXPMError(err,"init bloPm[91]"); bloflg[92] = True; err = XpmCreatePixmapFromData(display,mWin,blo92_xpm, &bloPm[92],&bloMPm[92],&attr); handleXPMError(err,"init bloPm[92]"); bloflg[93] = True; err = XpmCreatePixmapFromData(display,mWin,blo93_xpm, &bloPm[93],&bloMPm[93],&attr); handleXPMError(err,"init bloPm[93]"); bloflg[94] = True; err = XpmCreatePixmapFromData(display,mWin,blo94_xpm, &bloPm[94],&bloMPm[94],&attr); handleXPMError(err,"init bloPm[94]"); /* */ bloflg[100] = True; err = XpmCreatePixmapFromData(display,mWin,blo100_xpm, &bloPm[100],&bloMPm[100],&attr); handleXPMError(err,"init bloPm[100]"); bloflg[101] = True; err = XpmCreatePixmapFromData(display,mWin,blo101_xpm, &bloPm[101],&bloMPm[101],&attr); handleXPMError(err,"init bloPm[101]"); bloflg[102] = True; err = XpmCreatePixmapFromData(display,mWin,blo102_xpm, &bloPm[102],&bloMPm[102],&attr); handleXPMError(err,"init bloPm[102]"); bloflg[103] = True; err = XpmCreatePixmapFromData(display,mWin,blo103_xpm, &bloPm[103],&bloMPm[103],&attr); handleXPMError(err,"init bloPm[103]"); bloflg[104] = True; err = XpmCreatePixmapFromData(display,mWin,blo104_xpm, &bloPm[104],&bloMPm[104],&attr); handleXPMError(err,"init bloPm[104]"); /* */ bloflg[110] = True; err = XpmCreatePixmapFromData(display,mWin,blo110_xpm, &bloPm[110],&bloMPm[110],&attr); handleXPMError(err,"init bloPm[110]"); bloflg[111] = True; err = XpmCreatePixmapFromData(display,mWin,blo111_xpm, &bloPm[111],&bloMPm[111],&attr); handleXPMError(err,"init bloPm[111]"); bloflg[112] = True; err = XpmCreatePixmapFromData(display,mWin,blo112_xpm, &bloPm[112],&bloMPm[112],&attr); handleXPMError(err,"init bloPm[112]"); bloflg[113] = True; err = XpmCreatePixmapFromData(display,mWin,blo113_xpm, &bloPm[113],&bloMPm[113],&attr); handleXPMError(err,"init bloPm[113]"); /* */ bloflg[120] = True; err = XpmCreatePixmapFromData(display,mWin,blo120_xpm, &bloPm[120],&bloMPm[120],&attr); handleXPMError(err,"init bloPm[120]"); bloflg[121] = True; err = XpmCreatePixmapFromData(display,mWin,blo121_xpm, &bloPm[121],&bloMPm[121],&attr); handleXPMError(err,"init bloPm[121]"); /* */ bloflg[130] = True; err = XpmCreatePixmapFromData(display,mWin,blo130_xpm, &bloPm[130],&bloMPm[130],&attr); handleXPMError(err,"init bloPm[130]"); /* */ bloflg[140] = True; err = XpmCreatePixmapFromData(display,mWin,blo140_xpm, &bloPm[140],&bloMPm[140],&attr); handleXPMError(err,"init bloPm[140]"); /* */ bloflg[200] = True; err = XpmCreatePixmapFromData(display,mWin,blo200_xpm, &bloPm[200],&bloMPm[200],&attr); handleXPMError(err,"init bloPm[200]"); bloflg[201] = True; err = XpmCreatePixmapFromData(display,mWin,blo201_xpm, &bloPm[201],&bloMPm[201],&attr); handleXPMError(err,"init bloPm[201]"); /* */ bloflg[210] = True; err = XpmCreatePixmapFromData(display,mWin,blo210_xpm, &bloPm[210],&bloMPm[210],&attr); handleXPMError(err,"init bloPm[210]"); /* */ bloflg[220] = True; err = XpmCreatePixmapFromData(display,mWin,blo220_xpm, &bloPm[220],&bloMPm[220],&attr); handleXPMError(err,"init bloPm[220]"); /* */ bloflg[230] = True; err = XpmCreatePixmapFromData(display,mWin,blo230_xpm, &bloPm[230],&bloMPm[230],&attr); handleXPMError(err,"init bloPm[230]"); bloflg[231] = True; err = XpmCreatePixmapFromData(display,mWin,blo231_xpm, &bloPm[231],&bloMPm[231],&attr); handleXPMError(err,"init bloPm[231]"); bloflg[232] = True; err = XpmCreatePixmapFromData(display,mWin,blo232_xpm, &bloPm[232],&bloMPm[232],&attr); handleXPMError(err,"init bloPm[232]"); bloflg[233] = True; err = XpmCreatePixmapFromData(display,mWin,blo233_xpm, &bloPm[233],&bloMPm[233],&attr); handleXPMError(err,"init bloPm[233]"); /* */ bloflg[240] = True; err = XpmCreatePixmapFromData(display,mWin,blo240_xpm, &bloPm[240],&bloMPm[240],&attr); handleXPMError(err,"init bloPm[240]"); /* */ bloflg[250] = True; err = XpmCreatePixmapFromData(display,mWin,blo250_xpm, &bloPm[250],&bloMPm[250],&attr); handleXPMError(err,"init bloPm[250]"); /* */ bloflg[301] = True; err = XpmCreatePixmapFromData(display,mWin,blo301_xpm, &bloPm[301],&bloMPm[301],&attr); handleXPMError(err,"init bloPm[301]"); /* */ /**** null block ****/ err = XpmCreatePixmapFromData(display,mWin,bloN_xpm, &bloPm[290],&bloMPm[290],&attr); handleXPMError(err,"init bloPm[290]"); XpmFreeAttributes(&attr); } void freeBlock(void) { register i; for(i^=i;i < 300;i++) if(bloflg[i]) XFreePixmap(display,bloPm[i]); } void blockPicSet(void) { register i,bloMax; bloMax = nowDataRec.nowMap.allBlockNum; for(i^=i; i < bloMax; i++) if(nowDataRec.nowBlock[i].nowFlg.life) if(nowDataRec.nowBlock[i].nowFlg.reDraw) if(bloflg[nowDataRec.nowBlock[i].blockPicID]) drawWithMask(display,offPixmap, bloPm[nowDataRec.nowBlock[i].blockPicID], bloMPm[nowDataRec.nowBlock[i].blockPicID], nowDataRec.nowBlock[i].nowRect.x, nowDataRec.nowBlock[i].nowRect.y, nowDataRec.nowBlock[i].nowRect.width, nowDataRec.nowBlock[i].nowRect.height); else { drawWithMask(display,offPixmap, bloPm[290], bloMPm[290], nowDataRec.nowBlock[i].nowRect.x, nowDataRec.nowBlock[i].nowRect.y, nowDataRec.nowBlock[i].nowRect.width, nowDataRec.nowBlock[i].nowRect.height); #ifdef DEBUG printf("bad block = %d\n",nowDataRec.nowBlock[i].blockPicID); #endif } } void stringDrawUpData(void) { drawBack_Offs(100,200,500,350); } void drawUpData(void) { drawBack_Offs(0,0,dWinWidth,dWinHeight); statScoreDraw(); statBallDraw(); statStageDraw(); statTimeDraw(); } void myDrawPic(id) short id; { } void putBackPattarn(win,wid,hei,num) Drawable win; int wid; int hei; int num; { XpmAttributes attributes; Pixmap pic,picM; int pic_x,pic_y,err; register x,y; attributes.valuemask = XpmColormap; attributes.colormap = cmap; /******* Background Picture Setting !! *******/ switch(num) { case 128: err = XpmCreatePixmapFromData(display,mWin,pato_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic pato"); sscanf(pato_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = blue.pixel; nowDataRec.nowMap.ballColor = red.pixel; break; case 300: err = XpmCreatePixmapFromData(display,mWin,back0_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back0"); sscanf(back0_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = yellow.pixel; nowDataRec.nowMap.ballColor = skyblue.pixel; break; case 301: err = XpmCreatePixmapFromData(display,mWin,back1_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back1"); sscanf(back1_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = skyblue.pixel; nowDataRec.nowMap.ballColor = white.pixel; break; case 302: err = XpmCreatePixmapFromData(display,mWin,back2_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back2"); sscanf(back2_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = yellow.pixel; nowDataRec.nowMap.ballColor = skyblue.pixel; break; case 303: err = XpmCreatePixmapFromData(display,mWin,back3_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back3"); sscanf(back3_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = blue.pixel; nowDataRec.nowMap.ballColor = skyblue.pixel; break; case 304: err = XpmCreatePixmapFromData(display,mWin,back4_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back4"); sscanf(back4_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = green.pixel; nowDataRec.nowMap.ballColor = yellow.pixel; break; case 305: err = XpmCreatePixmapFromData(display,mWin,back5_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back5"); sscanf(back5_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = black.pixel; nowDataRec.nowMap.ballColor = blue.pixel; break; case 306: err = XpmCreatePixmapFromData(display,mWin,back6_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back6"); sscanf(back6_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = yellow.pixel; nowDataRec.nowMap.ballColor = skyblue.pixel; break; case 307: err = XpmCreatePixmapFromData(display,mWin,back7_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back7"); sscanf(back7_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = skyblue.pixel; nowDataRec.nowMap.ballColor = yellow.pixel; break; case 309: err = XpmCreatePixmapFromData(display,mWin,back9_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back9"); sscanf(back9_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = red.pixel; nowDataRec.nowMap.ballColor = blue.pixel; break; default: #ifdef DEBUG printf("Bad back-pixmap = %d\n",num); #endif err = XpmCreatePixmapFromData(display,mWin,back0_xpm, &pic,&picM,&attributes); handleXPMError(err,"init backpic back0"); sscanf(back0_xpm[0],"%d%d",&pic_x,&pic_y); nowDataRec.nowMap.barColor = yellow.pixel; nowDataRec.nowMap.ballColor = skyblue.pixel; break; } for(x^=x; x < wid; x += pic_x) for(y^=y; y < hei; y += pic_y) XCopyArea(display,pic,win,gc,0,0,pic_x,pic_y,x,y); XpmFreeAttributes(&attributes); XFreePixmap(display,pic); } void backPicSet(void) { XpmAttributes attributes; Pixmap statPixmap,statMPixmap, wallPixmap,wallMPixmap; register x,y; int err; /******* Background Picture Setting !! *******/ putBackPattarn(backPicPixmap,dBackPmWidth,dBackPmHeight, nowDataRec.nowMap.backPicID); XCopyArea(display,backPicPixmap,offPixmap,gc,0,0, dBackPmWidth,dBackPmHeight,dWallLeft,dWallTop); attributes.valuemask = XpmColormap; attributes.colormap = cmap; if(nowDataRec.nowMap.nowFlg.backPicDraw == False) { err = XpmCreatePixmapFromData(display,mWin,wall_xpm, &wallPixmap,&wallMPixmap,&attributes); handleXPMError(err,"init wall"); err = XpmCreatePixmapFromData(display,mWin,stat_xpm, &statPixmap,&statMPixmap,&attributes); handleXPMError(err,"init statbord"); /** draw left wall **/ for(x^=x,y^=y; y < dWinHeight; y +=24) XCopyArea(display,wallPixmap,offPixmap,gc,0,0,dWallTop,dWallLeft,x,y); /** draw top wall **/ for(x=dWallLeft,y^=y; x < dWallRight; x +=24) XCopyArea(display,wallPixmap,offPixmap,gc,0,0,dWallTop,dWallLeft,x,y); /** draw right wall **/ for(x=dWallRight,y^=y; y < dWinHeight; y +=24) XCopyArea(display,wallPixmap,offPixmap,gc,0,0,dWallTop,dWallLeft,x,y); /** draw stat picture **/ XCopyArea(display,statPixmap,offPixmap,gc,0,0, dWinWidth -(dWallRight+24),dWinHeight,(dWallRight+24),0); XpmFreeAttributes(&attributes); XFreePixmap(display,wallPixmap); XFreePixmap(display,statPixmap); nowDataRec.nowMap.nowFlg.backPicDraw =True; } drawUpData(); /******* Block Picture Setting *******/ blockPicSet(); /******* draw use effect *******/ if(gameMainFlg.useEffect) { } else drawUpData(); }