|
|
|
|
//========= Copyright <EFBFBD> 2011, Half-Screwed Team, Released under the "Do whatever you want" license. ============//
|
|
|
|
|
// //
|
|
|
|
|
// Purpose: //
|
|
|
|
|
// //
|
|
|
|
|
// $NoKeywords: $ //
|
|
|
|
|
//====================================================================================================//
|
|
|
|
|
|
|
|
|
|
//THIS IS CURRENTLY BROKEN IN THE DLL SIDE. IT CAUSED LOTS OF LAG.
|
|
|
|
|
|
|
|
|
|
#include "hud.h"
|
|
|
|
|
#include "cl_util.h"
|
|
|
|
|
#include "parsemsg.h"
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
//#include "mp3.h"
|
|
|
|
|
|
|
|
|
|
int g_iRoundtime;
|
|
|
|
|
int smbSoundCounter = 0; //This will count up, where when it hits 5 it'll play a sound.
|
|
|
|
|
|
|
|
|
|
DECLARE_MESSAGE(m_Timer, Timer)
|
|
|
|
|
int CHudTimer::Init(void)
|
|
|
|
|
{
|
|
|
|
|
HOOK_MESSAGE( Timer );
|
|
|
|
|
gHUD.AddHudElem(this);
|
|
|
|
|
return 1;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
int CHudTimer::VidInit(void)
|
|
|
|
|
{
|
|
|
|
|
gHUD.m_iRoundtime = -1;
|
|
|
|
|
g_hud_timerbg = gHUD.GetSpriteIndex( "nestimerbg" );
|
|
|
|
|
g_hud_timercolon = gHUD.GetSpriteIndex( "nestime" );
|
|
|
|
|
return 1;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
int CHudTimer::MsgFunc_Timer( const char *pszName, int iSize, void *pbuf )
|
|
|
|
|
{
|
|
|
|
|
BEGIN_READ( pbuf, iSize );
|
|
|
|
|
int x = READ_LONG();
|
|
|
|
|
g_iRoundtime = x;
|
|
|
|
|
gHUD.m_iRoundtime = x;
|
|
|
|
|
|
|
|
|
|
m_iFlags |= HUD_ACTIVE;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int CHudTimer::Draw( float flTime )
|
|
|
|
|
{
|
|
|
|
|
if ( gHUD.m_iHideHUDDisplay & HIDEHUD_HEALTH )
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
|
|
if (!(gHUD.m_iWeaponBits & (1 <<(WEAPON_SUIT)) ))
|
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
|
|
if(g_iRoundtime > 0) //no negative numbers allowed
|
|
|
|
|
{
|
|
|
|
|
if (g_iRoundtime == 120)
|
|
|
|
|
{
|
|
|
|
|
smbSoundCounter += 1; //Start the countup to the super mario sound effect
|
|
|
|
|
}
|
|
|
|
|
if (smbSoundCounter == 5) //Note: the counter will still continue until 120 seconds turns into 119.
|
|
|
|
|
{
|
|
|
|
|
gEngfuncs.pfnPrimeMusicStream( "media/hurryup.mp3", 0 );
|
|
|
|
|
//gMP3.PlayMP3NL( songchoice );
|
|
|
|
|
}
|
|
|
|
|
//Draw BG
|
|
|
|
|
SPR_Set(gHUD.GetSprite(g_hud_timerbg), 255, 255, 255 );
|
|
|
|
|
SPR_Draw(0, (ScreenWidth/2-69), 0, &gHUD.GetSpriteRect(g_hud_timerbg));
|
|
|
|
|
|
|
|
|
|
gHUD.DrawHudNumberNES((ScreenWidth/2)-44, 20, DHN_2DIGITS | DHN_PREZERO, g_iRoundtime/60, 255, 255, 255);
|
|
|
|
|
//Draw the numbers
|
|
|
|
|
SPR_Set(gHUD.GetSprite(g_hud_timercolon), 255, 255, 255 );
|
|
|
|
|
SPR_Draw(0, (ScreenWidth/2)-4, 20, &gHUD.GetSpriteRect(g_hud_timercolon));
|
|
|
|
|
//Draw a String in this case ':'
|
|
|
|
|
gHUD.DrawHudNumberNES((ScreenWidth/2)+6, 20, DHN_2DIGITS | DHN_PREZERO, g_iRoundtime%60, 255, 255, 255);
|
|
|
|
|
}
|
|
|
|
|
else //If the round is over write it, add something -- GOAHEAD
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (smbSoundCounter >= 0 && g_iRoundtime > 120) //If server manually changed the round time or new round, Reset the sound timer.
|
|
|
|
|
{
|
|
|
|
|
smbSoundCounter = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|