void CStatusBar::DrawAfterburner (void) { if (gameStates.app.bD1Mission) return; static int nIdAfterBurner = 0; char szAB [3] = "AB"; CCanvas::Push (); fontManager.SetScale (floor (float (CCanvas::Current ()->Width ()) / 640.0f)); CCanvas::SetCurrent (CurrentGameScreen ()); if (LOCALPLAYER.flags & PLAYER_FLAGS_AFTERBURNER) fontManager.SetColorRGBi (RGBA_PAL2 (45, 21, 0), 1, 0, 0); else fontManager.SetColorRGBi (RGBA_PAL2 (12, 12, 12), 1, 0, 0); int w, h, aw; fontManager.Current ()->StringSize (szAB, w, h, aw); nIdAfterBurner = PrintF (&nIdAfterBurner, -(ScaleX (SB_AFTERBURNER_GAUGE_X) + (ScaleX (SB_AFTERBURNER_GAUGE_W) - w) / 2), -(ScaleY (SB_AFTERBURNER_GAUGE_Y + SB_AFTERBURNER_GAUGE_H - m_info.nLineSpacing) + HeightPad ()), "AB"); fontManager.SetScale (1.0f); CCanvas::Pop (); }
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 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 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_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 ScoreTableDrawCoop () { int i, color; int sorted [MAX_NUM_NET_PLAYERS]; MultiSortKillList (); WIN (DDGRLOCK (dd_grd_curcanv)); grdCurCanv->cvFont = MEDIUM3_FONT; GrString (0x8000, LHY (10), "COOPERATIVE SUMMARY", NULL); grdCurCanv->cvFont = SMALL_FONT; MultiGetKillList (sorted); ScoreTableDrawCoopNames (sorted); for (i=0; i<gameData.multiplayer.nPlayers; i++) { color = sorted [i]; if (gameData.multiplayer.players [sorted [i]].connected==0) GrSetFontColorRGBi (GRAY_RGBA, 1, 0, 0); else GrSetFontColorRGBi (RGBA_PAL2 (playerColors [color].r, playerColors [color].g, playerColors [color].b), 1, 0, 0); ScoreTableDrawCoopItem (i, sorted); } ScoreTableDrawDeaths (sorted); WIN (DDGRUNLOCK (dd_grd_curcanv)); WINDOS ( DDGrSetCurrentCanvas (NULL), GrSetCurrentCanvas (NULL) ); PA_DFX (pa_set_frontbuffer_current ()); PA_DFX (pa_set_backbuffer_current ()); GrPaletteStepLoad (NULL); GrUpdate (0); }
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"); }
void PlayerDeadMessage (void) { if (gameStates.app.bPlayerExploded) { tHUDMessage *pMsgs = gameData.hud.msgs; if ( gameData.multi.players [gameData.multi.nLocalPlayer].lives < 2) { int x, y, w, h, aw; GrSetCurFont ( HUGE_FONT); GrGetStringSize ( TXT_GAME_OVER, &w, &h, &aw); w += 20; h += 8; x = (grdCurCanv->cv_w - w) / 2; y = (grdCurCanv->cv_h - h) / 2; NO_DFX (gameStates.render.grAlpha = 2*7); NO_DFX (GrSetColorRGB (0, 0, 0, 255)); NO_DFX (GrRect ( x, y, x+w, y+h)); gameStates.render.grAlpha = GR_ACTUAL_FADE_LEVELS; GrString (0x8000, (grdCurCanv->cv_h - grdCurCanv->cv_font->ft_h)/2 + h/8, TXT_GAME_OVER); #if 0 // Automatically exit death after 10 secs if ( gameData.time.xGame > gameStates.app.nPlayerTimeOfDeath + F1_0*10) { SetFunctionMode (FMODE_MENU); gameData.app.nGameMode = GM_GAME_OVER; longjmp ( gameExitPoint, 1); // Exit out of game loop } #endif } GrSetCurFont (GAME_FONT); if (pMsgs->nColor == -1) pMsgs->nColor = RGBA_PAL2 (0, 28, 0); GrSetFontColorRGBi (pMsgs->nColor, 1, 0, 0); GrString (0x8000, grdCurCanv->cv_h- (grdCurCanv->cv_font->ft_h+3), TXT_PRESS_ANY_KEY); } }
void CAutomap::InitColors (void) { m_colors.walls.nNormal = K_WALL_NORMAL_COLOR; m_colors.walls.nDoor = K_WALL_DOOR_COLOR; m_colors.walls.nDoorBlue = K_WALL_DOOR_BLUE; m_colors.walls.nDoorGold = K_WALL_DOOR_GOLD; m_colors.walls.nDoorRed = K_WALL_DOOR_RED; m_colors.walls.nRevealed = K_WALL_REVEALED_COLOR; m_colors.nHostage = K_HOSTAGE_COLOR; m_colors.nMonsterball = K_MONSTERBALL_COLOR; m_colors.nDkGray = RGBA_PAL2 (20,20,20); m_colors.nMedGreen = RGBA_PAL2 (0,31,0); m_colors.nWhite = RGBA_PAL2 (63,63,63); m_colors.nLgtBlue = RGBA_PAL2 (0,0,48); m_colors.nLgtRed = RGBA_PAL2 (48,0,0); }
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 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 SBDrawAfterburner (void) { int erase_height, w, h, aw; char ab_str [3] = "AB"; static int nIdAfterBurner = 0; // static int b = 1; if (gameStates.app.bD1Mission) return; // GrSetCurrentCanvas (Canv_SBAfterburnerGauge); PAGE_IN_GAUGE (SB_GAUGE_AFTERBURNER); HUDBitBlt (SB_AFTERBURNER_GAUGE_X, SB_AFTERBURNER_GAUGE_Y, gameData.pig.tex.bitmaps [0] + GET_GAUGE_INDEX (SB_GAUGE_AFTERBURNER), F1_0, 0); erase_height = FixMul ((f1_0 - gameData.physics.xAfterburnerCharge), SB_AFTERBURNER_GAUGE_H); // HUDMessage (0, "AB: %d", erase_height); if (erase_height > 0) { GrSetColorRGBi (BLACK_RGBA); glDisable (GL_BLEND); HUDRect ( SB_AFTERBURNER_GAUGE_X, SB_AFTERBURNER_GAUGE_Y, SB_AFTERBURNER_GAUGE_X+SB_AFTERBURNER_GAUGE_W-1, SB_AFTERBURNER_GAUGE_Y+erase_height-1); glEnable (GL_BLEND); } GrSetCurrentCanvas (GetCurrentGameScreen ()); //draw legend if (LOCALPLAYER.flags & PLAYER_FLAGS_AFTERBURNER) GrSetFontColorRGBi (RGBA_PAL2 (45, 0, 0), 1, 0, 0); else GrSetFontColorRGBi (RGBA_PAL2 (12, 12, 12), 1, 0, 0); GrGetStringSize (ab_str, &w, &h, &aw); nIdAfterBurner = HUDPrintF (&nIdAfterBurner, SB_AFTERBURNER_GAUGE_X + ((SB_AFTERBURNER_GAUGE_W - w)/2), SB_AFTERBURNER_GAUGE_Y+SB_AFTERBURNER_GAUGE_H-GAME_FONT->ftHeight - (GAME_FONT->ftHeight / 4), "AB"); OglFreeBmTexture (&Canv_SBAfterburnerGauge->cvBitmap); }
void SBDrawShieldNum (int shield) { static int nIdShieldNum = 0; //draw numbers GrSetCurFont (GAME_FONT); GrSetFontColorRGBi (RGBA_PAL2 (14, 14, 23), 1, 0, 0); //erase old one PIGGY_PAGE_IN (gameData.pig.tex.cockpitBmIndex [gameStates.render.cockpit.nMode + (gameStates.video.nDisplayMode? (gameData.models.nCockpits/2):0)].index, 0); HUDRect (SB_SHIELD_NUM_X, SB_SHIELD_NUM_Y, SB_SHIELD_NUM_X+ (gameStates.video.nDisplayMode?27:13), SB_SHIELD_NUM_Y+GAME_FONT->ftHeight); nIdShieldNum = HUDPrintF (&nIdShieldNum, (shield>99)?SB_SHIELD_NUM_X: ((shield>9)?SB_SHIELD_NUM_X+2:SB_SHIELD_NUM_X+4), SB_SHIELD_NUM_Y, "%d", shield); }
void CMenuItem::DrawBlackBox (int w1, int x, int y, const char* s, int bTiny) { int w, h, aw; fontManager.Current ()->StringSize (s, w, h, aw); if (bTiny) { h += 4; y -= 2; } if (w1 == 0) w1 = w; CCanvas::Current ()->SetColorRGBi (RGBA_PAL2 (2, 2, 2)); OglDrawFilledRect (x - 1, y - 1, x - 1, y + h - 1); OglDrawFilledRect (x - 1, y - 1, x + w1 - 1, y - 1); CCanvas::Current ()->SetColorRGBi (RGBA_PAL2 (5, 5, 5)); OglDrawFilledRect (x, y + h, x + w1, y + h); OglDrawFilledRect (x + w1, y - 1, x + w1, y + h); CCanvas::Current ()->SetColorRGB (0, 0, 0, 255); OglDrawFilledRect (x, y, x + w1 - 1, y + h - 1); GrString (x + 1, y + 1, s, NULL); }
void kmatrix_redraw () { int i, color; int sorted [MAX_NUM_NET_PLAYERS]; xOffs = (grdCurCanv->cv_bitmap.bm_props.w - 640) / 2; yOffs = (grdCurCanv->cv_bitmap.bm_props.h - 480) / 2; if (xOffs < 0) xOffs = 0; if (yOffs < 0) yOffs = 0; if (gameData.app.nGameMode & GM_MULTI_COOP) { kmatrix_redraw_coop (); return; } MultiSortKillList (); WIN (DDGRLOCK (dd_grd_curcanv)); grdCurCanv->cv_font = MEDIUM3_FONT; GrString (0x8000, LHY (10), TXT_KILL_MATRIX_TITLE ); grdCurCanv->cv_font = SMALL_FONT; MultiGetKillList (sorted); kmatrix_draw_names (sorted); for (i=0; i<gameData.multi.nPlayers; i++) { if (gameData.app.nGameMode & GM_TEAM) color = GetTeam (sorted [i]); else color = sorted [i]; if (gameData.multi.players [sorted [i]].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); kmatrix_draw_item (i, sorted); } kmatrix_draw_deaths (sorted); #if defined (POLY_ACC) pa_save_clut (); pa_update_clut (grPalette, 0, 256, 0); #endif PA_DFX (pa_set_frontbuffer_current ()); GrUpdate (0); PA_DFX (pa_set_backbuffer_current ()); #if defined (POLY_ACC) pa_restore_clut (); #endif WIN (DDGRUNLOCK (dd_grd_curcanv)); GrPaletteStepLoad (NULL); }
void CStatusBar::DrawAddedScore (void) { if (IsMultiGame && !IsCoopGame) return; int nScore, nTime; if (!(nScore = cockpit->AddedScore (gameStates.render.vr.nCurrentPage))) return; int x, w, h, aw, color; 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 nIdTotalScore = 0; cockpit->SetScoreTime (nTime = cockpit->ScoreTime () - gameData.time.xFrame); if (nTime > 0) { color = X2I (nTime * 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", nScore); fontManager.Current ()->StringSize (szScore, w, h, aw); x = SB_SCORE_ADDED_RIGHT - w - LHY (2); fontManager.SetColorRGBi (RGBA_PAL2 (0, color, 0), 1, 0, 0); CCanvas::Push (); CCanvas::SetCurrent (CurrentGameScreen ()); nIdTotalScore = PrintF (&nIdTotalScore, x, SB_SCORE_ADDED_Y, szScore); CCanvas::Pop (); lastX [(gameStates.video.nDisplayMode ? 2 : 0) + gameStates.render.vr.nCurrentPage] = x; } #if 1 else { //erase old score //CCanvas::Current ()->SetColorRGBi (RGB_PAL (0, 0, 0)); //OglDrawFilledRect (lastX [(gameStates.video.nDisplayMode?2:0)+gameStates.render.vr.nCurrentPage], SB_SCORE_ADDED_Y, SB_SCORE_ADDED_RIGHT, SB_SCORE_ADDED_Y+GAME_FONT->Height ()); cockpit->SetScoreTime (0); cockpit->SetAddedScore (gameStates.render.vr.nCurrentPage, 0); } #endif }
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 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)); } }
void CStatusBar::DrawEnergy (void) { static int nIdEnergy = 0; int w, h, aw; char szEnergy [20]; CCanvas::Push (); fontManager.SetScale (floor (float (CCanvas::Current ()->Width ()) / 640.0f)); CCanvas::SetCurrent (CurrentGameScreen ()); sprintf (szEnergy, "%d", m_info.nEnergy); fontManager.Current ()->StringSize (szEnergy, w, h, aw); fontManager.SetColorRGBi (RGBA_PAL2 (25, 18, 6), 1, 0, 0); nIdEnergy = PrintF (&nIdEnergy, -(ScaleX (SB_ENERGY_GAUGE_X) + (ScaleX (SB_ENERGY_GAUGE_W) - w) / 2), -(ScaleY (SB_ENERGY_GAUGE_Y + SB_ENERGY_GAUGE_H - m_info.nLineSpacing) + HeightPad ()), "%d", m_info.nEnergy); fontManager.SetScale (1.0f); CCanvas::Pop (); }
void ScoreTableRedraw () { int i, color; int sorted [MAX_NUM_NET_PLAYERS]; xOffs = (grdCurCanv->cvBitmap.bmProps.w - 640) / 2; yOffs = (grdCurCanv->cvBitmap.bmProps.h - 480) / 2; if (xOffs < 0) xOffs = 0; if (yOffs < 0) yOffs = 0; if (gameData.app.nGameMode & GM_MULTI_COOP) { ScoreTableDrawCoop (); return; } MultiSortKillList (); WIN (DDGRLOCK (dd_grd_curcanv)); grdCurCanv->cvFont = MEDIUM3_FONT; GrString (0x8000, LHY (10), TXT_KILL_MATRIX_TITLE, NULL); grdCurCanv->cvFont = SMALL_FONT; MultiGetKillList (sorted); ScoreTableDrawNames (sorted); for (i=0; i<gameData.multiplayer.nPlayers; i++) { if (gameData.app.nGameMode & GM_TEAM) color = GetTeam (sorted [i]); else color = sorted [i]; if (!gameData.multiplayer.players [sorted [i]].connected) GrSetFontColorRGBi (GRAY_RGBA, 1, 0, 0); else GrSetFontColorRGBi (RGBA_PAL2 (playerColors [color].r, playerColors [color].g, playerColors [color].b), 1, 0, 0); ScoreTableDrawItem (i, sorted); } ScoreTableDrawDeaths (sorted); PA_DFX (pa_set_frontbuffer_current ()); GrUpdate (0); PA_DFX (pa_set_backbuffer_current ()); WIN (DDGRUNLOCK (dd_grd_curcanv)); GrPaletteStepLoad (NULL); }
void SBDrawEnergyBar (int nEnergy) { int erase_height, w, h, aw; char energy_str [20]; static int nIdEnergyBar = 0; // GrSetCurrentCanvas (Canv_SBEnergyGauge); PAGE_IN_GAUGE (SB_GAUGE_ENERGY); if (gameStates.app.bD1Mission) HUDStretchBlt (SB_ENERGY_GAUGE_X, SB_ENERGY_GAUGE_Y, gameData.pig.tex.bitmaps [0] + GET_GAUGE_INDEX (SB_GAUGE_ENERGY), F1_0, 0, 1.0, (double) SB_ENERGY_GAUGE_H / (double) (SB_ENERGY_GAUGE_H - SB_AFTERBURNER_GAUGE_H)); else HUDBitBlt (SB_ENERGY_GAUGE_X, SB_ENERGY_GAUGE_Y, gameData.pig.tex.bitmaps [0] + GET_GAUGE_INDEX (SB_GAUGE_ENERGY), F1_0, 0); erase_height = (100 - nEnergy) * SB_ENERGY_GAUGE_H / 100; if (erase_height > 0) { GrSetColorRGBi (BLACK_RGBA); glDisable (GL_BLEND); HUDRect ( SB_ENERGY_GAUGE_X, SB_ENERGY_GAUGE_Y, SB_ENERGY_GAUGE_X+SB_ENERGY_GAUGE_W, SB_ENERGY_GAUGE_Y+erase_height); glEnable (GL_BLEND); } GrSetCurrentCanvas (GetCurrentGameScreen ()); //draw numbers sprintf (energy_str, "%d", nEnergy); GrGetStringSize (energy_str, &w, &h, &aw); GrSetFontColorRGBi (RGBA_PAL2 (25, 18, 6), 1, 0, 0); nIdEnergyBar = HUDPrintF (&nIdEnergyBar, SB_ENERGY_GAUGE_X + ((SB_ENERGY_GAUGE_W - w)/2), SB_ENERGY_GAUGE_Y + SB_ENERGY_GAUGE_H - GAME_FONT->ftHeight - (GAME_FONT->ftHeight / 4), "%d", nEnergy); OglFreeBmTexture (&Canv_SBEnergyGauge->cvBitmap); }
void kmatrix_redraw_coop () { int i, color; int sorted [MAX_NUM_NET_PLAYERS]; MultiSortKillList (); WIN (DDGRLOCK (dd_grd_curcanv)); grdCurCanv->cv_font = MEDIUM3_FONT; GrString (0x8000, LHY (10), "COOPERATIVE SUMMARY" ); grdCurCanv->cv_font = SMALL_FONT; MultiGetKillList (sorted); kmatrix_draw_coop_names (sorted); for (i=0; i<gameData.multi.nPlayers; i++) { color = sorted [i]; if (gameData.multi.players [sorted [i]].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); kmatrix_draw_coop_item (i, sorted); } kmatrix_draw_deaths (sorted); WIN (DDGRUNLOCK (dd_grd_curcanv)); WINDOS ( DDGrSetCurrentCanvas (NULL), GrSetCurrentCanvas (NULL) ); #if defined (POLY_ACC) pa_save_clut (); pa_update_clut (grPalette, 0, 256, 0); #endif PA_DFX (pa_set_frontbuffer_current ()); PA_DFX (pa_set_backbuffer_current ()); #if defined (POLY_ACC) pa_restore_clut (); #endif GrPaletteStepLoad (NULL); GrUpdate (0); }
void CStatusBar::DrawShield (void) { static int nIdShield = 0; int w, h, aw; char szShield [20]; CCanvas::Push (); fontManager.SetScale (floor (float (CCanvas::Current ()->Width ()) / 640.0f)); CCanvas::SetCurrent (CurrentGameScreen ()); //LoadBitmap (gameData.pig.tex.cockpitBmIndex [gameStates.render.cockpit.nType + (gameStates.video.nDisplayMode ? gameData.models.nCockpits / 2 : 0)].index, 0); fontManager.SetColorRGBi (BLACK_RGBA, 1, 0, 0); Rect (SB_SHIELD_NUM_X, SB_SHIELD_NUM_Y, SB_SHIELD_NUM_X + (gameStates.video.nDisplayMode ? 27 : 13), SB_SHIELD_NUM_Y + m_info.fontHeight); sprintf (szShield, "%d", m_info.nShields); fontManager.Current ()->StringSize (szShield, w, h, aw); fontManager.SetColorRGBi (RGBA_PAL2 (14, 14, 23), 1, 0, 0); nIdShield = PrintF (&nIdShield, -(ScaleX (SB_SHIELD_NUM_X + (gameStates.video.nDisplayMode ? 13 : 6)) - w / 2), -(ScaleY (SB_SHIELD_NUM_Y) + HeightPad ()), "%d", m_info.nShields); fontManager.SetScale (1.0f); CCanvas::Pop (); }
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 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 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 ScoreTableDrawCoop (void) { int i, color; int sorted [MAX_PLAYERS]; MultiSortKillList (); fontManager.SetCurrent (MEDIUM3_FONT); GrString (0x8000, LHY (10), "COOPERATIVE SUMMARY", NULL); fontManager.SetCurrent (SMALL_FONT); MultiGetKillList (sorted); ScoreTableDrawCoopNames (sorted); for (i=0; i<gameData.multiplayer.nPlayers; i++) { color = sorted [i]; if (gameData.multiplayer.players [sorted [i]].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); ScoreTableDrawCoopItem (i, sorted); } ScoreTableDrawDeaths (sorted); CCanvas::SetCurrent (NULL); //paletteManager.ResumeEffect (); GrUpdate (1); }