void CHud :: VidInit( void ) { m_scrinfo.iSize = sizeof(m_scrinfo); GetScreenInfo(&m_scrinfo); // ---------- // Load Sprites // --------- // m_hsprFont = LoadSprite("sprites/%d_font.spr"); m_hsprLogo = 0; m_hsprCursor = 0; if (ScreenWidth < 640) m_iRes = 320; else m_iRes = 640; // Only load this once if ( !m_pSpriteList ) { // we need to load the hud.txt, and all sprites within m_pSpriteList = SPR_GetList("sprites/hud.txt", &m_iSpriteCountAllRes); if (m_pSpriteList) { // count the number of sprites of the appropriate res m_iSpriteCount = 0; client_sprite_t *p = m_pSpriteList; int j; for ( j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) m_iSpriteCount++; p++; } // allocated memory for sprite handle arrays m_rghSprites = new HSPRITE[m_iSpriteCount]; m_rgrcRects = new wrect_t[m_iSpriteCount]; m_rgszSpriteNames = new char[m_iSpriteCount * MAX_SPRITE_NAME_LENGTH]; p = m_pSpriteList; int index = 0; for ( j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf(sz, "sprites/%s.spr", p->szSprite); m_rghSprites[index] = SPR_Load(sz); m_rgrcRects[index] = p->rc; strncpy( &m_rgszSpriteNames[index * MAX_SPRITE_NAME_LENGTH], p->szName, MAX_SPRITE_NAME_LENGTH ); index++; } p++; } } } else { // we have already have loaded the sprite reference from hud.txt, but // we need to make sure all the sprites have been loaded (we've gone through a transition, or loaded a save game) client_sprite_t *p = m_pSpriteList; int index = 0; for ( int j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf( sz, "sprites/%s.spr", p->szSprite ); m_rghSprites[index] = SPR_Load(sz); index++; } p++; } } // assumption: number_1, number_2, etc, are all listed and loaded sequentially m_HUD_number_0 = GetSpriteIndex( "number_0" ); m_iFontHeight = m_rgrcRects[m_HUD_number_0].bottom - m_rgrcRects[m_HUD_number_0].top; m_Ammo.VidInit(); m_Health.VidInit(); m_Spectator.VidInit(); m_Geiger.VidInit(); m_Train.VidInit(); m_Battery.VidInit(); m_Flash.VidInit(); m_Message.VidInit(); m_StatusBar.VidInit(); m_DeathNotice.VidInit(); m_SayText.VidInit(); m_Menu.VidInit(); m_AmmoSecondary.VidInit(); m_TextMessage.VidInit(); m_StatusIcons.VidInit(); m_Countdown.VidInit(); m_Crosshairs.VidInit(); m_CTF.VidInit(); m_Debug.VidInit(); m_Location.VidInit(); m_NextMap.VidInit(); m_PlayerId.VidInit(); m_Scores.VidInit(); m_Settings.VidInit(); m_Speedometer.VidInit(); m_SuddenDeath.VidInit(); m_Timeout.VidInit(); m_Timer.VidInit(); m_Vote.VidInit(); m_Watermark.VidInit(); GetClientVoiceMgr()->VidInit(); }
// creates a new particletype from the given file // NB: this changes the value of szFile. ParticleType *ParticleSystem::ParseType( char *&szFile ) { ParticleType *pType = new ParticleType(); // parse the .aur file char szToken[1024]; szFile = gEngfuncs.COM_ParseFile(szFile, szToken); while ( stricmp( szToken, "}" ) ) { if (!szFile) break; if ( !stricmp( szToken, "name" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); strncpy(pType->m_szName, szToken, sizeof(pType->m_szName) ); ParticleType *pTemp = GetType(szToken); if (pTemp) { // there's already a type with this name if (pTemp->m_bIsDefined) gEngfuncs.Con_Printf("Warning: Particle type %s is defined more than once!\n", szToken); // copy all our data into the existing type, throw away the type we were making *pTemp = *pType; delete pType; pType = pTemp; pType->m_bIsDefined = true; // record the fact that it's defined, so we won't need to add it to the list } } else if ( !stricmp( szToken, "gravity" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_Gravity = RandomRange( szToken ); } else if ( !stricmp( szToken, "windyaw" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_WindYaw = RandomRange( szToken ); } else if ( !stricmp( szToken, "windstrength" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_WindStrength = RandomRange( szToken ); } else if ( !stricmp( szToken, "sprite" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_hSprite = SPR_Load( szToken ); } else if ( !stricmp( szToken, "startalpha" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_StartAlpha = RandomRange( szToken ); } else if ( !stricmp( szToken, "endalpha" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_EndAlpha = RandomRange( szToken ); } else if ( !stricmp( szToken, "startred" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_StartRed = RandomRange( szToken ); } else if ( !stricmp( szToken, "endred" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_EndRed = RandomRange( szToken ); } else if ( !stricmp( szToken, "startgreen" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_StartGreen = RandomRange( szToken ); } else if ( !stricmp( szToken, "endgreen" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_EndGreen = RandomRange( szToken ); } else if ( !stricmp( szToken, "startblue" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_StartBlue = RandomRange( szToken ); } else if ( !stricmp( szToken, "endblue" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_EndBlue = RandomRange( szToken ); } else if ( !stricmp( szToken, "startsize" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_StartSize = RandomRange( szToken ); } else if ( !stricmp( szToken, "sizedelta" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_SizeDelta = RandomRange( szToken ); } else if ( !stricmp( szToken, "endsize" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_EndSize = RandomRange( szToken ); } else if ( !stricmp( szToken, "startangle" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_StartAngle = RandomRange( szToken ); } else if ( !stricmp( szToken, "angledelta" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_AngleDelta = RandomRange( szToken ); } else if ( !stricmp( szToken, "startframe" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_StartFrame = RandomRange( szToken ); } else if ( !stricmp( szToken, "endframe" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_EndFrame = RandomRange( szToken ); pType->m_bEndFrame = true; } else if ( !stricmp( szToken, "framerate" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_FrameRate = RandomRange( szToken ); } else if ( !stricmp( szToken, "lifetime" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_Life = RandomRange( szToken ); } else if ( !stricmp( szToken, "spraytype" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); ParticleType *pTemp = GetType(szToken); if (pTemp) pType->m_pSprayType = pTemp; else pType->m_pSprayType = AddPlaceholderType(szToken); } else if ( !stricmp( szToken, "overlaytype" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); ParticleType *pTemp = GetType(szToken); if (pTemp) pType->m_pOverlayType = pTemp; else pType->m_pOverlayType = AddPlaceholderType(szToken); } else if ( !stricmp( szToken, "sprayrate" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_SprayRate = RandomRange( szToken ); } else if ( !stricmp( szToken, "sprayforce" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_SprayForce = RandomRange( szToken ); } else if ( !stricmp( szToken, "spraypitch" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_SprayPitch = RandomRange( szToken ); } else if ( !stricmp( szToken, "sprayyaw" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_SprayYaw = RandomRange( szToken ); } else if ( !stricmp( szToken, "drag" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_Drag = RandomRange( szToken ); } else if ( !stricmp( szToken, "bounce" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_Bounce = RandomRange( szToken ); if (pType->m_Bounce.m_fMin != 0 || pType->m_Bounce.m_fMax != 0) pType->m_bBouncing = true; } else if ( !stricmp( szToken, "bouncefriction" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); pType->m_BounceFriction = RandomRange( szToken ); } else if ( !stricmp( szToken, "rendermode" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); if ( !stricmp( szToken, "additive" ) ) { pType->m_iRenderMode = kRenderTransAdd; } else if ( !stricmp( szToken, "solid" ) ) { pType->m_iRenderMode = kRenderTransAlpha; } else if ( !stricmp( szToken, "texture" ) ) { pType->m_iRenderMode = kRenderTransTexture; } else if ( !stricmp( szToken, "color" ) ) { pType->m_iRenderMode = kRenderTransColor; } } else if ( !stricmp( szToken, "drawcondition" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); if ( !stricmp( szToken, "empty" ) ) { pType->m_iDrawCond = CONTENTS_EMPTY; } else if ( !stricmp( szToken, "water" ) ) { pType->m_iDrawCond = CONTENTS_WATER; } else if ( !stricmp( szToken, "solid" ) ) { pType->m_iDrawCond = CONTENTS_SOLID; } else if ( !stricmp( szToken, "special" ) || !stricmp( szToken, "special1" ) ) { pType->m_iDrawCond = CONTENT_SPECIAL1; } else if ( !stricmp( szToken, "special2" ) ) { pType->m_iDrawCond = CONTENT_SPECIAL2; } else if ( !stricmp( szToken, "special3" ) ) { pType->m_iDrawCond = CONTENT_SPECIAL3; } } else if ( !stricmp( szToken, "collision" ) ) { szFile = gEngfuncs.COM_ParseFile(szFile,szToken); if ( !stricmp( szToken, "none" ) ) { pType->m_iCollision = COLLISION_NONE; } else if ( !stricmp( szToken, "die" ) ) { pType->m_iCollision = COLLISION_DIE; } else if ( !stricmp( szToken, "bounce" ) ) { pType->m_iCollision = COLLISION_BOUNCE; } } // get the next token szFile = gEngfuncs.COM_ParseFile(szFile, szToken); } if (!pType->m_bIsDefined) { // if this is a newly-defined type, we need to add it to the list pType->m_pNext = m_pFirstType; m_pFirstType = pType; pType->m_bIsDefined = true; } return pType; }
void CHud::RenderGame( void ) { ////Draw the bat//// gEngfuncs.pTriAPI->SpriteTexture( (struct model_s *)gEngfuncs.GetSpritePointer(SPR_Load("sprites/dot.spr")) , 0); gEngfuncs.pTriAPI->CullFace( TRI_NONE ); gEngfuncs.pTriAPI->Begin(TRI_QUADS); gEngfuncs.pTriAPI->RenderMode(kRenderNormal); gEngfuncs.pTriAPI->Color4f(1,1,1,1); gEngfuncs.pTriAPI->TexCoord2f(0.0f, 1.0f); gEngfuncs.pTriAPI->Vertex3f(bat_x, bat_y, 0); //top left gEngfuncs.pTriAPI->TexCoord2f(0.0f, 0.0f); gEngfuncs.pTriAPI->Vertex3f(bat_x, bat_y - batsize_y, 0); //bottom left gEngfuncs.pTriAPI->TexCoord2f(1.0f, 0.0f); gEngfuncs.pTriAPI->Vertex3f(bat_x + batsize_x , bat_y - batsize_y, 0); //bottom right gEngfuncs.pTriAPI->TexCoord2f(1.0f, 1.0f); gEngfuncs.pTriAPI->Vertex3f(bat_x + batsize_x, bat_y, 0); //top right gEngfuncs.pTriAPI->End(); ////Draw the blocks//// gEngfuncs.pTriAPI->SpriteTexture( (struct model_s *)gEngfuncs.GetSpritePointer(SPR_Load("sprites/vp_parallel.spr")) , 0); for(int y=0;y<10;y++){ for(int x=0;x<10;x++){ gEngfuncs.pTriAPI->CullFace( TRI_NONE ); gEngfuncs.pTriAPI->Begin(TRI_QUADS); gEngfuncs.pTriAPI->RenderMode(kRenderNormal); switch(Stage[0][y][x]) { case 1: gEngfuncs.pTriAPI->Color4f(1,0,0,1);break; case 2: gEngfuncs.pTriAPI->Color4f(1,1,0,1);break; case 3: gEngfuncs.pTriAPI->Color4f(0,1,0,1);break; case 4: gEngfuncs.pTriAPI->Color4f(0,1,1,1);break; case 5: gEngfuncs.pTriAPI->Color4f(0,0,1,1);break; case 6: gEngfuncs.pTriAPI->Color4f(1,0,1,1);break; case 7: gEngfuncs.pTriAPI->Color4f(0.5f,0,0,1);break; case 8: gEngfuncs.pTriAPI->Color4f(0,0.5f,0,1);break; case 9: gEngfuncs.pTriAPI->Color4f(0,0,0.5f,1);break; } if(Stage[0][y][x]!=0) {//only render if its not been hit gEngfuncs.pTriAPI->TexCoord2f(0.0f, 1.0f); gEngfuncs.pTriAPI->Vertex3f(blocksize_x*(x+1), blocksize_y*(y+2), 0); //top left gEngfuncs.pTriAPI->TexCoord2f(0.0f, 0.0f); gEngfuncs.pTriAPI->Vertex3f(blocksize_x*(x+1), (blocksize_y*(y+2)) - blocksize_y, 0); //bottom left gEngfuncs.pTriAPI->TexCoord2f(1.0f, 0.0f); gEngfuncs.pTriAPI->Vertex3f((blocksize_x*(x+1)) + blocksize_x , (blocksize_y*(y+2)) - blocksize_y, 0); //bottom right gEngfuncs.pTriAPI->TexCoord2f(1.0f, 1.0f); gEngfuncs.pTriAPI->Vertex3f((blocksize_x*(x+1)) + blocksize_x, blocksize_y*(y+2), 0); //top right } gEngfuncs.pTriAPI->End(); gEngfuncs.pTriAPI->RenderMode(kRenderNormal); } } ////Draw the ball//// gEngfuncs.pTriAPI->SpriteTexture( (struct model_s *)gEngfuncs.GetSpritePointer(SPR_Load("sprites/dot.spr")) , 0); //use hotglow, or any other sprite for the texture gEngfuncs.pTriAPI->CullFace( TRI_NONE ); gEngfuncs.pTriAPI->Begin(TRI_QUADS); gEngfuncs.pTriAPI->RenderMode(kRenderNormal); gEngfuncs.pTriAPI->Color4f(1,1,1,1); gEngfuncs.pTriAPI->TexCoord2f(0.0f, 1.0f); gEngfuncs.pTriAPI->Vertex3f(ball_x, ball_y, 0); //top left gEngfuncs.pTriAPI->TexCoord2f(0.0f, 0.0f); gEngfuncs.pTriAPI->Vertex3f(ball_x, ball_y - ballsize, 0); //bottom left gEngfuncs.pTriAPI->TexCoord2f(1.0f, 0.0f); gEngfuncs.pTriAPI->Vertex3f(ball_x + ballsize , ball_y - ballsize, 0); //bottom right gEngfuncs.pTriAPI->TexCoord2f(1.0f, 1.0f); gEngfuncs.pTriAPI->Vertex3f(ball_x + ballsize, ball_y, 0); //top right gEngfuncs.pTriAPI->End(); }
void WeaponsResource::LoadWeaponSprites(WEAPON *pWeapon) { int i, iRes; if(ScreenWidth < 640) iRes = 320; else iRes = 640; char sz[128]; if(!pWeapon) return; memset(&pWeapon->rcActive, 0, sizeof(wrect_t)); memset(&pWeapon->rcInactive, 0, sizeof(wrect_t)); memset(&pWeapon->rcAmmo, 0, sizeof(wrect_t)); memset(&pWeapon->rcAmmo2, 0, sizeof(wrect_t)); pWeapon->hInactive = 0; pWeapon->hActive = 0; pWeapon->hAmmo = 0; pWeapon->hAmmo2 = 0; sprintf(sz, "sprites/%s.txt", pWeapon->szName); client_sprite_t *pList = SPR_GetList(sz, &i); if(!pList) return; client_sprite_t *p; p = GetSpriteList(pList, "crosshair", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hCrosshair = SPR_Load(sz); pWeapon->rcCrosshair = p->rc; } else pWeapon->hCrosshair = NULL; p = GetSpriteList(pList, "autoaim", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hAutoaim = SPR_Load(sz); pWeapon->rcAutoaim = p->rc; } else pWeapon->hAutoaim = 0; p = GetSpriteList(pList, "zoom", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hZoomedCrosshair = SPR_Load(sz); pWeapon->rcZoomedCrosshair = p->rc; } else { pWeapon->hZoomedCrosshair = pWeapon->hCrosshair; //default to non-zoomed crosshair pWeapon->rcZoomedCrosshair = pWeapon->rcCrosshair; } p = GetSpriteList(pList, "zoom_autoaim", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hZoomedAutoaim = SPR_Load(sz); pWeapon->rcZoomedAutoaim = p->rc; } else { pWeapon->hZoomedAutoaim = pWeapon->hZoomedCrosshair; //default to zoomed crosshair pWeapon->rcZoomedAutoaim = pWeapon->rcZoomedCrosshair; } p = GetSpriteList(pList, "weapon", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hInactive = SPR_Load(sz); pWeapon->rcInactive = p->rc; gHR.iHistoryGap = max(gHR.iHistoryGap, pWeapon->rcActive.bottom - pWeapon->rcActive.top); } else pWeapon->hInactive = 0; p = GetSpriteList(pList, "weapon_s", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hActive = SPR_Load(sz); pWeapon->rcActive = p->rc; } else pWeapon->hActive = 0; p = GetSpriteList(pList, "ammo", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hAmmo = SPR_Load(sz); pWeapon->rcAmmo = p->rc; gHR.iHistoryGap = max(gHR.iHistoryGap, pWeapon->rcActive.bottom - pWeapon->rcActive.top); } else pWeapon->hAmmo = 0; p = GetSpriteList(pList, "ammo2", iRes, i); if(p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hAmmo2 = SPR_Load(sz); pWeapon->rcAmmo2 = p->rc; gHR.iHistoryGap = max(gHR.iHistoryGap, pWeapon->rcActive.bottom - pWeapon->rcActive.top); } else pWeapon->hAmmo2 = 0; }
void WeaponsResource :: LoadWeaponSprites( WEAPON *pWeapon ) { int i, iRes; if (ScreenWidth < 640) iRes = 320; else iRes = 640; char sz[128]; if ( !pWeapon ) return; memset( &pWeapon->rcActive, 0, sizeof(wrect_t) ); memset( &pWeapon->rcInactive, 0, sizeof(wrect_t) ); memset( &pWeapon->rcAmmo, 0, sizeof(wrect_t) ); memset( &pWeapon->rcAmmo2, 0, sizeof(wrect_t) ); pWeapon->hInactive = 0; pWeapon->hActive = 0; pWeapon->hAmmo = 0; pWeapon->hAmmo2 = 0; sprintf(sz, "sprites/%s.txt", pWeapon->szName); client_sprite_t *pList = SPR_GetList(sz, &i); if (!pList) return; client_sprite_t *p; // Fograin92: Disable crosshairs from hud.txt /* p = GetSpriteList( pList, "crosshair", iRes, i ); if (p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hCrosshair = SPR_Load(sz); pWeapon->rcCrosshair = p->rc; } else */ pWeapon->hCrosshair = NULL; p = GetSpriteList(pList, "autoaim", iRes, i); if (p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hAutoaim = SPR_Load(sz); pWeapon->rcAutoaim = p->rc; } else pWeapon->hAutoaim = 0; p = GetSpriteList( pList, "zoom", iRes, i ); if (p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hZoomedCrosshair = SPR_Load(sz); pWeapon->rcZoomedCrosshair = p->rc; } else { pWeapon->hZoomedCrosshair = pWeapon->hCrosshair; //default to non-zoomed crosshair pWeapon->rcZoomedCrosshair = pWeapon->rcCrosshair; } p = GetSpriteList(pList, "zoom_autoaim", iRes, i); if (p) { sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hZoomedAutoaim = SPR_Load(sz); pWeapon->rcZoomedAutoaim = p->rc; } else { pWeapon->hZoomedAutoaim = pWeapon->hZoomedCrosshair; //default to zoomed crosshair pWeapon->rcZoomedAutoaim = pWeapon->rcZoomedCrosshair; } p = GetSpriteList(pList, "weapon", iRes, i); if (p) { //sprintf(sz, "sprites/%s.spr", p->szSprite); // Fograin92: Check if we should load OF version of weapon sprites if (CVAR_GET_FLOAT("sm_hud") == 2.0 ) sprintf(sz, "sprites/%s_of.spr", p->szSprite); else sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hInactive = SPR_Load(sz); pWeapon->rcInactive = p->rc; gHR.iHistoryGap = max( gHR.iHistoryGap, pWeapon->rcActive.bottom - pWeapon->rcActive.top ); } else pWeapon->hInactive = 0; p = GetSpriteList(pList, "weapon_s", iRes, i); if (p) { //sprintf(sz, "sprites/%s.spr", p->szSprite); // Fograin92: Check if we should load OF version of weapon selection sprites if (CVAR_GET_FLOAT("sm_hud") == 2.0 ) sprintf(sz, "sprites/%s_of.spr", p->szSprite); else sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hActive = SPR_Load(sz); pWeapon->rcActive = p->rc; } else pWeapon->hActive = 0; p = GetSpriteList(pList, "ammo", iRes, i); if (p) { //sprintf(sz, "sprites/%s.spr", p->szSprite); // Fograin92: Check if we should load OF version of ammo sprites if (CVAR_GET_FLOAT("sm_hud") == 2.0 ) sprintf(sz, "sprites/%s_of.spr", p->szSprite); else sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hAmmo = SPR_Load(sz); pWeapon->rcAmmo = p->rc; gHR.iHistoryGap = max( gHR.iHistoryGap, pWeapon->rcActive.bottom - pWeapon->rcActive.top ); } else pWeapon->hAmmo = 0; p = GetSpriteList(pList, "ammo2", iRes, i); if (p) { //sprintf(sz, "sprites/%s.spr", p->szSprite); // Fograin92: Check if we should load OF version of ammo sprites if (CVAR_GET_FLOAT("sm_hud") == 2.0 ) sprintf(sz, "sprites/%s_of.spr", p->szSprite); else sprintf(sz, "sprites/%s.spr", p->szSprite); pWeapon->hAmmo2 = SPR_Load(sz); pWeapon->rcAmmo2 = p->rc; gHR.iHistoryGap = max( gHR.iHistoryGap, pWeapon->rcActive.bottom - pWeapon->rcActive.top ); } else pWeapon->hAmmo2 = 0; }
void CHud :: VidInit( void ) { m_scrinfo.iSize = sizeof(m_scrinfo); GetScreenInfo(&m_scrinfo); // ---------- // Load Sprites // --------- // m_hsprFont = LoadSprite("sprites/%d_font.spr"); m_hsprLogo = 0; m_hsprCursor = 0; if (ScreenWidth < 640) m_iRes = 320; else m_iRes = 640; // Only load this once if ( !m_pSpriteList ) { // we need to load the hud.txt, and all sprites within m_pSpriteList = SPR_GetList("sprites/hud.txt", &m_iSpriteCountAllRes); if (m_pSpriteList) { // count the number of sprites of the appropriate res m_iSpriteCount = 0; client_sprite_t *p = m_pSpriteList; for ( int j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) m_iSpriteCount++; p++; } // allocated memory for sprite handle arrays m_rghSprites = new HSPRITE[m_iSpriteCount]; m_rgrcRects = new wrect_t[m_iSpriteCount]; m_rgszSpriteNames = new char[m_iSpriteCount * MAX_SPRITE_NAME_LENGTH]; p = m_pSpriteList; int index = 0; for ( j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf(sz, "sprites/%s.spr", p->szSprite); m_rghSprites[index] = SPR_Load(sz); m_rgrcRects[index] = p->rc; strncpy( &m_rgszSpriteNames[index * MAX_SPRITE_NAME_LENGTH], p->szName, MAX_SPRITE_NAME_LENGTH ); index++; } p++; } } } else { // we have already have loaded the sprite reference from hud.txt, but // we need to make sure all the sprites have been loaded (we've gone through a transition, or loaded a save game) client_sprite_t *p = m_pSpriteList; int index = 0; for ( int j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf( sz, "sprites/%s.spr", p->szSprite ); m_rghSprites[index] = SPR_Load(sz); index++; } p++; } } // assumption: number_1, number_2, etc, are all listed and loaded sequentially m_HUD_number_0 = GetSpriteIndex( "number_0" ); // ORiginal Halflife Number Index Keep For Compatibility m_iFontHeight = m_rgrcRects[m_HUD_number_0].bottom - m_rgrcRects[m_HUD_number_0].top; //Ben m_Health.VidInit(); m_PredefinedMessage.VidInit(); m_Points.VidInit(); m_Clock.VidInit();//Baer m_ColourMessage.VidInit(); m_Crosshair.VidInit();//BP // m_CommanderMenu.VidInit();//BP // m_ArmLegShot.VidInit();//Myristate m_Ammo.VidInit(); m_Spectator.VidInit(); m_Geiger.VidInit(); m_Train.VidInit(); m_Message.VidInit(); m_StatusBar.VidInit(); m_DeathNotice.VidInit(); m_SayText.VidInit(); m_Menu.VidInit(); m_AmmoSecondary.VidInit(); m_TextMessage.VidInit(); m_StatusIcons.VidInit(); GetClientVoiceMgr()->VidInit(); if(pParticleManager) delete pParticleManager; pParticleManager = new CParticleSystemManager; char szVersion[16]; _snprintf(szVersion, sizeof(szVersion) - 1, "%s\0", const_cast<char*>(sBgVersion)); gEngfuncs.Con_Printf("The Battle Grounds %s, Copyright (C) 2001 - 2004, The Battle Grounds Team and Contributors\n", szVersion); gEngfuncs.Con_Printf("The Battle Grounds %s comes with ABSOLUTELY NO WARRANTY\n", szVersion); gEngfuncs.Con_Printf("This is free software, and you are welcome to redistribute it\n"); gEngfuncs.Con_Printf("This software is licensed under the GNU LGPL and comes with a copy of its source\n"); }
void CHud :: VidInit( void ) { m_scrinfo.iSize = sizeof( m_scrinfo ); GetScreenInfo( &m_scrinfo ); // ---------- // Load Sprites // --------- m_hHudError = 0; if( ScreenWidth < 640 ) m_iRes = 320; else m_iRes = 640; // Only load this once if( !m_pSpriteList ) { // we need to load the hud.txt, and all sprites within m_pSpriteList = SPR_GetList( "sprites/hud.txt", &m_iSpriteCountAllRes ); if( m_pSpriteList ) { // count the number of sprites of the appropriate res client_sprite_t *p = m_pSpriteList; m_iSpriteCount = 0; for( int j = 0; j < m_iSpriteCountAllRes; j++ ) { if( p->iRes == m_iRes ) m_iSpriteCount++; p++; } // allocated memory for sprite handle arrays m_rghSprites = new HSPRITE[m_iSpriteCount]; m_rgrcRects = new wrect_t[m_iSpriteCount]; m_rgszSpriteNames = new char[m_iSpriteCount * MAX_SPRITE_NAME_LENGTH]; p = m_pSpriteList; int index = 0; for( j = 0; j < m_iSpriteCountAllRes; j++ ) { if( p->iRes == m_iRes ) { char sz[256]; Q_snprintf( sz, sizeof( sz ), "sprites/%s.spr", p->szSprite ); m_rghSprites[index] = SPR_Load( sz ); m_rgrcRects[index] = p->rc; Q_strncpy( &m_rgszSpriteNames[index * MAX_SPRITE_NAME_LENGTH], p->szName, MAX_SPRITE_NAME_LENGTH ); index++; } p++; } } else { ALERT( at_warning, "hud.txt couldn't load\n"); m_pCvarDraw->value = 0; return; } } else { // we have already have loaded the sprite reference from hud.txt, but // we need to make sure all the sprites have been loaded (we've gone through a transition, or loaded a save game) client_sprite_t *p = m_pSpriteList; for( int j = 0, index = 0; j < m_iSpriteCountAllRes; j++ ) { if( p->iRes == m_iRes ) { char sz[256]; Q_snprintf( sz, sizeof( sz ), "sprites/%s.spr", p->szSprite ); m_rghSprites[index] = SPR_Load( sz ); index++; } p++; } } // assumption: number_1, number_2, etc, are all listed and loaded sequentially m_HUD_number_0 = GetSpriteIndex( "number_0" ); m_iFontHeight = m_rgrcRects[m_HUD_number_0].bottom - m_rgrcRects[m_HUD_number_0].top; // loading error sprite m_HUD_error = GetSpriteIndex( "error" ); m_hHudError = GetSprite( m_HUD_error ); m_Ammo.VidInit(); m_Health.VidInit(); m_Geiger.VidInit(); m_Train.VidInit(); m_Battery.VidInit(); m_Flash.VidInit(); m_MOTD.VidInit(); m_Message.VidInit(); m_Scoreboard.VidInit(); m_StatusBar.VidInit(); m_DeathNotice.VidInit(); m_SayText.VidInit(); m_Menu.VidInit(); m_AmmoSecondary.VidInit(); m_TextMessage.VidInit(); m_StatusIcons.VidInit(); }
void CHud :: VidInit( void ) { #ifdef ENGINE_DEBUG CONPRINT("## CHud::VidInit (hi from me)\n"); #endif m_scrinfo.iSize = sizeof(m_scrinfo); GetScreenInfo(&m_scrinfo); // ---------- // Load Sprites // --------- // m_hsprFont = LoadSprite("sprites/%d_font.spr"); m_hsprLogo = 0; m_hsprCursor = 0; numMirrors = 0; ResetRain(); //LRC - clear all shiny surfaces if (m_pShinySurface) { delete m_pShinySurface; m_pShinySurface = NULL; } if (ScreenWidth < 640) m_iRes = 320; else m_iRes = 640; // Only load this once if ( !m_pSpriteList ) { // we need to load the hud.txt, and all sprites within m_pSpriteList = SPR_GetList("sprites/hud.txt", &m_iSpriteCountAllRes); if (m_pSpriteList) { // count the number of sprites of the appropriate res m_iSpriteCount = 0; client_sprite_t *p = m_pSpriteList; int j; for ( j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) m_iSpriteCount++; p++; } // allocated memory for sprite handle arrays m_rghSprites = new HL_HSPRITE[m_iSpriteCount]; m_rgrcRects = new wrect_t[m_iSpriteCount]; m_rgszSpriteNames = new char[m_iSpriteCount * MAX_SPRITE_NAME_LENGTH]; p = m_pSpriteList; int index = 0; for ( j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf(sz, "sprites/%s.spr", p->szSprite); m_rghSprites[index] = SPR_Load(sz); m_rgrcRects[index] = p->rc; strncpy( &m_rgszSpriteNames[index * MAX_SPRITE_NAME_LENGTH], p->szName, MAX_SPRITE_NAME_LENGTH ); index++; } p++; } } } else { // we have already have loaded the sprite reference from hud.txt, but // we need to make sure all the sprites have been loaded (we've gone through a transition, or loaded a save game) client_sprite_t *p = m_pSpriteList; int index = 0; for ( int j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf( sz, "sprites/%s.spr", p->szSprite ); m_rghSprites[index] = SPR_Load(sz); index++; } p++; } } // assumption: number_1, number_2, etc, are all listed and loaded sequentially m_HUD_number_0 = GetSpriteIndex( "number_0" ); m_iFontHeight = m_rgrcRects[m_HUD_number_0].bottom - m_rgrcRects[m_HUD_number_0].top; m_Ammo.VidInit(); m_Health.VidInit(); m_Spectator.VidInit(); m_Geiger.VidInit(); m_Train.VidInit(); m_Battery.VidInit(); m_Flash.VidInit(); m_Message.VidInit(); m_StatusBar.VidInit(); m_DeathNotice.VidInit(); m_SayText.VidInit(); m_Menu.VidInit(); m_AmmoSecondary.VidInit(); m_TextMessage.VidInit(); m_StatusIcons.VidInit(); GetClientVoiceMgr()->VidInit(); m_Particle.VidInit(); // (LRC) -- 30/08/02 November235: Particles to Order m_Lensflare.VidInit(); }
void CHud :: VidInit( void ) { m_scrinfo.iSize = sizeof(m_scrinfo); GetScreenInfo(&m_scrinfo); // ---------- // Load Sprites // --------- // m_hsprFont = LoadSprite("sprites/%d_font.spr"); m_hsprLogo = 0; m_hsprCursor = 0; ResetRain(); //LRC - clear all shiny surfaces if (m_pShinySurface) { delete m_pShinySurface; m_pShinySurface = NULL; } if (ScreenWidth < 640) m_iRes = 320; else m_iRes = 640; // Only load this once if ( !m_pSpriteList ) { // we need to load the hud.txt, and all sprites within m_pSpriteList = SPR_GetList("scripts/hud.txt", &m_iSpriteCountAllRes); // m_pSpriteList = SPR_GetList("sprites/hud.txt", &m_iSpriteCountAllRes); if (m_pSpriteList) { // count the number of sprites of the appropriate res m_iSpriteCount = 0; client_sprite_t *p = m_pSpriteList; for ( int j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) m_iSpriteCount++; p++; } // allocated memory for sprite handle arrays m_rghSprites = new HSPRITE[m_iSpriteCount]; m_rgrcRects = new wrect_t[m_iSpriteCount]; m_rgszSpriteNames = new char[m_iSpriteCount * MAX_SPRITE_NAME_LENGTH]; p = m_pSpriteList; int index = 0; for ( j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf(sz, "sprites/%s.spr", p->szSprite); m_rghSprites[index] = SPR_Load(sz); m_rgrcRects[index] = p->rc; strncpy( &m_rgszSpriteNames[index * MAX_SPRITE_NAME_LENGTH], p->szName, MAX_SPRITE_NAME_LENGTH ); index++; } p++; } } } else { // we have already have loaded the sprite reference from hud.txt, but // we need to make sure all the sprites have been loaded (we've gone through a transition, or loaded a save game) client_sprite_t *p = m_pSpriteList; int index = 0; for ( int j = 0; j < m_iSpriteCountAllRes; j++ ) { if ( p->iRes == m_iRes ) { char sz[256]; sprintf( sz, "sprites/%s.spr", p->szSprite ); m_rghSprites[index] = SPR_Load(sz); index++; } p++; } } // assumption: number_1, number_2, etc, are all listed and loaded sequentially m_HUD_number_0 = GetSpriteIndex( "number_0" ); m_iFontHeight = m_rgrcRects[m_HUD_number_0].bottom - m_rgrcRects[m_HUD_number_0].top; m_Ammo.VidInit(); m_Health.VidInit(); m_Spectator.VidInit(); m_Geiger.VidInit(); m_Train.VidInit(); m_Battery.VidInit(); m_Flash.VidInit(); m_Message.VidInit(); m_StatusBar.VidInit(); m_DeathNotice.VidInit(); m_SayText.VidInit(); m_Menu.VidInit(); m_AmmoSecondary.VidInit(); m_TextMessage.VidInit(); m_StatusIcons.VidInit(); GetClientVoiceMgr()->VidInit(); // advanced NVG m_NVG.VidInit(); // advanced NVG m_Cine.VidInit(); m_Ricardo.VidInit(); m_LuzBar.VidInit(); m_FlashBar.VidInit(); m_HudRadar.VidInit(); m_Money.VidInit(); m_Tbutton.VidInit(); if(pParticleManager) { delete pParticleManager; } //sys add pParticleManager = new CParticleSystemManager; pParticleManager->PrecacheTextures(); if ( CVAR_GET_FLOAT( "cl_playmusic" ) == 1 ) gMP3.PlayMP3( "", -1 ); // gEngfuncs.Con_Printf("Arrange Mode %s, Copyright (C) 2004 - 2007, Arrange Mode Team and Contributors\n"); // gEngfuncs.Con_Printf("TArrange Mode %s comes with ABSOLUTELY NO WARRANTY\n"); // gEngfuncs.Con_Printf("This is free software, and you are welcome to redistribute it\n"); // gEngfuncs.Con_Printf("This software is licensed under the GNU LGPL and comes with a copy of its source\n"); }