// // HI_drawGoing // // Drawer function for the final intermission stage where the // "now entering" is shown, and a pointer blinks at the next // stage on the map. // static void HI_drawGoing() { int i, previous; if(gameepisode > 3 && estrempty(hi_wbs.li_nextenterpic)) return; HI_drawNewLevelName(10); // don't proceed by drawing the location indicators if using "enterpic". // Keep them for a more advanced scripting. if(estrnonempty(hi_wbs.li_nextenterpic)) return; previous = hi_wbs.last; // handle secret level if(previous == 8) { previous = hi_wbs.next - 1; } // draw patches on levels visited for(i = 0; i <= previous; i++) { V_DrawPatch(hipoints[hi_wbs.epsd][i].x, hipoints[hi_wbs.epsd][i].y, &subscreen43, hi_in_x); } // draw patch on secret level if(hi_wbs.didsecret) { V_DrawPatch(hipoints[hi_wbs.epsd][8].x, hipoints[hi_wbs.epsd][8].y, &subscreen43, hi_in_x); } // blink destination arrow if(flashtime) { V_DrawPatch(hipoints[hi_wbs.epsd][hi_wbs.next].x, hipoints[hi_wbs.epsd][hi_wbs.next].y, &subscreen43, hi_in_yah); } }
// // HI_drawGoing // // Drawer function for the final intermission stage where the // "now entering" is shown, and a pointer blinks at the next // stage on the map. // static void HI_drawGoing(void) { int i, previous; if(gameepisode > 3) return; HI_drawNewLevelName(10); previous = hi_wbs.last; // handle secret level if(previous == 8) { previous = hi_wbs.next - 1; } // draw patches on levels visited for(i = 0; i <= previous; i++) { V_DrawPatch(hipoints[hi_wbs.epsd][i].x, hipoints[hi_wbs.epsd][i].y, &subscreen43, hi_in_x); } // draw patch on secret level if(hi_wbs.didsecret) { V_DrawPatch(hipoints[hi_wbs.epsd][8].x, hipoints[hi_wbs.epsd][8].y, &subscreen43, hi_in_x); } // blink destination arrow if(flashtime) { V_DrawPatch(hipoints[hi_wbs.epsd][hi_wbs.next].x, hipoints[hi_wbs.epsd][hi_wbs.next].y, &subscreen43, hi_in_yah); } }
// // HI_drawSingleStats // // Drawer function for single-player mode stats stage. // Shows kills, items, secrets, and either time or the next // level name (depending on whether we're in a SOSR episode // or not). Note Heretic has no par times. // static void HI_drawSingleStats(void) { static int statstage = 0; V_FontWriteTextShadowed(in_bigfont, HIS_KILLS, 50, 65, &subscreen43); V_FontWriteTextShadowed(in_bigfont, HIS_ITEMS, 50, 90, &subscreen43); V_FontWriteTextShadowed(in_bigfont, HIS_SECRETS, 50, 115, &subscreen43); HI_drawOldLevelName(3); // prior to tic 30: draw nothing if(intertime < 30) { statstage = 0; return; } // tics 30 to 60: add kill count if(intertime > 30) { if(statstage == 0) { S_StartInterfaceSound(sfx_hdorcls); statstage = 1; } HI_drawLevelStat(players[consoleplayer].killcount, hi_wbs.maxkills, 200, 65); } // tics 60 to 90: add item count if(intertime > 60) { if(statstage == 1) { S_StartInterfaceSound(sfx_hdorcls); statstage = 2; } HI_drawLevelStat(players[consoleplayer].itemcount, hi_wbs.maxitems, 200, 90); } // tics 90 to 150: add secret count if(intertime > 90) { if(statstage == 2) { S_StartInterfaceSound(sfx_hdorcls); statstage = 3; } HI_drawLevelStat(players[consoleplayer].secretcount, hi_wbs.maxsecret, 200, 115); } // 150 to end: show time or next level name // Note that hitting space earlier than 150 sets the ticker to // 150 so that we jump here. if(intertime > 150) { if(statstage == 3) { S_StartInterfaceSound(sfx_hdorcls); statstage = 4; } if(gameepisode < 4 || estrnonempty(hi_wbs.li_nextenterpic)) { int time, hours, minutes, seconds; time = hi_wbs.plyr[consoleplayer].stime / TICRATE; hours = time / 3600; time -= hours * 3600; minutes = time / 60; time -= minutes * 60; seconds = time; V_FontWriteTextShadowed(in_bigfont, HIS_TIME, 85, 160, &subscreen43); HI_drawTime(hours, minutes, seconds, 155, 160); } else { HI_drawNewLevelName(160); acceleratestage = false; } } }