void CHUD::DrawEnergyBar (void) { if (cockpit->Hide ()) return; if (!gameOpts->render.cockpit.bTextGauges) { static int bFlash = 0, bShow = 1; static time_t tToggle; time_t t; ubyte c; int h = m_info.nEnergy; int nLineSpacing = 5 * GAME_FONT->Height () / 4; if ((t = FlashGauge (h, &bFlash, (int) tToggle))) { tToggle = t; bShow = !bShow; } int y = CCanvas::Current ()->Height () - (int) (((IsMultiGame ? 5 : 1) * nLineSpacing - 1) * m_info.yGaugeScale); CCanvas::Current ()->SetColorRGB (255, 255, (ubyte) ((h > 100) ? 255 : 0), 255); glLineWidth (1); OglDrawEmptyRect (6, y, 6 + (int) (100 * m_info.xGaugeScale), y + (int) (9 * m_info.yGaugeScale)); if (bFlash) { if (!bShow) return; h = 100; } else bShow = 1; c = (h > 100) ? 224 : 224; CCanvas::Current ()->SetColorRGB (c, c, (ubyte) ((h > 100) ? c : 0), 128); OglDrawFilledRect (6, y, 6 + (int) (((h > 100) ? h - 100 : h) * m_info.xGaugeScale), y + (int) (9 * m_info.yGaugeScale)); } }
void CHUD::DrawAfterburnerBar (void) { if (cockpit->Hide ()) return; int h, y; 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 () - (int) ((((gameData.app.nGameMode & GM_MULTI) ? 8 : 3) * m_info.nLineSpacing - 1) * m_info.yGaugeScale); CCanvas::Current ()->SetColorRGB (255, 0, 0, 255); glLineWidth (1); OglDrawEmptyRect (6, y, 6 + (int) (100 * m_info.xGaugeScale), y + (int) (9 * m_info.yGaugeScale)); CCanvas::Current ()->SetColorRGB (224, 0, 0, 128); OglDrawFilledRect (6, y, 6 + (int) (h * m_info.xGaugeScale), y + (int) (9 * m_info.yGaugeScale)); } if (gameData.demo.nState == ND_STATE_RECORDING) { if (gameData.physics.xAfterburnerCharge != m_history [gameStates.render.vr.nCurrentPage].afterburner) { NDRecordPlayerAfterburner (m_history [gameStates.render.vr.nCurrentPage].afterburner, gameData.physics.xAfterburnerCharge); m_history [gameStates.render.vr.nCurrentPage].afterburner = gameData.physics.xAfterburnerCharge; } } }
void CHUD::DrawShieldBar (void) { if (cockpit->Hide ()) return; static int bShow = 1; static time_t tToggle = 0, nBeep = -1; time_t t = gameStates.app.nSDLTicks; int bLastFlash = gameStates.render.cockpit.nShieldFlash; // CCanvas::SetCurrent (&gameStates.render.vr.buffers.subRender [0]); //render off-screen if (!gameOpts->render.cockpit.bTextGauges) { int h = m_info.nShields; if ((t = FlashGauge (h, &gameStates.render.cockpit.nShieldFlash, (int) tToggle))) { tToggle = t; bShow = !bShow; } int nLineSpacing = 5 * GAME_FONT->Height () / 4; int y = CCanvas::Current ()->Height () - (int) (((IsMultiGame ? 6 : 2) * nLineSpacing - 1) * m_info.yGaugeScale); CCanvas::Current ()->SetColorRGB (0, (ubyte) ((h > 100) ? 255 : 64), 255, 255); glLineWidth (1); OglDrawEmptyRect (6, y, 6 + (int) (100 * m_info.xGaugeScale), y + (int) (9 * m_info.yGaugeScale)); if (bShow) { CCanvas::Current ()->SetColorRGB (0, (ubyte) ((h > 100) ? 224 : 64), 224, 128); OglDrawFilledRect (6, y, 6 + (int) (((h > 100) ? h - 100 : h) * m_info.xGaugeScale), y + (int) (9 * m_info.yGaugeScale)); } } if (gameStates.render.cockpit.nShieldFlash) { if (gameOpts->gameplay.bShieldWarning && gameOpts->sound.bUseSDLMixer) { if ((nBeep < 0) || (bLastFlash != gameStates.render.cockpit.nShieldFlash)) { if (nBeep >= 0) audio.StopSound ((int) nBeep); nBeep = audio.StartSound (-1, SOUNDCLASS_GENERIC, I2X (2) / 3, 0xFFFF / 2, -1, -1, -1, -1, I2X (1), AddonSoundName ((gameStates.render.cockpit.nShieldFlash == 1) ? SND_ADDON_LOW_SHIELDS1 : SND_ADDON_LOW_SHIELDS2)); } } else if (nBeep >= 0) { audio.StopSound ((int) nBeep); nBeep = -1; } } else { bShow = 1; if (nBeep >= 0) { audio.StopSound ((int) nBeep); nBeep = -1; } } }
void CBackgroundManager::DrawBox (int left, int top, int right, int bottom, int nLineWidth, float fAlpha, int bForce) { gameStates.render.nFlashScale = 0; if (bForce || (MODERN_STYLE == 1)) { if (left <= 0) left = 1; if (top <= 0) top = 1; if (right >= screen.Width ()) right = screen.Width () - 1; if (bottom >= screen.Height ()) bottom = screen.Height () - 1; CCanvas::Current ()->SetColorRGB (PAL2RGBA (22), PAL2RGBA (22), PAL2RGBA (38), (ubyte) (gameData.menu.alpha * fAlpha)); glDisable (GL_TEXTURE_2D); OglDrawFilledRect (left, top, right, bottom); CCanvas::Current ()->SetColorRGB (PAL2RGBA (22), PAL2RGBA (22), PAL2RGBA (38), 255); glLineWidth (GLfloat (nLineWidth) * GLfloat (screen.Width ()) / 640.0f); OglDrawEmptyRect (left, top, right, bottom); glLineWidth (1); } }
void CMenuItem::DrawGauge (int w, int x, int y, int val, int maxVal, int current) { int w1, h, aw; fontManager.Current ()->StringSize (" ", w1, h, aw); if (!w) w = w1 * 30; #if DBG if (val > maxVal) val = maxVal; #endif w1 = (val > maxVal) ? w : w * val / maxVal; if (w1 < w) { CCanvas::Current ()->SetColorRGB (0, 0, 0, 255); OglDrawFilledRect (x + w1 + 1, y, x + w, y + h - 2); } CCanvas::Current ()->SetColorRGB (200, 0, 0, 255); if (w1) OglDrawFilledRect (x + 1, y, x + w1, y + h - 2); glLineWidth (float (screen.Width ()) / 640.0f); OglDrawEmptyRect (x, y, x + w - 1, y + h - 1); glLineWidth (1); }
void CMovie::ShowFrame (ubyte* buf, uint bufw, uint bufh, uint sx, uint sy, uint w, uint h, uint dstx, uint dsty) { CBitmap bmFrame; bmFrame.Init (BM_LINEAR, 0, 0, bufw, bufh, 1, buf); bmFrame.SetPalette (movieManager.m_palette); TRANSPARENCY_COLOR = 0; if (gameOpts->movies.bFullScreen) { double r = (double) bufh / (double) bufw; int dh = (int) (CCanvas::Current ()->Width () * r); int yOffs = (CCanvas::Current ()->Height () - dh) / 2; ogl.SetBlending (false); bmFrame.Render (CCanvas::Current (), 0, yOffs, CCanvas::Current ()->Width (), dh, sx, sy, bufw, bufh, 1, 0, gameOpts->movies.nQuality); ogl.SetBlending (true); } else { int xOffs = (CCanvas::Current ()->Width () - 640) / 2; int yOffs = (CCanvas::Current ()->Height () - 480) / 2; if (xOffs < 0) xOffs = 0; if (yOffs < 0) yOffs = 0; dstx += xOffs; dsty += yOffs; bmFrame.Blit (CCanvas::Current (), dstx, dsty, bufw, bufh, sx, sy, 1); if ((CCanvas::Current ()->Width () > 640) || (CCanvas::Current ()->Height () > 480)) { CCanvas::Current ()->SetColorRGBi (RGB_PAL (0, 0, 32)); OglDrawEmptyRect (dstx - 1, dsty, dstx + w, dsty + h + 1); } } TRANSPARENCY_COLOR = DEFAULT_TRANSPARENCY_COLOR; bmFrame.SetBuffer (NULL); }