⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bstub.c

📁 小型游戏引擎
💻 C
📖 第 1 页 / 共 2 页
字号:
				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 + -