U0 DrawSliderCtrl(CDC *dc,CCtrl *c) { CSliderState *s=c->state; dc->color=LTRED; GrRect(dc, c->left,c->top,SLIDER_SPACING*3+2,SLIDER_SPACING*2+SLIDER_RANGE); dc->color=BLUE; GrRect(dc, c->left+SLIDER_BORDER,c->top+SLIDER_BORDER, SLIDER_SPACING*3+2-2*SLIDER_BORDER,SLIDER_SPACING*2+SLIDER_RANGE-2*SLIDER_BORDER); dc->color=BLACK; GrLine(dc,c->left+1*SLIDER_SPACING+0,c->top+SLIDER_SPACING, c->left+1*SLIDER_SPACING+0,c->top+SLIDER_SPACING+SLIDER_RANGE-1); GrLine(dc,c->left+2*SLIDER_SPACING+1,c->top+SLIDER_SPACING, c->left+2*SLIDER_SPACING+1,c->top+SLIDER_SPACING+SLIDER_RANGE-1); dc->color=LTRED; GrPrintF(dc,c->left+1*SLIDER_SPACING+0-FONT_WIDTH/2, c->top+SLIDER_SPACING+SLIDER_RANGE+3, "%d",s->left_pos*10/SLIDER_RANGE); GrPrintF(dc,c->left+2*SLIDER_SPACING+1-FONT_WIDTH/2, c->top+SLIDER_SPACING+SLIDER_RANGE+3, "%d",s->right_pos*10/SLIDER_RANGE); GrRect(dc,c->left+1*SLIDER_SPACING+0-3,c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->left_pos-2,7,5); GrRect(dc,c->left+2*SLIDER_SPACING+1-3,c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->right_pos-2,7,5); dc->color=YELLOW; GrRect(dc,c->left+1*SLIDER_SPACING+0-2,c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->left_pos-1,5,3); GrRect(dc,c->left+2*SLIDER_SPACING+1-2,c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->right_pos-1,5,3); }
void kmatrix_draw_names (int *sorted) { int j, x; int color; if (Kmatrix_nomovie_message) { GrSetFontColorRGBi (RED_RGBA, 1, 0, 0); GrPrintF (CENTERSCREEN-LHX (40), LHY (20), " (Movie not played)"); } for (j=0; j<gameData.multi.nPlayers; j++) { if (gameData.app.nGameMode & GM_TEAM) color = GetTeam (sorted [j]); else color = sorted [j]; x = LHX (70 + CENTERING_OFFSET (gameData.multi.nPlayers) + j*25) + xOffs; if (gameData.multi.players [sorted [j]].connected==0) GrSetFontColorRGBi (GRAY_RGBA, 1, 0, 0); else GrSetFontColorRGBi (RGBA_PAL2 (player_rgb [color].r, player_rgb [color].g, player_rgb [color].b), 1, 0, 0); GrPrintF (x, LHY (40) + yOffs, "%c", gameData.multi.players [sorted [j]].callsign [0]); } x = LHX (72 + CENTERING_OFFSET (gameData.multi.nPlayers) + gameData.multi.nPlayers*25) + xOffs; GrSetFontColorRGBi (GRAY_RGBA, 1, 0, 0); GrPrintF (x, LHY (40) + yOffs, "K/E"); }
void ScoreTableDrawNames (int *sorted) { int j, x; int color; if (gameData.score.bNoMovieMessage) { fontManager.SetColorRGBi (RED_RGBA, 1, 0, 0); GrPrintF (NULL, CENTERSCREEN-LHX (40), LHY (20), " (Movie not played)"); } for (j = 0; j<gameData.multiplayer.nPlayers; j++) { if (gameData.app.nGameMode & GM_TEAM) color = GetTeam (sorted [j]); else color = sorted [j]; x = LHX (70 + CENTERING_OFFSET (gameData.multiplayer.nPlayers) + j*25) + xOffs; if (gameData.multiplayer.players [sorted [j]].connected == 0) fontManager.SetColorRGBi (GRAY_RGBA, 1, 0, 0); else fontManager.SetColorRGBi (RGBA_PAL2 (playerColors [color].red, playerColors [color].green, playerColors [color].blue), 1, 0, 0); GrPrintF (NULL, x, LHY (40) + yOffs, "%c", gameData.multiplayer.players [sorted [j]].callsign [0]); } x = LHX (72 + CENTERING_OFFSET (gameData.multiplayer.nPlayers) + gameData.multiplayer.nPlayers*25) + xOffs; fontManager.SetColorRGBi (GRAY_RGBA, 1, 0, 0); GrPrintF (NULL, x, LHY (40) + yOffs, "K/E"); }
U0 Init(CDC *dc) { I64 i,w=Fs->win_pixel_width,h=Fs->win_pixel_height; F64 scale=h/5.0; DocClear; DCFill(dc); dc->color=BLACK; GrLine(dc,0,h/2,w-1,h/2); GrLine(dc,w/2,0,w/2,h-1); for (i=-2;i<=2;i++) { dc->color=BLACK; GrLine(dc,w/2-3,h/2-scale*i,w/2+3,h/2-scale*i); if (i) { dc->color=DKGRAY; GrPrintF(dc,w/2+5,h/2-scale*i-FONT_HEIGHT/2,"%5.1f",ToF64(i)); } } for (i=-4;i<=4;i++) { dc->color=BLACK; GrLine(dc,w/2+scale*i,h/2-3,w/2+scale*i,h/2+3); if (i) { dc->color=DKGRAY; GrPrintF(dc,w/2+scale*i-7*FONT_WIDTH/2,h/2+5+FONT_HEIGHT,"%5.1f*T",ToF64(i)); } } }
void HUDShowObjTally (void) { static int objCounts [2] = {0, 0}; static time_t t0 = -1; static int nIdTally [2] = {0, 0}; time_t t; if (!gameOpts->render.cockpit.bObjectTally) return; if (HIDE_HUD) return; if (!IsMultiGame || IsCoopGame) { int x, x0 = 0, y = 0, w, h, aw, i, bmW, bmH; char szInfo [20]; if (gameStates.render.cockpit.nMode == CM_FULL_COCKPIT) y = 3 * nHUDLineSpacing; else if (gameStates.render.cockpit.nMode == CM_STATUS_BAR) y = 2 * nHUDLineSpacing; else {//if (!SHOW_COCKPIT) { y = 2 * nHUDLineSpacing; if (gameStates.render.fonts.bHires) y += nHUDLineSpacing; } if (gameOpts->render.cockpit.bPlayerStats) y += 2 * nHUDLineSpacing; x0 = grdCurCanv->cv_w; GrSetFontColorRGBi (GREEN_RGBA, 1, 0, 0); t = gameStates.app.nSDLTicks; if (t - t0 > 333) { //update 3 times per second t0 = t; for (i = 0; i < 2; i++) objCounts [i] = ObjectCount (i ? OBJ_POWERUP : OBJ_ROBOT); } if (!gameOpts->render.cockpit.bTextGauges && (LoadObjTallyIcons () > 0)) { for (i = 0; i < 2; i++) { bmH = bmObjTally [i].bmProps.h / 2; bmW = bmObjTally [i].bmProps.w / 2; x = x0 - bmW - HUD_LHX (2); OglUBitMapMC (x, y, bmW, bmH, bmObjTally + i, NULL, F1_0, 0); sprintf (szInfo, "%d", objCounts [i]); GrGetStringSize (szInfo, &w, &h, &aw); x -= w + HUD_LHY (2); nIdTally [i] = GrPrintF (nIdTally + i, x, y + (bmH - h) / 2, szInfo); y += bmH; } } else { y = 6 + 3 * nHUDLineSpacing; for (i = 0; i < 2; i++) { sprintf (szInfo, "%s: %5d", i ? "Powerups" : "Robots", objCounts [i]); GrGetStringSize (szInfo, &w, &h, &aw); nIdTally [i] = GrPrintF (nIdTally + i, grdCurCanv->cv_w - w - HUD_LHX (2), y, szInfo); y += nHUDLineSpacing; } } } }
void ScoreTableDrawCoopNames (int *sorted) { sorted=sorted; if (gameData.score.bNoMovieMessage) { fontManager.SetColorRGBi (RED_RGBA, 1, 0, 0); GrPrintF (NULL, CENTERSCREEN-LHX (40), LHY (20), " (Movie not played)"); } fontManager.SetColorRGBi (RGBA_PAL2 (63,31,31), 1, 0, 0); GrPrintF (NULL, CENTERSCREEN, LHY (40), "SCORE"); fontManager.SetColorRGBi (RGBA_PAL2 (63,31,31), 1, 0, 0); GrPrintF (NULL, CENTERSCREEN+LHX (50), LHY (40), "DEATHS"); }
void kmatrix_draw_coop_names (int *sorted) { sorted=sorted; if (Kmatrix_nomovie_message) { GrSetFontColorRGBi (RED_RGBA, 1, 0, 0); GrPrintF (CENTERSCREEN-LHX (40), LHY (20), " (Movie not played)"); } GrSetFontColorRGBi (RGBA_PAL2 (63,31,31), 1, 0, 0); GrPrintF (CENTERSCREEN, LHY (40), "SCORE"); GrSetFontColorRGBi (RGBA_PAL2 (63,31,31), 1, 0, 0); GrPrintF (CENTERSCREEN+LHX (50), LHY (40), "DEATHS"); }
void ScoreTableDrawCoopItem (int i, int *sorted) { int x, y = LHY (50+i*9) + yOffs; // Print CPlayerData name. GrPrintF (NULL, LHX (CENTERING_OFFSET (gameData.multiplayer.nPlayers)) + xOffs, y, "%s", gameData.multiplayer.players [sorted [i]].callsign); GrPrintF (NULL, LHX (CENTERING_OFFSET (gameData.multiplayer.nPlayers)-15) + xOffs,y,"%c",szConditionLetters [gameData.multiplayer.players [sorted [i]].connected]); x = CENTERSCREEN + xOffs; fontManager.SetColorRGBi (RGBA_PAL2 (60,40,10),1, 0, 0); GrPrintF (NULL, x, y, "%d", gameData.multiplayer.players [sorted [i]].score); x = CENTERSCREEN+LHX (50) + xOffs; fontManager.SetColorRGBi (RGBA_PAL2 (60,40,10),1, 0, 0); GrPrintF (NULL, x, y, "%d", gameData.multiplayer.players [sorted [i]].netKilledTotal); }
void kmatrix_draw_coop_item (int i, int *sorted) { int x, y = LHY (50+i*9) + yOffs; // Print player name. GrPrintF (LHX (CENTERING_OFFSET (gameData.multi.nPlayers)) + xOffs, y, "%s", gameData.multi.players [sorted [i]].callsign); GrPrintF (LHX (CENTERING_OFFSET (gameData.multi.nPlayers)-15) + xOffs,y,"%c",ConditionLetters [gameData.multi.players [sorted [i]].connected]); x = CENTERSCREEN + xOffs; GrSetFontColorRGBi (RGBA_PAL2 (60,40,10),1, 0, 0); GrPrintF (x, y, "%d", gameData.multi.players [sorted [i]].score); x = CENTERSCREEN+LHX (50) + xOffs; GrSetFontColorRGBi (RGBA_PAL2 (60,40,10),1, 0, 0); GrPrintF (x, y, "%d", gameData.multi.players [sorted [i]].netKilledTotal); }
void scores_draw_item( int i, stats_info * stats ) { char buffer[20]; int y; WIN(DDGRLOCK(dd_grd_curcanv)); y = 7+70+i*9; if (i==0) y -= 8; if ( i==MAX_HIGH_SCORES ) { y += 8; //scores_rprintf( 17+33+XX, y+YY, "" ); } else { scores_rprintf( 17+33+XX, y+YY, "%d.", i+1 ); } if (strlen(stats->name)==0) { GrPrintF( LHX(26+33+XX)+xOffs, LHY(y+YY)+yOffs, TXT_EMPTY ); WIN(DDGRUNLOCK(dd_grd_curcanv)); return; } GrPrintF( LHX(26+33+XX)+xOffs, LHY(y+YY)+yOffs, "%s", stats->name ); int_to_string(stats->score, buffer); scores_rprintf( 109+33+XX, y+YY, "%s", buffer ); GrPrintF( LHX(125+33+XX)+xOffs, LHY(y+YY)+yOffs, "%s", MENU_DIFFICULTY_TEXT(stats->diff_level) ); if ( (stats->starting_level > 0 ) && (stats->ending_level > 0 )) scores_rprintf( 192+33+XX, y+YY, "%d-%d", stats->starting_level, stats->ending_level ); else if ( (stats->starting_level < 0 ) && (stats->ending_level > 0 )) scores_rprintf( 192+33+XX, y+YY, "S%d-%d", -stats->starting_level, stats->ending_level ); else if ( (stats->starting_level < 0 ) && (stats->ending_level < 0 )) scores_rprintf( 192+33+XX, y+YY, "S%d-S%d", -stats->starting_level, -stats->ending_level ); else if ( (stats->starting_level > 0 ) && (stats->ending_level < 0 )) scores_rprintf( 192+33+XX, y+YY, "%d-S%d", stats->starting_level, -stats->ending_level ); { int h, m, s; h = stats->seconds/3600; s = stats->seconds%3600; m = s / 60; s = s % 60; scores_rprintf( 311-42+XX, y+YY, "%d:%02d:%02d", h, m, s ); } WIN(DDGRUNLOCK(dd_grd_curcanv)); }
//draw the icons for number of lives void CHUD::DrawLives (void) { static int nIdLives = 0; if (cockpit->Hide ()) return; if ((gameData.hud.msgs [0].nMessages > 0) && (strlen (gameData.hud.msgs [0].szMsgs [gameData.hud.msgs [0].nFirst]) > 38)) return; if (IsMultiGame) { fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); nIdLives = GrPrintF (&nIdLives, 10, 3, "%s: %d", TXT_DEATHS, LOCALPLAYER.netKilledTotal); } else if (LOCALPLAYER.lives > 1) { //m_info.nColor = WHITE_RGBA; CBitmap* bmP = BitBlt (GAUGE_LIVES, 10, 3, false, false); fontManager.SetColorRGBi (MEDGREEN_RGBA, 1, 0, 0); nIdLives = GrPrintF (&nIdLives, 10 + bmP->Width () + bmP->Width () / 2, 4, "x %d", LOCALPLAYER.lives - 1); } }
void CHUD::DrawShield (void) { if (cockpit->Hide ()) return; static int nIdShield = 0; // CCanvas::SetCurrent (&gameStates.render.vr.buffers.subRender [0]); //render off-screen if (gameOpts->render.cockpit.bTextGauges) { int y = CCanvas::Current ()->Height () - (IsMultiGame ? 6 : 2) * m_info.nLineSpacing; fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); nIdShield = GrPrintF (&nIdShield, 2, y, "%s: %i", TXT_SHIELD, m_info.nShields); } }
void kmatrix_draw_deaths (int *sorted) { int y,x; int sw, sh, aw; char reactor_message [50]; y = LHY (55 + 72 + 35) + yOffs; x = LHX (35) + xOffs; GrSetFontColorRGBi (RGBA_PAL2 (63,20,0), 1, 0, 0); GrGetStringSize ("P-Playing E-Escaped D-Died", &sw, &sh, &aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (CENTERSCREEN- (sw/2), y,"P-Playing E-Escaped D-Died"); y+= (sh+5); GrGetStringSize ("V-Viewing scores W-Waiting", &sw, &sh, &aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (CENTERSCREEN- (sw/2), y,"V-Viewing scores W-Waiting"); y+=LHY (20); GrSetFontColorRGBi (WHITE_RGBA, 1, 0, 0); if (gameData.multi.players [gameData.multi.nLocalPlayer].connected==7) { GrGetStringSize ("Waiting for other players...",&sw, &sh, &aw); GrPrintF (CENTERSCREEN- (sw/2), y,"Waiting for other players..."); } else { GrGetStringSize (TXT_PRESS_ANY_KEY2, &sw, &sh, &aw); GrPrintF (CENTERSCREEN- (sw/2), y, TXT_PRESS_ANY_KEY2); } if (gameData.reactor.countdown.nSecsLeft <=0) kmatrix_reactor (TXT_REACTOR_EXPLODED); else { sprintf ((char *)&reactor_message, "%s: %d %s ", TXT_TIME_REMAINING, gameData.reactor.countdown.nSecsLeft, TXT_SECONDS); kmatrix_reactor ((char *)&reactor_message); } if (gameData.app.nGameMode & (GM_HOARD | GM_ENTROPY)) kmatrix_phallic (); }
void ScoreTableDrawDeaths (int *sorted) { int y,x; int sw, sh, aw; char reactor_message [50]; y = LHY (55 + 72 + 35) + yOffs; x = LHX (35) + xOffs; fontManager.SetColorRGBi (RGBA_PAL2 (63,20,0), 1, 0, 0); fontManager.Current ()->StringSize ("P-Playing E-Escaped D-Died", sw, sh, aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (NULL, CENTERSCREEN- (sw/2), y,"P-Playing E-Escaped D-Died"); y+= (sh+5); fontManager.Current ()->StringSize ("V-Viewing scores W-Waiting", sw, sh, aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (NULL, CENTERSCREEN- (sw/2), y,"V-Viewing scores W-Waiting"); y+=LHY (20); fontManager.SetColorRGBi (WHITE_RGBA, 1, 0, 0); if (LOCALPLAYER.connected==7) { fontManager.Current ()->StringSize ("Waiting for other players...",sw, sh, aw); GrPrintF (NULL, CENTERSCREEN- (sw/2), y,"Waiting for other players..."); } else { fontManager.Current ()->StringSize (TXT_PRESS_ANY_KEY2, sw, sh, aw); GrPrintF (NULL, CENTERSCREEN- (sw/2), y, TXT_PRESS_ANY_KEY2); } if (gameData.reactor.countdown.nSecsLeft <=0) ScoreTableReactor (TXT_REACTOR_EXPLODED); else { sprintf (reinterpret_cast<char*> (&reactor_message), "%s: %d %s ", TXT_TIME_REMAINING, gameData.reactor.countdown.nSecsLeft, TXT_SECONDS); ScoreTableReactor (reinterpret_cast<char*> (&reactor_message)); } if (gameData.app.nGameMode & (GM_HOARD | GM_ENTROPY)) ScoreTablePhallic (); }
void CHUD::DrawAfterburner (void) { if (cockpit->Hide ()) return; int h, y; static int nIdAfterBurner = 0; if (!(LOCALPLAYER.flags & PLAYER_FLAGS_AFTERBURNER)) return; //don't draw if don't have h = FixMul (gameData.physics.xAfterburnerCharge, 100); if (gameOpts->render.cockpit.bTextGauges) { y = CCanvas::Current ()->Height () - (IsMultiGame ? 8 : 3) * m_info.nLineSpacing; fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); nIdAfterBurner = GrPrintF (&nIdAfterBurner, 2, y, TXT_HUD_BURN, h); } }
void ScoreTableReactor (const char *message) { static char oldmessage [50]={0}; int sw, sh, aw; if ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL)) return; fontManager.SetCurrent (SMALL_FONT); if (oldmessage [0]!=0) { fontManager.SetColorRGBi (RGBA_PAL2 (0, 1, 0), 1, 0, 0); fontManager.Current ()->StringSize (oldmessage, sw, sh, aw); } fontManager.SetColorRGBi (RGBA_PAL2 (0, 32, 63), 1, 0, 0); fontManager.Current ()->StringSize (message, sw, sh, aw); GrPrintF (NULL, CENTERSCREEN- (sw/2), LHY (55+72+12), message); strcpy (reinterpret_cast<char*> (&oldmessage), message); }
void ScoreTableReactor (char *message) { static char oldmessage [50]={0}; int sw, sh, aw; if ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL)) return; grdCurCanv->cvFont = SMALL_FONT; if (oldmessage [0]!=0) { GrSetFontColorRGBi (RGBA_PAL2 (0, 1, 0), 1, 0, 0); GrGetStringSize (oldmessage, &sw, &sh, &aw); } GrSetFontColorRGBi (RGBA_PAL2 (0, 32, 63), 1, 0, 0); GrGetStringSize (message, &sw, &sh, &aw); GrPrintF (NULL, CENTERSCREEN- (sw/2), LHY (55+72+12), message); strcpy ((char *)&oldmessage,message); }
void ScoreTablePhallic (void) { int sw, sh, aw; char message [80]; if (! (gameData.app.nGameMode & GM_HOARD)) return; if ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL)) return; if (gameData.score.nPhallicMan==-1) strcpy (message,TXT_NO_RECORD); else sprintf (message, TXT_BEST_RECORD, gameData.multiplayer.players [gameData.score.nPhallicMan].callsign,gameData.score.nPhallicLimit); fontManager.SetCurrent (SMALL_FONT); fontManager.SetColorRGBi (WHITE_RGBA, 1, 0, 0); fontManager.Current ()->StringSize (message, sw, sh, aw); GrPrintF (NULL, CENTERSCREEN- (sw/2), LHY (55+72+3), message); }
void kmatrix_phallic () { int sw, sh, aw; char message [80]; if (! (gameData.app.nGameMode & GM_HOARD)) return; if ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL)) return; if (PhallicMan==-1) strcpy (message,TXT_NO_RECORD); else sprintf (message, TXT_BEST_RECORD, gameData.multi.players [PhallicMan].callsign,PhallicLimit); grdCurCanv->cv_font = SMALL_FONT; GrSetFontColorRGBi (WHITE_RGBA, 1, 0, 0); GrGetStringSize (message, &sw, &sh, &aw); GrPrintF (CENTERSCREEN- (sw/2), LHY (55+72+3), message); }
void SBShowScoreAdded (void) { int x, w, h, aw, color, frc = 0; char szScore [32]; static int lastX [4]={SB_SCORE_RIGHT_L, SB_SCORE_RIGHT_L, SB_SCORE_RIGHT_H, SB_SCORE_RIGHT_H}; static int last_score_display [2] = {-1, -1}; static int nIdTotalScore = 0; if (IsMultiGame && !IsCoopGame) return; if (scoreDisplay [gameStates.render.vr.nCurrentPage] == 0) return; GrSetCurFont (GAME_FONT); scoreTime -= gameData.time.xFrame; if (scoreTime > 0) { if (scoreDisplay [gameStates.render.vr.nCurrentPage] != last_score_display [gameStates.render.vr.nCurrentPage] || frc) { GrSetColorRGBi (RGBA_PAL (0, 0, 0)); GrRect (lastX [(gameStates.video.nDisplayMode?2:0)+gameStates.render.vr.nCurrentPage], SB_SCORE_ADDED_Y, SB_SCORE_ADDED_RIGHT, SB_SCORE_ADDED_Y+GAME_FONT->ftHeight); last_score_display [gameStates.render.vr.nCurrentPage] = scoreDisplay [gameStates.render.vr.nCurrentPage]; } color = f2i (scoreTime * 20) + 10; if (color < 10) color = 10; else if (color > 31) color = 31; if (gameStates.app.cheats.bEnabled) sprintf (szScore, "%s", TXT_CHEATER); else sprintf (szScore, "%5d", scoreDisplay [gameStates.render.vr.nCurrentPage]); GrGetStringSize (szScore, &w, &h, &aw); x = SB_SCORE_ADDED_RIGHT-w-HUD_LHX (2); GrSetFontColorRGBi (RGBA_PAL2 (0, color, 0), 1, 0, 0); nIdTotalScore = GrPrintF (&nIdTotalScore, x, SB_SCORE_ADDED_Y, szScore); lastX [(gameStates.video.nDisplayMode?2:0)+gameStates.render.vr.nCurrentPage] = x; } else { //erase old score GrSetColorRGBi (RGBA_PAL (0, 0, 0)); GrRect (lastX [(gameStates.video.nDisplayMode?2:0)+gameStates.render.vr.nCurrentPage], SB_SCORE_ADDED_Y, SB_SCORE_ADDED_RIGHT, SB_SCORE_ADDED_Y+GAME_FONT->ftHeight); scoreTime = 0; scoreDisplay [gameStates.render.vr.nCurrentPage] = 0; } }
void CHUD::DrawScore (void) { if (cockpit->Hide ()) return; char szScore [40]; int w, h, aw; if ((gameData.hud.msgs [0].nMessages > 0) && (strlen (gameData.hud.msgs [0].szMsgs [gameData.hud.msgs [0].nFirst]) > 38)) return; if ((IsMultiGame && !IsCoopGame)) sprintf (szScore, " %s: %5d", TXT_KILLS, LOCALPLAYER.netKillsTotal); else sprintf (szScore, " %s: %5d", TXT_SCORE, LOCALPLAYER.score); fontManager.Current ()->StringSize (szScore, w, h, aw); fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); GrPrintF (NULL, CCanvas::Current ()->Width () - w - LHX (2), 3, szScore); }
void ScoreTableDrawItem (int i, int *sorted) { int j, x, y; char temp [10]; y = LHY (50+i*9) + yOffs; // Print CPlayerData name. GrPrintF (NULL, LHX (CENTERING_OFFSET (gameData.multiplayer.nPlayers)) + xOffs, y, "%s", gameData.multiplayer.players [sorted [i]].callsign); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (NULL, LHX (CENTERING_OFFSET (gameData.multiplayer.nPlayers)-15),y,"%c",szConditionLetters [gameData.multiplayer.players [sorted [i]].connected]); for (j=0; j<gameData.multiplayer.nPlayers; j++) { x = LHX (70 + CENTERING_OFFSET (gameData.multiplayer.nPlayers) + j*25) + xOffs; if (sorted [i]==sorted [j]) { if (gameData.multigame.kills.matrix [sorted [i]][sorted [j]] == 0) { fontManager.SetColorRGBi (RGBA_PAL2 (10,10,10), 1, 0, 0); GrPrintF (NULL, x, y, "%d", gameData.multigame.kills.matrix [sorted [i]][sorted [j]]); } else { fontManager.SetColorRGBi (RGBA_PAL2 (25,25,25), 1, 0, 0); GrPrintF (NULL, x, y, "-%d", gameData.multigame.kills.matrix [sorted [i]][sorted [j]]); } } else { if (gameData.multigame.kills.matrix [sorted [i]][sorted [j]] <= 0) { fontManager.SetColorRGBi (RGBA_PAL2 (10,10,10), 1, 0, 0); GrPrintF (NULL, x, y, "%d", gameData.multigame.kills.matrix [sorted [i]][sorted [j]]); } else { fontManager.SetColorRGBi (RGBA_PAL2 (25,25,25), 1, 0, 0); GrPrintF (NULL, x, y, "%d", gameData.multigame.kills.matrix [sorted [i]][sorted [j]]); } } } if (gameData.multiplayer.players [sorted [i]].netKilledTotal + gameData.multiplayer.players [sorted [i]].netKillsTotal==0) sprintf (temp,"N/A"); else sprintf (temp,"%d%%", (int) ((double) ((double)gameData.multiplayer.players [sorted [i]].netKillsTotal/ ((double)gameData.multiplayer.players [sorted [i]].netKilledTotal+ (double)gameData.multiplayer.players [sorted [i]].netKillsTotal))*100.0)); x = LHX (60 + CENTERING_OFFSET (gameData.multiplayer.nPlayers) + gameData.multiplayer.nPlayers*25) + xOffs; fontManager.SetColorRGBi (RGBA_PAL2 (25,25,25),1, 0, 0); GrPrintF (NULL, x ,y,"%4d/%s",gameData.multiplayer.players [sorted [i]].netKillsTotal,temp); }
void CHUD::DrawInvul (void) { if (cockpit->Hide ()) return; static int nIdInvul = 0; if ((LOCALPLAYER.flags & PLAYER_FLAGS_INVULNERABLE) && (((LOCALPLAYER.invulnerableTime + INVULNERABLE_TIME_MAX - gameData.time.xGame) > I2X (4)) || (gameData.time.xGame & 0x8000))) { int y = CCanvas::Current ()->Height (); if (IsMultiGame) y -= 10 * m_info.nLineSpacing; else y -= 5 * m_info.nLineSpacing; if ((LOCALPLAYER.flags & PLAYER_FLAGS_AFTERBURNER) && !gameOpts->render.cockpit.bTextGauges) y -= m_info.nLineSpacing + gameStates.render.fonts.bHires + 1; fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); nIdInvul = GrPrintF (&nIdInvul, 2, y, "%s", TXT_INVULNERABLE); } }
void CHUD::DrawCloak (void) { if (cockpit->Hide ()) return; static int nIdCloak = 0; if ((LOCALPLAYER.flags & PLAYER_FLAGS_CLOAKED) && ((LOCALPLAYER.cloakTime + CLOAK_TIME_MAX - gameData.time.xGame > I2X (3)) || (gameData.time.xGame & 0x8000))) { int y = CCanvas::Current ()->Height (); if (IsMultiGame) y -= 7 * m_info.nLineSpacing; else y -= 4 * m_info.nLineSpacing; if ((LOCALPLAYER.flags & PLAYER_FLAGS_AFTERBURNER) && !gameOpts->render.cockpit.bTextGauges) y -= m_info.nLineSpacing + gameStates.render.fonts.bHires + 1; fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); nIdCloak = GrPrintF (&nIdCloak, 2, y, "%s", TXT_CLOAKED); } }
void CHUD::DrawHomingWarning (void) { if (cockpit->Hide ()) return; static int nIdLock = 0; if ((LOCALPLAYER.homingObjectDist >= 0) && (gameData.time.xGame & 0x4000)) { int x = 0x8000, y = CCanvas::Current ()->Height () - m_info.nLineSpacing; if ((hudIcons.Visible () && (extraGameInfo [0].nWeaponIcons == 2)) || (hudIcons.Inventory () && (extraGameInfo [0].nWeaponIcons & 1))) y -= LHY (20); if ((m_info.weaponBoxUser [0] != WBU_WEAPON) || (m_info.weaponBoxUser [1] != WBU_WEAPON)) { int wy = (m_info.weaponBoxUser [0] != WBU_WEAPON) ? SW_y [0] : SW_y [1]; y = min (y, (wy - m_info.nLineSpacing - gameData.render.window.y)); } fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); nIdLock = GrPrintF (&nIdLock, x, y, TXT_LOCK); } }
void CMessageBox::Render (const char* pszTitle, const char* pszSubTitle, CCanvas* gameCanvasP) { static int t0 = 0; if (!MenuRenderTimeout (t0, -1)) return; CCanvas::SetCurrent (&gameStates.render.vr.buffers.screenPages [gameStates.render.vr.nCurrentPage]); #if 0 if (!gameStates.app.bGameRunning) ogl.SetDrawBuffer (GL_FRONT, 0); #endif CCanvas::SetCurrent (backgroundManager.Canvas (1)); FadeIn (); backgroundManager.Redraw (); fontManager.SetColorRGBi (DKGRAY_RGBA, 1, 0, 0); fontManager.SetCurrent (MEDIUM1_FONT); GrPrintF (NULL, 0x8000, BOX_BORDER / 2, m_pszMsg); //(h / 2 + BOX_BORDER) / 2 GrUpdate (0); if (!gameStates.app.bGameRunning) ogl.SetDrawBuffer (m_nDrawBuffer, 0); gameStates.render.grAlpha = 1.0f; }
void CHUD::DrawEnergy (void) { if (cockpit->Hide ()) return; int h, y; static int nIdEnergy = 0; h = LOCALPLAYER.energy ? X2IR (LOCALPLAYER.energy) : 0; if (gameOpts->render.cockpit.bTextGauges) { y = CCanvas::Current ()->Height () - (IsMultiGame ? 5 : 1) * m_info.nLineSpacing; fontManager.SetColorRGBi (GREEN_RGBA, 1, 0, 0); nIdEnergy = GrPrintF (&nIdEnergy, 2, y, "%s: %i", TXT_ENERGY, h); } if (gameData.demo.nState == ND_STATE_RECORDING) { int energy = X2IR (LOCALPLAYER.energy); if (energy != m_history [gameStates.render.vr.nCurrentPage].energy) { NDRecordPlayerEnergy (m_history [gameStates.render.vr.nCurrentPage].energy, energy); m_history [gameStates.render.vr.nCurrentPage].energy = energy; } } }
void CHUD::DrawAddedScore (void) { if (cockpit->Hide ()) return; int color; int w, h, aw, nScore, nTime; char szScore [20]; static int nIdTotalScore = 0; if (IsMultiGame && !IsCoopGame) return; if (!(nScore = cockpit->AddedScore ())) return; cockpit->SetScoreTime (nTime = cockpit->ScoreTime () - gameData.time.xFrame); if (nTime > 0) { color = X2I (nTime * 20) + 12; if (color < 10) color = 12; else if (color > 31) color = 30; color = color - (color % 4); // Only allowing colors 12, 16, 20, 24, 28 speeds up gr_getcolor, improves caching if (gameStates.app.cheats.bEnabled) sprintf (szScore, "%s", TXT_CHEATER); else sprintf (szScore, "%5d", nScore); fontManager.Current ()->StringSize (szScore, w, h, aw); fontManager.SetColorRGBi (RGBA_PAL2 (0, color, 0), 1, 0, 0); nIdTotalScore = GrPrintF (&nIdTotalScore, CCanvas::Current ()->Width () - w - LHX (12), m_info.nLineSpacing + 4, szScore); } else { cockpit->SetScoreTime (0); cockpit->SetAddedScore (0, 0); } }
void kmatrix_draw_coop_deaths (int *sorted) { int j, x, y; int sw, sh, aw; char reactor_message [50]; y = LHY (55 + gameData.multi.nPlayers * 9) + yOffs; // GrSetFontColor (gr_getcolor (player_rgb [j].r,player_rgb [j].g,player_rgb [j].b),-1); GrSetFontColorRGBi (GRAY_RGBA, 1, 0, 0); x = CENTERSCREEN+LHX (50) + xOffs; GrPrintF (x, y, TXT_DEATHS); for (j=0; j<gameData.multi.nPlayers; j++) { x = CENTERSCREEN+LHX (50) + xOffs; GrPrintF (x, y, "%d", gameData.multi.players [sorted [j]].netKilledTotal); } y = LHY (55 + 72 + 35) + yOffs; x = LHX (35) + xOffs; GrSetFontColorRGBi (RGBA_PAL2 (63,20,0), 1, 0, 0); GrGetStringSize ("P-Playing E-Escaped D-Died", &sw, &sh, &aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (CENTERSCREEN- (sw/2), y,"P-Playing E-Escaped D-Died"); y += (sh+5); GrGetStringSize ("V-Viewing scores W-Waiting", &sw, &sh, &aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (CENTERSCREEN- (sw/2), y,"V-Viewing scores W-Waiting"); y+=LHY (20); GrSetFontColorRGBi (WHITE_RGBA, 1, 0, 0); if (gameData.multi.players [gameData.multi.nLocalPlayer].connected==7) { GrGetStringSize ("Waiting for other players...",&sw, &sh, &aw); GrPrintF (CENTERSCREEN- (sw/2), y,"Waiting for other players..."); } else { GrGetStringSize (TXT_PRESS_ANY_KEY2, &sw, &sh, &aw); GrPrintF (CENTERSCREEN- (sw/2), y, TXT_PRESS_ANY_KEY2); } if (gameData.reactor.countdown.nSecsLeft <=0) kmatrix_reactor (TXT_REACTOR_EXPLODED); else { sprintf ((char *)&reactor_message, "%s: %d %s ", TXT_TIME_REMAINING, gameData.reactor.countdown.nSecsLeft, TXT_SECONDS); kmatrix_reactor ((char *)&reactor_message); } }
void ScoreTableDrawCoopDeaths (int *sorted) { int j, x, y; int sw, sh, aw; char reactor_message [50]; y = LHY (55 + gameData.multiplayer.nPlayers * 9) + yOffs; // fontManager.SetColor (gr_getcolor (playerColors [j].r,playerColors [j].g,playerColors [j].b),-1); fontManager.SetColorRGBi (GRAY_RGBA, 1, 0, 0); x = CENTERSCREEN+LHX (50) + xOffs; GrPrintF (NULL, x, y, TXT_DEATHS); for (j=0; j<gameData.multiplayer.nPlayers; j++) { x = CENTERSCREEN+LHX (50) + xOffs; GrPrintF (NULL, x, y, "%d", gameData.multiplayer.players [sorted [j]].netKilledTotal); } y = LHY (55 + 72 + 35) + yOffs; x = LHX (35) + xOffs; fontManager.SetColorRGBi (RGBA_PAL2 (63,20,0), 1, 0, 0); fontManager.Current ()->StringSize ("P-Playing E-Escaped D-Died", sw, sh, aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (NULL, CENTERSCREEN- (sw/2), y,"P-Playing E-Escaped D-Died"); y += (sh+5); fontManager.Current ()->StringSize ("V-Viewing scores W-Waiting", sw, sh, aw); if (! ((gameData.app.nGameMode & GM_MODEM) || (gameData.app.nGameMode & GM_SERIAL))) GrPrintF (NULL, CENTERSCREEN- (sw/2), y,"V-Viewing scores W-Waiting"); y+=LHY (20); fontManager.SetColorRGBi (WHITE_RGBA, 1, 0, 0); if (LOCALPLAYER.connected==7) { fontManager.Current ()->StringSize ("Waiting for other players...",sw, sh, aw); GrPrintF (NULL, CENTERSCREEN- (sw/2), y,"Waiting for other players..."); } else { fontManager.Current ()->StringSize (TXT_PRESS_ANY_KEY2, sw, sh, aw); GrPrintF (NULL, CENTERSCREEN- (sw/2), y, TXT_PRESS_ANY_KEY2); } if (gameData.reactor.countdown.nSecsLeft <=0) ScoreTableReactor (TXT_REACTOR_EXPLODED); else { sprintf (reinterpret_cast<char*> (&reactor_message), "%s: %d %s ", TXT_TIME_REMAINING, gameData.reactor.countdown.nSecsLeft, TXT_SECONDS); ScoreTableReactor (reinterpret_cast<char*> (&reactor_message)); } }