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

📄 wi_stuff.c

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 C
📖 第 1 页 / 共 3 页
字号:
	{	    S_StartSound(0, sfx_pldeth);	    ng_state++;	}    }    else if (ng_state == 10)    {	if (acceleratestage)	{	    S_StartSound(0, sfx_sgcock);	    if ( gamemode == commercial )		WI_initNoState();	    else		WI_initShowNextLoc();	}    }    else if (ng_state & 1)    {	if (!--cnt_pause)	{	    ng_state++;	    cnt_pause = TICRATE;	}    }}void WI_drawNetgameStats(void){    int		i;    int		x;    int		y;    int		pwidth = SHORT(percent->width);    WI_slamBackground();        // draw animated background    WI_drawAnimatedBack();     WI_drawLF();    // draw stat titles (top line)    V_DrawPatch(NG_STATSX+NG_SPACINGX-SHORT(kills->width),		NG_STATSY, FB, kills);    V_DrawPatch(NG_STATSX+2*NG_SPACINGX-SHORT(items->width),		NG_STATSY, FB, items);    V_DrawPatch(NG_STATSX+3*NG_SPACINGX-SHORT(secret->width),		NG_STATSY, FB, secret);        if (dofrags)	V_DrawPatch(NG_STATSX+4*NG_SPACINGX-SHORT(frags->width),		    NG_STATSY, FB, frags);    // draw stats    y = NG_STATSY + SHORT(kills->height);    for (i=0 ; i<MAXPLAYERS ; i++)    {	if (!playeringame[i])	    continue;	x = NG_STATSX;	V_DrawPatch(x-SHORT(p[i]->width), y, FB, p[i]);	if (i == me)	    V_DrawPatch(x-SHORT(p[i]->width), y, FB, star);	x += NG_SPACINGX;	WI_drawPercent(x-pwidth, y+10, cnt_kills[i]);	x += NG_SPACINGX;	WI_drawPercent(x-pwidth, y+10, cnt_items[i]);	x += NG_SPACINGX;	WI_drawPercent(x-pwidth, y+10, cnt_secret[i]);	x += NG_SPACINGX;	if (dofrags)	    WI_drawNum(x, y+10, cnt_frags[i], -1);	y += WI_SPACINGY;    }}static int	sp_state;void WI_initStats(void){    state = StatCount;    acceleratestage = 0;    sp_state = 1;    cnt_kills[0] = cnt_items[0] = cnt_secret[0] = -1;    cnt_time = cnt_par = -1;    cnt_pause = TICRATE;    WI_initAnimatedBack();}void WI_updateStats(void){    WI_updateAnimatedBack();    if (acceleratestage && sp_state != 10)    {	acceleratestage = 0;	cnt_kills[0] = (plrs[me].skills * 100) / wbs->maxkills;	cnt_items[0] = (plrs[me].sitems * 100) / wbs->maxitems;	cnt_secret[0] = (plrs[me].ssecret * 100) / wbs->maxsecret;	cnt_time = plrs[me].stime / TICRATE;	cnt_par = wbs->partime / TICRATE;	S_StartSound(0, sfx_barexp);	sp_state = 10;    }    if (sp_state == 2)    {	cnt_kills[0] += 2;	if (!(bcnt&3))	    S_StartSound(0, sfx_pistol);	if (cnt_kills[0] >= (plrs[me].skills * 100) / wbs->maxkills)	{	    cnt_kills[0] = (plrs[me].skills * 100) / wbs->maxkills;	    S_StartSound(0, sfx_barexp);	    sp_state++;	}    }    else if (sp_state == 4)    {	cnt_items[0] += 2;	if (!(bcnt&3))	    S_StartSound(0, sfx_pistol);	if (cnt_items[0] >= (plrs[me].sitems * 100) / wbs->maxitems)	{	    cnt_items[0] = (plrs[me].sitems * 100) / wbs->maxitems;	    S_StartSound(0, sfx_barexp);	    sp_state++;	}    }    else if (sp_state == 6)    {	cnt_secret[0] += 2;	if (!(bcnt&3))	    S_StartSound(0, sfx_pistol);	if (cnt_secret[0] >= (plrs[me].ssecret * 100) / wbs->maxsecret)	{	    cnt_secret[0] = (plrs[me].ssecret * 100) / wbs->maxsecret;	    S_StartSound(0, sfx_barexp);	    sp_state++;	}    }    else if (sp_state == 8)    {	if (!(bcnt&3))	    S_StartSound(0, sfx_pistol);	cnt_time += 3;	if (cnt_time >= plrs[me].stime / TICRATE)	    cnt_time = plrs[me].stime / TICRATE;	cnt_par += 3;	if (cnt_par >= wbs->partime / TICRATE)	{	    cnt_par = wbs->partime / TICRATE;	    if (cnt_time >= plrs[me].stime / TICRATE)	    {		S_StartSound(0, sfx_barexp);		sp_state++;	    }	}    }    else if (sp_state == 10)    {	if (acceleratestage)	{	    S_StartSound(0, sfx_sgcock);	    if (gamemode == commercial)		WI_initNoState();	    else		WI_initShowNextLoc();	}    }    else if (sp_state & 1)    {	if (!--cnt_pause)	{	    sp_state++;	    cnt_pause = TICRATE;	}    }}void WI_drawStats(void){    // line height    int lh;	    lh = (3*SHORT(num[0]->height))/2;    WI_slamBackground();    // draw animated background    WI_drawAnimatedBack();        WI_drawLF();    V_DrawPatch(SP_STATSX, SP_STATSY, FB, kills);    WI_drawPercent(SCREENWIDTH - SP_STATSX, SP_STATSY, cnt_kills[0]);    V_DrawPatch(SP_STATSX, SP_STATSY+lh, FB, items);    WI_drawPercent(SCREENWIDTH - SP_STATSX, SP_STATSY+lh, cnt_items[0]);    V_DrawPatch(SP_STATSX, SP_STATSY+2*lh, FB, sp_secret);    WI_drawPercent(SCREENWIDTH - SP_STATSX, SP_STATSY+2*lh, cnt_secret[0]);    V_DrawPatch(SP_TIMEX, SP_TIMEY, FB, d_time);    WI_drawTime(SCREENWIDTH/2 - SP_TIMEX, SP_TIMEY, cnt_time);    if (wbs->epsd < 3)    {	V_DrawPatch(SCREENWIDTH/2 + SP_TIMEX, SP_TIMEY, FB, par);	WI_drawTime(SCREENWIDTH - SP_TIMEX, SP_TIMEY, cnt_par);    }}void WI_checkForAccelerate(void){    int   i;    player_t  *player;    // check for button presses to skip delays    for (i=0, player = players ; i<MAXPLAYERS ; i++, player++)    {	if (playeringame[i])	{	    if (player->cmd.buttons & BT_ATTACK)	    {		if (!player->attackdown)		    acceleratestage = 1;		player->attackdown = true;	    }	    else		player->attackdown = false;	    if (player->cmd.buttons & BT_USE)	    {		if (!player->usedown)		    acceleratestage = 1;		player->usedown = true;	    }	    else		player->usedown = false;	}    }}// Updates stuff each tickvoid WI_Ticker(void){    // counter for general background animation    bcnt++;      if (bcnt == 1)    {	// intermission music  	if ( gamemode == commercial )	  S_ChangeMusic(mus_dm2int, true);	else	  S_ChangeMusic(mus_inter, true);     }    WI_checkForAccelerate();    switch (state)    {      case StatCount:	if (deathmatch) WI_updateDeathmatchStats();	else if (netgame) WI_updateNetgameStats();	else WI_updateStats();	break;	      case ShowNextLoc:	WI_updateShowNextLoc();	break;	      case NoState:	WI_updateNoState();	break;    }}void WI_loadData(void){    int		i;    int		j;    char	name[9];    anim_t*	a;    if (gamemode == commercial)	strcpy(name, "INTERPIC");    else 	sprintf(name, "WIMAP%d", wbs->epsd);        if ( gamemode == retail )    {      if (wbs->epsd == 3)	strcpy(name,"INTERPIC");    }    // background    bg = W_CacheLumpName(name, PU_CACHE);        V_DrawPatch(0, 0, 1, bg);    // UNUSED unsigned char *pic = screens[1];    // if (gamemode == commercial)    // {    // darken the background image    // while (pic != screens[1] + SCREENHEIGHT*SCREENWIDTH)    // {    //   *pic = colormaps[256*25 + *pic];    //   pic++;    // }    //}    if (gamemode == commercial)    {	NUMCMAPS = 32;									lnames = (patch_t **) Z_Malloc(sizeof(patch_t*) * NUMCMAPS,				       PU_STATIC, 0);	for (i=0 ; i<NUMCMAPS ; i++)	{									    sprintf(name, "CWILV%2.2d", i);	    lnames[i] = W_CacheLumpName(name, PU_STATIC);	}					    }    else    {	lnames = (patch_t **) Z_Malloc(sizeof(patch_t*) * NUMMAPS,				       PU_STATIC, 0);	for (i=0 ; i<NUMMAPS ; i++)	{	    sprintf(name, "WILV%d%d", wbs->epsd, i);	    lnames[i] = W_CacheLumpName(name, PU_STATIC);	}	// you are here	yah[0] = W_CacheLumpName("WIURH0", PU_STATIC);	// you are here (alt.)	yah[1] = W_CacheLumpName("WIURH1", PU_STATIC);	// splat	splat = W_CacheLumpName("WISPLAT", PU_STATIC); 		if (wbs->epsd < 3)	{	    for (j=0;j<NUMANIMS[wbs->epsd];j++)	    {		a = &anims[wbs->epsd][j];		for (i=0;i<a->nanims;i++)		{		    // MONDO HACK!		    if (wbs->epsd != 1 || j != 8) 		    {			// animations			sprintf(name, "WIA%d%.2d%.2d", wbs->epsd, j, i);  			a->p[i] = W_CacheLumpName(name, PU_STATIC);		    }		    else		    {			// HACK ALERT!			a->p[i] = anims[1][4].p[i]; 		    }		}	    }	}    }    // More hacks on minus sign.    wiminus = W_CacheLumpName("WIMINUS", PU_STATIC);     for (i=0;i<10;i++)    {	 // numbers 0-9	sprintf(name, "WINUM%d", i);     	num[i] = W_CacheLumpName(name, PU_STATIC);    }    // percent sign    percent = W_CacheLumpName("WIPCNT", PU_STATIC);    // "finished"    finished = W_CacheLumpName("WIF", PU_STATIC);    // "entering"    entering = W_CacheLumpName("WIENTER", PU_STATIC);    // "kills"    kills = W_CacheLumpName("WIOSTK", PU_STATIC);       // "scrt"    secret = W_CacheLumpName("WIOSTS", PU_STATIC);     // "secret"    sp_secret = W_CacheLumpName("WISCRT2", PU_STATIC);    // Yuck.     if (french)    {	// "items"	if (netgame && !deathmatch)	    items = W_CacheLumpName("WIOBJ", PU_STATIC);      	else	    items = W_CacheLumpName("WIOSTI", PU_STATIC);    } else	items = W_CacheLumpName("WIOSTI", PU_STATIC);    // "frgs"    frags = W_CacheLumpName("WIFRGS", PU_STATIC);        // ":"    colon = W_CacheLumpName("WICOLON", PU_STATIC);     // "time"    d_time = W_CacheLumpName("WITIME", PU_STATIC);       // "sucks"    sucks = W_CacheLumpName("WISUCKS", PU_STATIC);      // "par"    par = W_CacheLumpName("WIPAR", PU_STATIC);       // "killers" (vertical)    killers = W_CacheLumpName("WIKILRS", PU_STATIC);    // "victims" (horiz)    victims = W_CacheLumpName("WIVCTMS", PU_STATIC);    // "total"    total = W_CacheLumpName("WIMSTT", PU_STATIC);       // your face    star = W_CacheLumpName("STFST01", PU_STATIC);    // dead face    bstar = W_CacheLumpName("STFDEAD0", PU_STATIC);        for (i=0 ; i<MAXPLAYERS ; i++)    {	// "1,2,3,4"	sprintf(name, "STPB%d", i);      	p[i] = W_CacheLumpName(name, PU_STATIC);	// "1,2,3,4"	sprintf(name, "WIBP%d", i+1);     	bp[i] = W_CacheLumpName(name, PU_STATIC);    }}void WI_unloadData(void){    int		i;    int		j;    Z_ChangeTag(wiminus, PU_CACHE);    for (i=0 ; i<10 ; i++)	Z_ChangeTag(num[i], PU_CACHE);        if (gamemode == commercial)    {  	for (i=0 ; i<NUMCMAPS ; i++)	    Z_ChangeTag(lnames[i], PU_CACHE);    }    else    {	Z_ChangeTag(yah[0], PU_CACHE);	Z_ChangeTag(yah[1], PU_CACHE);	Z_ChangeTag(splat, PU_CACHE);	for (i=0 ; i<NUMMAPS ; i++)	    Z_ChangeTag(lnames[i], PU_CACHE);		if (wbs->epsd < 3)	{	    for (j=0;j<NUMANIMS[wbs->epsd];j++)	    {		if (wbs->epsd != 1 || j != 8)		    for (i=0;i<anims[wbs->epsd][j].nanims;i++)			Z_ChangeTag(anims[wbs->epsd][j].p[i], PU_CACHE);	    }	}    }        Z_Free(lnames);    Z_ChangeTag(percent, PU_CACHE);    Z_ChangeTag(colon, PU_CACHE);    Z_ChangeTag(finished, PU_CACHE);    Z_ChangeTag(entering, PU_CACHE);    Z_ChangeTag(kills, PU_CACHE);    Z_ChangeTag(secret, PU_CACHE);    Z_ChangeTag(sp_secret, PU_CACHE);    Z_ChangeTag(items, PU_CACHE);    Z_ChangeTag(frags, PU_CACHE);    Z_ChangeTag(d_time, PU_CACHE);    Z_ChangeTag(sucks, PU_CACHE);    Z_ChangeTag(par, PU_CACHE);    Z_ChangeTag(victims, PU_CACHE);    Z_ChangeTag(killers, PU_CACHE);    Z_ChangeTag(total, PU_CACHE);    //  Z_ChangeTag(star, PU_CACHE);    //  Z_ChangeTag(bstar, PU_CACHE);        for (i=0 ; i<MAXPLAYERS ; i++)	Z_ChangeTag(p[i], PU_CACHE);    for (i=0 ; i<MAXPLAYERS ; i++)	Z_ChangeTag(bp[i], PU_CACHE);}void WI_Drawer (void){    switch (state)    {      case StatCount:	if (deathmatch)	    WI_drawDeathmatchStats();	else if (netgame)	    WI_drawNetgameStats();	else	    WI_drawStats();	break;	      case ShowNextLoc:	WI_drawShowNextLoc();	break;	      case NoState:	WI_drawNoState();	break;    }}void WI_initVariables(wbstartstruct_t* wbstartstruct){    wbs = wbstartstruct;#ifdef RANGECHECKING    if (gamemode != commercial)    {      if ( gamemode == retail )	RNGCHECK(wbs->epsd, 0, 3);      else	RNGCHECK(wbs->epsd, 0, 2);    }    else    {	RNGCHECK(wbs->last, 0, 8);	RNGCHECK(wbs->next, 0, 8);    }    RNGCHECK(wbs->pnum, 0, MAXPLAYERS);    RNGCHECK(wbs->pnum, 0, MAXPLAYERS);#endif    acceleratestage = 0;    cnt = bcnt = 0;    firstrefresh = 1;    me = wbs->pnum;    plrs = wbs->plyr;    if (!wbs->maxkills)	wbs->maxkills = 1;    if (!wbs->maxitems)	wbs->maxitems = 1;    if (!wbs->maxsecret)	wbs->maxsecret = 1;    if ( gamemode != retail )      if (wbs->epsd > 2)	wbs->epsd -= 3;}void WI_Start(wbstartstruct_t* wbstartstruct){    WI_initVariables(wbstartstruct);    WI_loadData();    if (deathmatch)	WI_initDeathmatchStats();    else if (netgame)	WI_initNetgameStats();    else	WI_initStats();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -