?? bstub.c
字號:
longptr = (long *)voxoff[0][0]; tspr->xrepeat = scale(tspr->xrepeat,56,longptr[2]); tspr->yrepeat = scale(tspr->yrepeat,56,longptr[2]); tspr->picnum = 0; tspr->shade -= 6; break; case BROWNMONSTER: if (!voxoff[1][0]) qloadkvx(1L,"voxel001.kvx"); tspr->cstat |= 48; tspr->picnum = 1; break; } tspr->shade += 6; if (sector[tspr->sectnum].ceilingstat&1) tspr->shade += sector[tspr->sectnum].ceilingshade; else tspr->shade += sector[tspr->sectnum].floorshade; }}static char timerinited = 0;void ExtCheckKeys(void){ long i, j, p, y, dx, dy, cosang, sinang, bufplc, tsizy, tsizyup15; if (qsetmode == 200) /* In 3D mode */ { if (hang != 0) { bufplc = waloff[4094]+(mulscale16(horiz-100,xdimenscale)+(tilesizx[4094]>>1))*tilesizy[4094]; setviewback(); cosang = sintable[(hang+512)&2047]; sinang = sintable[hang&2047]; dx = dmulscale1(xdim,cosang,ydim,sinang); dy = dmulscale1(-ydim,cosang,xdim,sinang); tsizy = tilesizy[4094]; tsizyup15 = (tsizy<<15); dx = mulscale14(dx,daviewingrange); dy = mulscale14(dy,daaspect); sinang = mulscale14(sinang,daviewingrange); cosang = mulscale14(cosang,daaspect); p = ylookup[windowy1]+frameplace+windowx2+1; for(y=windowy1;y<=windowy2;y++) { i = divscale16(tsizyup15,dx); stretchhline(0,(xdim>>1)*i+tsizyup15,xdim>>2,i,mulscale32(i,dy)*tsizy+bufplc,p); dx -= sinang; dy += cosang; p += ylookup[1]; } walock[4094] = 1; sprintf(tempbuf,"%ld",(hang*180)>>10); printext256(0L,8L,31,-1,tempbuf,1); } if (keystatus[0xa]) setaspect(viewingrange+(viewingrange>>8),yxaspect+(yxaspect>>8)); if (keystatus[0xb]) setaspect(viewingrange-(viewingrange>>8),yxaspect-(yxaspect>>8)); if (keystatus[0xc]) setaspect(viewingrange,yxaspect-(yxaspect>>8)); if (keystatus[0xd]) setaspect(viewingrange,yxaspect+(yxaspect>>8)); if (!timerinited) { timerinited = 1; inittimer42(); /* Must init here because VESA 0x4F02 messes timer 2 */ } i = totalclock-ototalclock; ototalclock += i; j = ofinetotalclock-gettimer42(); ofinetotalclock -= j; i = ((i*(1193181/120)-(j&65535)+32768)&0xffff0000)+(j&65535); if (i) { frameval[framecnt&(AVERAGEFRAMES-1)] = 11931810/i; framecnt++; } /* !!! This ifdef should be temporary! --ryan. !!! */ /*Print MAX FRAME RATE */ #ifdef PLATFORM_DOS i = frameval[(framecnt-1)&(AVERAGEFRAMES-1)]; for(j=AVERAGEFRAMES-1;j>0;j--) i = max(i,frameval[j]); averagefps = ((averagefps*3+i)>>2); sprintf(tempbuf,"%ld.%ld",averagefps/10,averagefps%10); #else sprintf(tempbuf,"%.2f", (double) (total_rendered_frames / ((double) total_render_time / 1000.0))); #endif printext256(0L,0L,31,-1,tempbuf,1); editinput(); } else { timerinited = 0; }}void ExtCleanUp(void){}void ExtLoadMap(const char *mapname){}void ExtSaveMap(const char *mapname){}const char *ExtGetSectorCaption(short sectnum){ if ((sector[sectnum].lotag|sector[sectnum].hitag) == 0) { tempbuf[0] = 0; } else { sprintf(tempbuf,"%hu,%hu",(unsigned short)sector[sectnum].hitag, (unsigned short)sector[sectnum].lotag); } return(tempbuf);}const char *ExtGetWallCaption(short wallnum){ if ((wall[wallnum].lotag|wall[wallnum].hitag) == 0) { tempbuf[0] = 0; } else { sprintf(tempbuf,"%hu,%hu",(unsigned short)wall[wallnum].hitag, (unsigned short)wall[wallnum].lotag); } return(tempbuf);}const char *ExtGetSpriteCaption(short spritenum){ if ((sprite[spritenum].lotag|sprite[spritenum].hitag) == 0) { tempbuf[0] = 0; } else { sprintf(tempbuf,"%hu,%hu",(unsigned short)sprite[spritenum].hitag, (unsigned short)sprite[spritenum].lotag); } return(tempbuf);}/* * printext16 parameters: * printext16(long xpos, long ypos, short col, short backcol, * char name[82], char fontsize) * xpos 0-639 (top left) * ypos 0-479 (top left) * col 0-15 * backcol 0-15, -1 is transparent background * name * fontsize 0=8*8, 1=3*5 * * drawline16 parameters: * drawline16(long x1, long y1, long x2, long y2, char col) * x1, x2 0-639 * y1, y2 0-143 (status bar is 144 high, origin is top-left of STATUS BAR) * col 0-15 */void ExtShowSectorData(short sectnum) /* F5 */{ if (qsetmode == 200) /* In 3D mode */ { } else { clearmidstatbar16(); /* Clear middle of status bar */ sprintf(tempbuf,"Sector %d",sectnum); statusbar_printext16(8,32,11,-1,tempbuf,0); statusbar_printext16(8,48,11,-1,"8*8 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789",0); statusbar_printext16(8,56,11,-1,"3*5 font: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789",1); drawline16(320,68,344,80,4); /* Draw house */ drawline16(344,80,344,116,4); drawline16(344,116,296,116,4); drawline16(296,116,296,80,4); drawline16(296,80,320,68,4); }}void ExtShowWallData(short wallnum) /* F6 */{ if (qsetmode == 200) /* In 3D mode */ { } else { clearmidstatbar16(); /* Clear middle of status bar */ sprintf(tempbuf,"Wall %d",wallnum); statusbar_printext16(8,32,11,-1,tempbuf,0); }}void ExtShowSpriteData(short spritenum) /* F6 */{ if (qsetmode == 200) /* In 3D mode */ { } else { clearmidstatbar16(); /* Clear middle of status bar */ sprintf(tempbuf,"Sprite %d",spritenum); statusbar_printext16(8,32,11,-1,tempbuf,0); }}void ExtEditSectorData(short sectnum) /* F7 */{ short nickdata; if (qsetmode == 200) /* In 3D mode */ { /* Ceiling */ if (searchstat == 1) sector[searchsector].ceilingpicnum++; /* Just a stupid example */ /* Floor */ if (searchstat == 2) sector[searchsector].floorshade++; /* Just a stupid example */ } else /* In 2D mode */ { sprintf(tempbuf,"Sector (%d) Nick's variable: ",sectnum); nickdata = 0; nickdata = getnumber16(tempbuf,nickdata,65536L); printmessage16(""); /* Clear message box (top right of status bar) */ ExtShowSectorData(sectnum); }}void ExtEditWallData(short wallnum) /* F8 */{ short nickdata; if (qsetmode == 200) /* In 3D mode */ { } else { sprintf(tempbuf,"Wall (%d) Nick's variable: ",wallnum); nickdata = 0; nickdata = getnumber16(tempbuf,nickdata,65536L); printmessage16(""); /* Clear message box (top right of status bar) */ ExtShowWallData(wallnum); }}void ExtEditSpriteData(short spritenum) /* F8 */{ short nickdata; if (qsetmode == 200) /* In 3D mode */ { } else { sprintf(tempbuf,"Sprite (%d) Nick's variable: ",spritenum); nickdata = 0; nickdata = getnumber16(tempbuf,nickdata,65536L); printmessage16(""); printmessage16(""); /* Clear message box (top right of status bar) */ ExtShowSpriteData(spritenum); }}void faketimerhandler(void){} /* Just thought you might want my getnumber16 code */#if 0int getnumber16(char namestart[80], short num, long maxnumber){ char buffer[80]; long j, k, n, danum, oldnum; danum = (long)num; oldnum = danum; while ((keystatus[0x1c] != 2) && (keystatus[0x1] == 0)) /* Enter, ESC */ { sprintf(&buffer,"%s%ld_ ",namestart,danum); printmessage16(buffer); for(j=2;j<=11;j++) /* Scan numbers 0-9 */ if (keystatus[j] > 0) { keystatus[j] = 0; k = j-1; if (k == 10) k = 0; n = (danum*10)+k; if (n < maxnumber) danum = n; } if (keystatus[0xe] > 0) /* backspace */ { danum /= 10; keystatus[0xe] = 0; } if (keystatus[0x1c] == 1) /* L. enter */ { oldnum = danum; keystatus[0x1c] = 2; asksave = 1; } } keystatus[0x1c] = 0; keystatus[0x1] = 0; return((short)oldnum);}#endif/* end of bstub.c ... */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -