Beispiel #1
0
//
// 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);
   }
}
Beispiel #2
0
//
// 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);
   }
}
Beispiel #3
0
//
// 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;
      }
   }
}